@kepler.gl/deckgl-layers 3.3.0-alpha.10 → 3.3.0-alpha.11
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/dist/cjs/globe/atmosphere-layer.js +1 -1
- package/dist/cjs/globe/globe-layers.js +1 -1
- package/dist/cjs/globe/globe-stars-layer.js +1 -1
- package/dist/cjs/globe/globe-stars-layer.spec.js +1 -1
- package/dist/cjs/globe/globe-view.js +1 -1
- package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +1 -1
- package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +1 -1
- package/dist/cjs/raster/webgl/texture/mask.js +5 -2
- package/dist/cjs/wms/wms-layer.js +1 -1
- package/dist/esm/globe/atmosphere-layer.js +1 -1
- package/dist/esm/globe/globe-layers.js +1 -1
- package/dist/esm/globe/globe-stars-layer.js +1 -1
- package/dist/esm/globe/globe-stars-layer.spec.js +1 -1
- package/dist/esm/globe/globe-view.js +1 -1
- package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +1 -1
- package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +1 -1
- package/dist/esm/raster/webgl/texture/mask.js +5 -2
- package/dist/esm/wms/wms-layer.js +1 -1
- package/package.json +4 -4
|
@@ -621,4 +621,4 @@ function WGS84ToPseudoMercator(coord) {
|
|
|
621
621
|
mercator[1] = (mercator[1] / 256 - 1) * HALF_EARTH_CIRCUMFERENCE;
|
|
622
622
|
return mercator;
|
|
623
623
|
}
|
|
624
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2ViTWVyY2F0b3IiLCJyZXF1aXJlIiwiX2NvcmUiLCJfbGF5ZXJzIiwiX3dtcyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsIkNPVkVSQUdFX1JFRkVUQ0hfWk9PTV9GQUNUT1IiLCJkZWZhdWx0UHJvcHMiLCJpZCIsImRhdGEiLCJzZXJ2aWNlVHlwZSIsInNycyIsImxheWVycyIsInR5cGUiLCJjb21wYXJlIiwidmFsdWUiLCJvbk1ldGFkYXRhTG9hZCIsIm9uTWV0YWRhdGFMb2FkRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJvbkltYWdlTG9hZFN0YXJ0Iiwib25JbWFnZUxvYWQiLCJvbkltYWdlTG9hZEVycm9yIiwicmVxdWVzdElkIiwiV01TTGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiZ2V0Iiwic3RhdGUiLCJsb2FkQ291bnRlciIsInNob3VsZFVwZGF0ZVN0YXRlIiwiaW5pdGlhbGl6ZVN0YXRlIiwiX25leHRSZXF1ZXN0SWQiLCJsYXN0UmVxdWVzdElkIiwiX2xhc3RSZXF1ZXN0Wm9vbSIsInVwZGF0ZVN0YXRlIiwiX3JlZiIsIl90aGlzIiwiY2hhbmdlRmxhZ3MiLCJwcm9wcyIsIm9sZFByb3BzIiwidmlld3BvcnQiLCJjb250ZXh0IiwiZGF0YUNoYW5nZWQiLCJpbWFnZVNvdXJjZSIsIl9jcmVhdGVJbWFnZVNvdXJjZSIsIl9sb2FkTWV0YWRhdGEiLCJkZWJvdW5jZSIsImxvYWRJbWFnZSIsImRlZXBFcXVhbCIsInZpZXdwb3J0Q2hhbmdlZCIsIl9nbCRnZXRDb250ZXh0QXR0cmlidSIsImdsIiwiaXNQcmVzZXJ2aW5nQnVmZmVyIiwiZ2V0Q29udGV4dEF0dHJpYnV0ZXMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJkZWJvdW5jZURlbGF5IiwidW5kZWZpbmVkIiwicmVuZGVyTGF5ZXJzIiwiX3RoaXMkc3RhdGUiLCJib3VuZHMiLCJpbWFnZSIsImxhc3RSZXF1ZXN0UGFyYW1ldGVycyIsIkJpdG1hcExheWVyIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsIl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0iLCJDT09SRElOQVRFX1NZU1RFTSIsIkxOR0xBVCIsIkNBUlRFU0lBTiIsInBpY2thYmxlIiwiX2dldEZlYXR1cmVJbmZvVGV4dCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwieCIsInkiLCJfdGhpcyRzdGF0ZSRpbWFnZVNvdXIiLCJfdGhpcyRzdGF0ZSRpbWFnZVNvdXIyIiwiZmVhdHVyZUluZm8iLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0RmVhdHVyZUluZm9UZXh0IiwicXVlcnlfbGF5ZXJzIiwiaW5mb19mb3JtYXQiLCJzZW50IiwiYWJydXB0Iiwic3RvcCIsIl94IiwiX3gyIiwiSW1hZ2VTb3VyY2UiLCJXTVNJbWFnZVNvdXJjZSIsImxvYWRPcHRpb25zIiwiRXJyb3IiLCJfbG9hZE1ldGFkYXRhMiIsIl9jYWxsZWUyIiwibWV0YWRhdGEiLCJfdGhpcyRnZXRDdXJyZW50TGF5ZXIiLCJfdGhpcyRnZXRDdXJyZW50TGF5ZXIyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0TWV0YWRhdGEiLCJnZXRDdXJyZW50TGF5ZXIiLCJ0MCIsImZpbmlzaCIsIl9sb2FkSW1hZ2UiLCJfY2FsbGVlMyIsIl9yZWFzb24iLCJfZ2wkZ2V0Q29udGV4dEF0dHJpYnUyIiwiX3RoaXMkcHJvcHMiLCJ0cmFuc3BhcmVudCIsIndpZHRoIiwiaGVpZ2h0IiwibWluTGF0IiwibWF4TGF0IiwicmVxdWVzdFBhcmFtcyIsIl9XR1M4NFRvUHNldWRvTWVyY2F0byIsIl9XR1M4NFRvUHNldWRvTWVyY2F0bzIiLCJtaW5YIiwibWluWSIsIl9XR1M4NFRvUHNldWRvTWVyY2F0bzMiLCJfV0dTODRUb1BzZXVkb01lcmNhdG80IiwibWF4WCIsIm1heFkiLCJpc0V4cG9ydGluZyIsIl90aGlzJHN0YXRlJGxhc3RSZXF1ZSIsImN1cnJlbnRab29tIiwibGFzdFpvb20iLCJpc1pvb21pbmdJbiIsImxhc3RCYm94IiwiY3VycmVudEJib3giLCJmdWxseUNvbnRhaW5lZCIsIl90aGlzJGdldEN1cnJlbnRMYXllcjMiLCJfdGhpcyRjb250ZXh0JG9uRXJyb3IiLCJfdGhpcyRjb250ZXh0IiwiX3RoaXMkZ2V0Q3VycmVudExheWVyNCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInJlc29sdXRpb24iLCJnZXRHbG9iZVZpc2libGVCb3VuZHMiLCJnZXRCb3VuZHMiLCJNYXRoIiwiYWJzIiwiYmJveCIsImJvdW5kaW5nQm94IiwiV0dTODRUb1BzZXVkb01lcmNhdG9yIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5GbGlnaHRSZXF1ZXN0UGFyYW1ldGVycyIsIl9hcmVSZXF1ZXN0UGFyYW1zRXF1YWwiLCJfaXNWaWV3Q292ZXJlZEJ5TGFzdFJlcXVlc3QiLCJ6b29tIiwiZmxvb3IiLCJnZXRSZXF1ZXN0SWQiLCJzZXROZWVkc1JlZHJhdyIsImdldEltYWdlIiwic2V0U3RhdGUiLCJvbkVycm9yIiwiX3gzIiwiX3g0IiwiZm4iLCJtcyIsImNsZWFyVGltZW91dCIsIl90aW1lb3V0SWQiLCJzZXRUaW1lb3V0IiwibiIsImNvbnRhaW5lZCIsInByZXZTcGFuWCIsIm5leHRTcGFuWCIsInByZXZTcGFuWSIsIm5leHRTcGFuWSIsInRvbGVyYW5jZSIsInByZXZCYm94IiwibmV4dEJib3giLCJpIiwiQ29tcG9zaXRlTGF5ZXIiLCJfbG9uZ2l0dWRlIiwiY2VudGVyTG5nIiwibG9uZ2l0dWRlIiwiU0FNUExFUyIsImxhdHMiLCJsbmdPZmZzZXRzIiwiaiIsInB4IiwicHkiLCJjb29yZCIsInVucHJvamVjdCIsImxuZyIsImxhdCIsIk51bWJlciIsImlzRmluaXRlIiwib2Zmc2V0IiwibWluIiwibWF4Iiwibm9ydGhQb2xlVmlzaWJsZSIsImlzR2xvYmVTdXJmYWNlUG9pbnRWaXNpYmxlIiwic291dGhQb2xlVmlzaWJsZSIsIm1pbkxuZyIsIm1heExuZyIsImxhdFBhZCIsImxuZ1BhZCIsInBvaW50IiwicHJvamVjdFBvc2l0aW9uIiwiY2FtZXJhIiwiY2FtZXJhUG9zaXRpb24iLCJyUG9pbnQiLCJoeXBvdCIsInJDYW0iLCJjb3NTdXJmYWNlIiwiY29zSG9yaXpvbiIsInNjcmVlbiIsInByb2plY3QiLCJIQUxGX0VBUlRIX0NJUkNVTUZFUkVOQ0UiLCJQSSIsIm1lcmNhdG9yIiwibG5nTGF0VG9Xb3JsZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93bXMvd21zLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7bG5nTGF0VG9Xb3JsZH0gZnJvbSAnQG1hdGguZ2wvd2ViLW1lcmNhdG9yJztcblxuaW1wb3J0IHtcbiAgTGF5ZXIsXG4gIENvbXBvc2l0ZUxheWVyLFxuICBDb21wb3NpdGVMYXllclByb3BzLFxuICBVcGRhdGVQYXJhbWV0ZXJzLFxuICBEZWZhdWx0UHJvcHMsXG4gIFZpZXdwb3J0LFxuICBDT09SRElOQVRFX1NZU1RFTSxcbiAgX2RlZXBFcXVhbCBhcyBkZWVwRXF1YWxcbn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge0JpdG1hcExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtJbWFnZVNvdXJjZSwgV01TSW1hZ2VTb3VyY2V9IGZyb20gJ0Bsb2FkZXJzLmdsL3dtcyc7XG5cbmltcG9ydCB0eXBlIHtJbWFnZVNvdXJjZU1ldGFkYXRhfSBmcm9tICdAbG9hZGVycy5nbC9sb2FkZXItdXRpbHMnO1xuaW1wb3J0IHR5cGUge0ltYWdlVHlwZX0gZnJvbSAnQGxvYWRlcnMuZ2wvd21zJztcblxuLy8gVE9ETzogVGhpcyBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgV01TTGF5ZXIgZnJvbSBkZWNrLmdsLiBSZW1vdmUgdGhpcyBvbmNlIHdlIHVwZ3JhZGUgZGVjay5nbCBhbmQgbG9hZGVycy5nbC5cblxuLyoqIEFsbCBwcm9wcyBzdXBwb3J0ZWQgYnkgdGhlIFRpbGVMYXllciAqL1xuZXhwb3J0IHR5cGUgV01TTGF5ZXJQcm9wcyA9IENvbXBvc2l0ZUxheWVyUHJvcHMgJiBfV01TTGF5ZXJQcm9wcztcblxuLyoqIFByb3BzIGFkZGVkIGJ5IHRoZSBUaWxlTGF5ZXIgKi9cbnR5cGUgX1dNU0xheWVyUHJvcHMgPSB7XG4gIGRhdGE6IHN0cmluZyB8IEltYWdlU291cmNlO1xuICBzZXJ2aWNlVHlwZT86IHN0cmluZyB8ICdhdXRvJztcbiAgbGF5ZXJzPzogc3RyaW5nW107XG4gIHNycz86ICdFUFNHOjQzMjYnIHwgJ0VQU0c6Mzg1NycgfCAnYXV0byc7XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgb25NZXRhZGF0YUxvYWQ/OiAobWV0YWRhdGE6IEltYWdlU291cmNlTWV0YWRhdGEpID0+IHZvaWQ7XG4gIG9uTWV0YWRhdGFMb2FkRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvbkltYWdlTG9hZFN0YXJ0PzogKHJlcXVlc3RJZDogdW5rbm93bikgPT4gdm9pZDtcbiAgb25JbWFnZUxvYWQ/OiAocmVxdWVzdElkOiB1bmtub3duKSA9PiB2b2lkO1xuICBvbkltYWdlTG9hZEVycm9yPzogKHJlcXVlc3RJZDogdW5rbm93biwgZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBIb3cgbXVjaCB0aGUgdXNlciBtYXkgem9vbSBpbiAoc2hyaW5raW5nIHRoZSB2aXNpYmxlIHNwYW4pIGJlZm9yZSBhIHZpZXcgdGhhdFxuICogaXMgc3RpbGwgY29udGFpbmVkIGluIHRoZSBsYXN0IHJlcXVlc3RlZCBleHRlbnQgdHJpZ2dlcnMgYSBmcmVzaCwgaGlnaGVyXG4gKiByZXNvbHV0aW9uIHJlcXVlc3QuIGAyYCBtZWFucyB0aGUgY2FjaGVkIGltYWdlIG1heSBiZSBzdHJldGNoZWQgdXAgdG8gfjJ4XG4gKiBiZWZvcmUgcmVmZXRjaGluZzsgaGlnaGVyIHZhbHVlcyBtZWFuIGZld2VyIHJlcXVlc3RzIGJ1dCBibHVycmllciB6b29tLWlucy5cbiAqL1xuY29uc3QgQ09WRVJBR0VfUkVGRVRDSF9aT09NX0ZBQ1RPUiA9IDI7XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogRGVmYXVsdFByb3BzPFdNU0xheWVyUHJvcHM+ID0ge1xuICBpZDogJ2ltYWdlcnktbGF5ZXInLFxuICBkYXRhOiAnJyxcbiAgc2VydmljZVR5cGU6ICdhdXRvJyxcbiAgc3JzOiAnYXV0bycsXG4gIGxheWVyczoge3R5cGU6ICdhcnJheScsIGNvbXBhcmU6IHRydWUsIHZhbHVlOiBbXX0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25NZXRhZGF0YUxvYWQ6IHt0eXBlOiAnZnVuY3Rpb24nLCB2YWx1ZTogKCkgPT4ge319LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgb25NZXRhZGF0YUxvYWRFcnJvcjoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiBjb25zb2xlLmVycm9yfSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkltYWdlTG9hZFN0YXJ0OiB7dHlwZTogJ2Z1bmN0aW9uJywgdmFsdWU6ICgpID0+IHt9fSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkltYWdlTG9hZDoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiAoKSA9PiB7fX0sXG4gIG9uSW1hZ2VMb2FkRXJyb3I6IHtcbiAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICAgIGNvbXBhcmU6IGZhbHNlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHZhbHVlOiAocmVxdWVzdElkOiB1bmtub3duLCBlcnJvcjogRXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoZXJyb3IsIHJlcXVlc3RJZClcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV01TTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxSZXF1aXJlZDxfV01TTGF5ZXJQcm9wcz4+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdXTVNMYXllcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHM6IERlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBkZWNsYXJlIHN0YXRlOiB7XG4gICAgaW1hZ2VTb3VyY2U6IEltYWdlU291cmNlO1xuICAgIGltYWdlOiBJbWFnZVR5cGU7XG4gICAgYm91bmRzOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgICBsYXN0UmVxdWVzdFBhcmFtZXRlcnM6IHtcbiAgICAgIC8vIFRPRE86IHJlbW92ZSBiYm94IG9uY2UgZGVjay5nbCBpcyB1cGdyYWRlZCB0byBeOC4xMCB3aXRoIGxvYWRlcnMuZ2wgXjRcbiAgICAgIGJib3g6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICAgICAgYm91bmRpbmdCb3g6IFtbbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXJdXTtcbiAgICAgIGxheWVyczogc3RyaW5nW107XG4gICAgICBzcnM6ICdFUFNHOjQzMjYnIHwgJ0VQU0c6Mzg1Nyc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgfTtcbiAgICBpbkZsaWdodFJlcXVlc3RQYXJhbWV0ZXJzPzoge1xuICAgICAgYmJveDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgICBib3VuZGluZ0JveDogW1tudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl1dO1xuICAgICAgbGF5ZXJzOiBzdHJpbmdbXTtcbiAgICAgIHNyczogJ0VQU0c6NDMyNicgfCAnRVBTRzozODU3JztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9O1xuICAgIGxhc3RSZXF1ZXN0SWQ6IG51bWJlcjtcbiAgICBfbmV4dFJlcXVlc3RJZDogbnVtYmVyO1xuICAgIC8qKiBUT0RPOiBDaGFuZ2UgYW55ID0+IHNldFRpbWVvdXQgcmV0dXJuIHR5cGUuIERpZmZlcmVudCBiZXR3ZWVuIE5vZGUgYW5kIGJyb3dzZXIuLi4gKi9cbiAgICBfdGltZW91dElkOiBhbnk7XG4gICAgbG9hZENvdW50ZXI6IG51bWJlcjtcbiAgICBfbGFzdFJlcXVlc3Rab29tOiBudW1iZXI7XG4gIH07XG5cbiAgLyoqIFJldHVybnMgdHJ1ZSBpZiBhbGwgYXN5bmMgcmVzb3VyY2VzIGFyZSBsb2FkZWQgKi9cbiAgZ2V0IGlzTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIFRyYWNrIHRoZSBleHBsaWNpdCBsb2FkaW5nIGRvbmUgYnkgdGhpcyBsYXllclxuICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RhdGUpICYmIHRoaXMuc3RhdGUubG9hZENvdW50ZXIgPT09IDAgJiYgc3VwZXIuaXNMb2FkZWQ7XG4gIH1cblxuICAvKiogTGV0cyBkZWNrLmdsIGtub3cgdGhhdCB3ZSB3YW50IHZpZXdwb3J0IGNoYW5nZSBldmVudHMgKi9cbiAgb3ZlcnJpZGUgc2hvdWxkVXBkYXRlU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvdmVycmlkZSBpbml0aWFsaXplU3RhdGUoKTogdm9pZCB7XG4gICAgLy8gaW50ZW50aW9uYWxseSBlbXB0eSwgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiB1cGRhdGVTdGF0ZVxuICAgIHRoaXMuc3RhdGUuX25leHRSZXF1ZXN0SWQgPSAwO1xuICAgIHRoaXMuc3RhdGUubGFzdFJlcXVlc3RJZCA9IC0xO1xuICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXIgPSAwO1xuICAgIHRoaXMuc3RhdGUuX2xhc3RSZXF1ZXN0Wm9vbSA9IC0xO1xuICB9XG5cbiAgb3ZlcnJpZGUgdXBkYXRlU3RhdGUoe2NoYW5nZUZsYWdzLCBwcm9wcywgb2xkUHJvcHN9OiBVcGRhdGVQYXJhbWV0ZXJzPHRoaXM+KTogdm9pZCB7XG4gICAgY29uc3Qge3ZpZXdwb3J0fSA9IHRoaXMuY29udGV4dDtcblxuICAgIC8vIENoZWNrIGlmIGRhdGEgc291cmNlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkIHx8IHByb3BzLnNlcnZpY2VUeXBlICE9PSBvbGRQcm9wcy5zZXJ2aWNlVHlwZSkge1xuICAgICAgdGhpcy5zdGF0ZS5pbWFnZVNvdXJjZSA9IHRoaXMuX2NyZWF0ZUltYWdlU291cmNlKHByb3BzKTtcblxuICAgICAgdGhpcy5fbG9hZE1ldGFkYXRhKCk7XG4gICAgICB0aGlzLmRlYm91bmNlKCgpID0+IHRoaXMubG9hZEltYWdlKHZpZXdwb3J0LCAnaW1hZ2Ugc291cmNlIGNoYW5nZWQnKSwgMCk7XG4gICAgfSBlbHNlIGlmICghZGVlcEVxdWFsKHByb3BzLmxheWVycywgb2xkUHJvcHMubGF5ZXJzLCAxKSkge1xuICAgICAgdGhpcy5kZWJvdW5jZSgoKSA9PiB0aGlzLmxvYWRJbWFnZSh2aWV3cG9ydCwgJ2xheWVycyBjaGFuZ2VkJyksIDApO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlRmxhZ3Mudmlld3BvcnRDaGFuZ2VkKSB7XG4gICAgICAvLyBDaGVjayBpZiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgaXMgZW5hYmxlZCAoaW5kaWNhdGVzIHZpZGVvIHJlY29yZGluZyBvciBpbWFnZSBleHBvcnQpXG4gICAgICAvLyBVc2UgbWluaW1hbCBkZWJvdW5jZSAoMTBtcykgZHVyaW5nIGV4cG9ydCBmb3IgcmVzcG9uc2l2ZSBmcmFtZSBjYXB0dXJlXG4gICAgICAvLyBSZXF1ZXN0IGRlZHVwbGljYXRpb24gaW4gbG9hZEltYWdlIHByZXZlbnRzIHNwYW0gZnJvbSByZWR1bmRhbnQgdmlld3BvcnQgdXBkYXRlc1xuICAgICAgY29uc3QgZ2wgPSB0aGlzLmNvbnRleHQuZ2w7XG4gICAgICBjb25zdCBpc1ByZXNlcnZpbmdCdWZmZXIgPSBnbD8uZ2V0Q29udGV4dEF0dHJpYnV0ZXM/LigpPy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7XG5cbiAgICAgIGNvbnN0IGRlYm91bmNlRGVsYXkgPSBpc1ByZXNlcnZpbmdCdWZmZXIgPyAxMCA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZGVib3VuY2UoKCkgPT4gdGhpcy5sb2FkSW1hZ2Uodmlld3BvcnQsICd2aWV3cG9ydCBjaGFuZ2VkJyksIGRlYm91bmNlRGVsYXkpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHJlbmRlckxheWVycygpOiBMYXllcjxhbnk+IHtcbiAgICBjb25zdCB7Ym91bmRzLCBpbWFnZSwgbGFzdFJlcXVlc3RQYXJhbWV0ZXJzfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgaW1hZ2UgJiZcbiAgICAgIG5ldyBCaXRtYXBMYXllcih7XG4gICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7aWQ6ICdiaXRtYXAnfSksXG4gICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06XG4gICAgICAgICAgbGFzdFJlcXVlc3RQYXJhbWV0ZXJzLnNycyA9PT0gJ0VQU0c6NDMyNidcbiAgICAgICAgICAgID8gQ09PUkRJTkFURV9TWVNURU0uTE5HTEFUXG4gICAgICAgICAgICA6IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgYm91bmRzLFxuICAgICAgICBpbWFnZSxcbiAgICAgICAgcGlja2FibGU6IHRoaXMucHJvcHMucGlja2FibGVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZlYXR1cmVJbmZvVGV4dCh4OiBudW1iZXIsIHk6IG51bWJlcik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IHtsYXN0UmVxdWVzdFBhcmFtZXRlcnN9ID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAobGFzdFJlcXVlc3RQYXJhbWV0ZXJzKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFVuZG9jdW1lbnRlZCBtZXRob2RcbiAgICAgIGNvbnN0IGZlYXR1cmVJbmZvID0gYXdhaXQgdGhpcy5zdGF0ZS5pbWFnZVNvdXJjZS5nZXRGZWF0dXJlSW5mb1RleHQ/Lih7XG4gICAgICAgIC4uLmxhc3RSZXF1ZXN0UGFyYW1ldGVycyxcbiAgICAgICAgcXVlcnlfbGF5ZXJzOiBsYXN0UmVxdWVzdFBhcmFtZXRlcnMubGF5ZXJzLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBpbmZvX2Zvcm1hdDogJ2FwcGxpY2F0aW9uL3ZuZC5vZ2MuZ21sJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmVhdHVyZUluZm87XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIF9jcmVhdGVJbWFnZVNvdXJjZShwcm9wczogV01TTGF5ZXJQcm9wcyk6IEltYWdlU291cmNlIHtcbiAgICBpZiAocHJvcHMuZGF0YSBpbnN0YW5jZW9mIEltYWdlU291cmNlKSB7XG4gICAgICByZXR1cm4gcHJvcHMuZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHByb3BzLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbmV3IFdNU0ltYWdlU291cmNlKHByb3BzLmRhdGEsIHtcbiAgICAgICAgbG9hZE9wdGlvbnM6IHByb3BzLmxvYWRPcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaW1hZ2Ugc291cmNlIGluIHByb3BzLmRhdGEnKTtcbiAgfVxuXG4gIC8qKiBSdW4gYSBnZXRNZXRhZGF0YSBvbiB0aGUgaW1hZ2Ugc2VydmljZSAqL1xuICBhc3luYyBfbG9hZE1ldGFkYXRhKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHtpbWFnZVNvdXJjZX0gPSB0aGlzLnN0YXRlO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLmxvYWRDb3VudGVyKys7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IGltYWdlU291cmNlLmdldE1ldGFkYXRhKCk7XG5cbiAgICAgIC8vIElmIGEgcmVxdWVzdCB0YWtlcyBhIGxvbmcgdGltZSwgaXQgbWF5IG5vIGxvbmdlciBiZSBleHBlY3RlZFxuICAgICAgaWYgKHRoaXMuc3RhdGUuaW1hZ2VTb3VyY2UgPT09IGltYWdlU291cmNlKSB7XG4gICAgICAgIHRoaXMuZ2V0Q3VycmVudExheWVyKCk/LnByb3BzLm9uTWV0YWRhdGFMb2FkKG1ldGFkYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5nZXRDdXJyZW50TGF5ZXIoKT8ucHJvcHMub25NZXRhZGF0YUxvYWRFcnJvcihlcnJvciBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXItLTtcbiAgICB9XG4gIH1cblxuICAvKiogTG9hZCBhbiBpbWFnZSAqL1xuICBhc3luYyBsb2FkSW1hZ2Uodmlld3BvcnQ6IFZpZXdwb3J0LCBfcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7bGF5ZXJzLCBzZXJ2aWNlVHlwZSwgdHJhbnNwYXJlbnR9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIFRPRE8gLSBtb3ZlIHRvIEltYWdlU291cmNlP1xuICAgIGlmIChzZXJ2aWNlVHlwZSA9PT0gJ3dtcycgJiYgbGF5ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIGdsb2JlIG1vZGUgZGVjaydzIEdsb2JlVmlld3BvcnQuZ2V0Qm91bmRzKCkgb25seSB1bnByb2plY3RzIDQgZWRnZVxuICAgIC8vIG1pZHBvaW50cyBhbmQgdGFrZXMgdGhlaXIgbWluL21heC4gVGhhdCBtaXNzZXMgdGhlIHNjcmVlbiBjb3JuZXJzLCB0aGVcbiAgICAvLyBjdXJ2ZWQgbGltYiwgYW5kIChtb3N0IGltcG9ydGFudGx5KSB0aGUgY2FzZSB3aGVyZSBhIHBvbGUgaXMgaW4gdmlldyB3aGVuXG4gICAgLy8gbG9va2luZyBmcm9tIGEgaGlnaCBsYXRpdHVkZSDigJQgd2hlcmUgZXZlcnkgbWVyaWRpYW4gYW5kIHBhcnQgb2YgdGhlIGZhclxuICAgIC8vIGhlbWlzcGhlcmUgYmVjb21lIHZpc2libGUuIENvbXB1dGUgYSBmdWxsZXIgdmlzaWJsZSBib3VuZGluZyBib3ggaW5zdGVhZCBzb1xuICAgIC8vIHRoZSByZXF1ZXN0ZWQgV01TIGltYWdlIGNvdmVycyBldmVyeXRoaW5nIG9uIHNjcmVlbi5cbiAgICBjb25zdCBib3VuZHMgPSB2aWV3cG9ydC5yZXNvbHV0aW9uXG4gICAgICA/IGdldEdsb2JlVmlzaWJsZUJvdW5kcyh2aWV3cG9ydClcbiAgICAgIDogdmlld3BvcnQuZ2V0Qm91bmRzKCk7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdmlld3BvcnQ7XG4gICAgXG4gICAgLy8gRWRnZSBjYXNlOiB3aGVuIGJvdW5kcyBhcmUgcGVyZmVjdGx5IHN5bW1ldHJpYyBhcm91bmQgMMKwIChib3RoIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUpLFxuICAgIC8vIGl0IGNhbiBjYXVzZSByZW5kZXJpbmcgYXJ0aWZhY3RzIHdpdGggRVBTRzo0MzI2IG9uIHRoZSBnbG9iZS5cbiAgICAvLyBBZGQgYXN5bW1ldHJ5IHRvIGF2b2lkIHRoaXMgaXNzdWUuXG4gICAgaWYgKHZpZXdwb3J0LnJlc29sdXRpb24gJiYgYm91bmRzKSB7XG4gICAgICBjb25zdCBtaW5MYXQgPSBib3VuZHNbMV07XG4gICAgICBjb25zdCBtYXhMYXQgPSBib3VuZHNbM107XG4gICAgICAvLyBDaGVjayBpZiBsYXRpdHVkZSBib3VuZHMgYXJlIHN5bW1ldHJpYyBhcm91bmQgMMKwICh3aXRoaW4gMC4xwrAgdG9sZXJhbmNlKVxuICAgICAgaWYgKE1hdGguYWJzKG1pbkxhdCArIG1heExhdCkgPCAwLjEgJiYgTWF0aC5hYnMobWluTGF0KSA+IDEpIHtcbiAgICAgICAgYm91bmRzWzNdICs9IDAuMTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgbGV0IHtzcnN9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoc3JzID09PSAnYXV0bycpIHtcbiAgICAgIC8vIEJpdG1hcExheWVyIG9ubHkgc3VwcG9ydHMgTE5HTEFUIG9yIENBUlRFU0lBTiAoV2ViLU1lcmNhdG9yKVxuICAgICAgc3JzID0gdmlld3BvcnQucmVzb2x1dGlvbiA/ICdFUFNHOjQzMjYnIDogJ0VQU0c6Mzg1Nyc7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3RQYXJhbXMgPSB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIC8vIFRPRE86IHJlbW92ZSBiYm94IG9uY2UgZGVjay5nbCBpcyB1cGdyYWRlZCB0byBeOC4xMCB3aXRoIGxvYWRlcnMuZ2wgXjRcbiAgICAgIGJib3g6IGJvdW5kcyxcbiAgICAgIGJvdW5kaW5nQm94OiBbXG4gICAgICAgIFtib3VuZHNbMF0sIGJvdW5kc1sxXV0sXG4gICAgICAgIFtib3VuZHNbMl0sIGJvdW5kc1szXV1cbiAgICAgIF0gYXMgW1tudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl1dLFxuICAgICAgbGF5ZXJzLFxuICAgICAgc3JzLFxuICAgICAgdHJhbnNwYXJlbnRcbiAgICB9O1xuICAgIGlmIChzcnMgPT09ICdFUFNHOjM4NTcnKSB7XG4gICAgICBjb25zdCBbbWluWCwgbWluWV0gPSBXR1M4NFRvUHNldWRvTWVyY2F0b3IoW2JvdW5kc1swXSwgYm91bmRzWzFdXSk7XG4gICAgICBjb25zdCBbbWF4WCwgbWF4WV0gPSBXR1M4NFRvUHNldWRvTWVyY2F0b3IoW2JvdW5kc1syXSwgYm91bmRzWzNdXSk7XG4gICAgICByZXF1ZXN0UGFyYW1zLmJvdW5kaW5nQm94ID0gW1xuICAgICAgICBbbWluWCwgbWluWV0sXG4gICAgICAgIFttYXhYLCBtYXhZXVxuICAgICAgXTtcbiAgICAgIC8vIFRPRE86IHJlbW92ZSBiYm94IG9uY2UgZGVjay5nbCBpcyB1cGdyYWRlZCB0byBeOC4xMCB3aXRoIGxvYWRlcnMuZ2wgXjRcbiAgICAgIHJlcXVlc3RQYXJhbXMuYmJveCA9IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXTtcbiAgICB9XG5cbiAgICAvLyBTa2lwIHJlcXVlc3QgaWYgcGFyYW1ldGVycyBoYXZlbid0IG1lYW5pbmdmdWxseSBjaGFuZ2VkIGZyb20gYW4gaW4tZmxpZ2h0IHJlcXVlc3RcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0YXRlLmluRmxpZ2h0UmVxdWVzdFBhcmFtZXRlcnMgJiZcbiAgICAgIHRoaXMuX2FyZVJlcXVlc3RQYXJhbXNFcXVhbCh0aGlzLnN0YXRlLmluRmxpZ2h0UmVxdWVzdFBhcmFtZXRlcnMsIHJlcXVlc3RQYXJhbXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2tpcCByZXF1ZXN0IGlmIHRoZSBuZXcgdmlldyBpcyBhbHJlYWR5IGZ1bGx5IGNvdmVyZWQgYnkgdGhlIGxhc3QgQ09NUExFVEVEIHJlcXVlc3RcbiAgICAvLyBhdCBjb21wYXJhYmxlIHJlc29sdXRpb24uIFRoaXMgaXMgdmVyeSBjb21tb24gd2hpbGUgcGFubmluZyAoYW5kIHNtYWxsXG4gICAgLy8gem9vbS1pbnMpIHdpdGhpbiBhIGxhcmdlciwgcmVjZW50bHkgZmV0Y2hlZCBleHRlbnQg4oCUIGUuZy4gb24gdGhlIGdsb2JlIGFcbiAgICAvLyBzaW5nbGUgcmVxdWVzdCBjYW4gY292ZXIgdGhlIHdob2xlIHZpc2libGUgaGVtaXNwaGVyZSwgc28gcm90YXRpbmcgYXJvdW5kIGl0XG4gICAgLy8gc2hvdWxkbid0IGhpdCB0aGUgbmV0d29yayBhZ2Fpbi4gVGhlIGV4aXN0aW5nIGltYWdlIGlzIHNpbXBseSByZXBvc2l0aW9uZWQgYnlcbiAgICAvLyB0aGUgQml0bWFwTGF5ZXIuIFdlIHN0aWxsIHJlZmV0Y2ggb25jZSB0aGUgdXNlciB6b29tcyBpbiBlbm91Z2ggdGhhdCB0aGVcbiAgICAvLyBjYWNoZWQgaW1hZ2Ugd291bGQgYmUgdmlzaWJseSBzdHJldGNoZWQgKHNlZSBDT1ZFUkFHRV9SRUZFVENIX1pPT01fRkFDVE9SKS5cbiAgICBpZiAoXG4gICAgICB0aGlzLnN0YXRlLmxhc3RSZXF1ZXN0UGFyYW1ldGVycyAmJlxuICAgICAgdGhpcy5faXNWaWV3Q292ZXJlZEJ5TGFzdFJlcXVlc3QodGhpcy5zdGF0ZS5sYXN0UmVxdWVzdFBhcmFtZXRlcnMsIHJlcXVlc3RQYXJhbXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRHVyaW5nIHZpZGVvIGV4cG9ydCwgdGhyb3R0bGUgem9vbS1pbiByZXF1ZXN0cyB0byBvbmx5IGZpcmUgb24gem9vbSBsZXZlbCBjcm9zc2luZ3MuXG4gICAgLy8gVGhlIGV4aXN0aW5nIGltYWdlIGlzIHN0cmV0Y2hlZCBieSB0aGUgQml0bWFwTGF5ZXIgdW50aWwgdGhlIG5leHQgbGV2ZWwgaXMgcmVhY2hlZC5cbiAgICAvLyBIb3dldmVyLCBhbHdheXMgYWxsb3cgcmVxdWVzdHMgaWYgdGhlIG5ldyB2aWV3IGlzbid0IGZ1bGx5IGNvdmVyZWQgYnkgdGhlIGxhc3QgaW1hZ2UuXG4gICAgY29uc3QgZ2wgPSB0aGlzLmNvbnRleHQuZ2w7XG4gICAgY29uc3QgaXNFeHBvcnRpbmcgPSBnbD8uZ2V0Q29udGV4dEF0dHJpYnV0ZXM/LigpPy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7XG4gICAgXG4gICAgaWYgKGlzRXhwb3J0aW5nICYmIHRoaXMuc3RhdGUuX2xhc3RSZXF1ZXN0Wm9vbSA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Wm9vbSA9IHZpZXdwb3J0Lnpvb207XG4gICAgICBjb25zdCBsYXN0Wm9vbSA9IHRoaXMuc3RhdGUuX2xhc3RSZXF1ZXN0Wm9vbTtcbiAgICAgIGNvbnN0IGlzWm9vbWluZ0luID0gY3VycmVudFpvb20gPiBsYXN0Wm9vbTtcbiAgICAgIFxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5ldyB2aWV3IGlzIGZ1bGx5IGNvdmVyZWQgYnkgdGhlIGxhc3QgbG9hZGVkIGltYWdlXG4gICAgICBjb25zdCBsYXN0QmJveCA9IHRoaXMuc3RhdGUubGFzdFJlcXVlc3RQYXJhbWV0ZXJzPy5iYm94O1xuICAgICAgY29uc3QgY3VycmVudEJib3ggPSByZXF1ZXN0UGFyYW1zLmJib3g7XG4gICAgICBsZXQgZnVsbHlDb250YWluZWQgPSBmYWxzZTtcbiAgICAgIFxuICAgICAgaWYgKGxhc3RCYm94ICYmIGN1cnJlbnRCYm94KSB7XG4gICAgICAgIC8vIE5ldyBiYm94IG11c3QgYmUgZnVsbHkgaW5zaWRlIHRoZSBwcmV2aW91cyBiYm94XG4gICAgICAgIGZ1bGx5Q29udGFpbmVkID0gXG4gICAgICAgICAgY3VycmVudEJib3hbMF0gPj0gbGFzdEJib3hbMF0gJiYgXG4gICAgICAgICAgY3VycmVudEJib3hbMV0gPj0gbGFzdEJib3hbMV0gJiYgXG4gICAgICAgICAgY3VycmVudEJib3hbMl0gPD0gbGFzdEJib3hbMl0gJiYgXG4gICAgICAgICAgY3VycmVudEJib3hbM10gPD0gbGFzdEJib3hbM107XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIE9ubHkgdGhyb3R0bGUgaWY6XG4gICAgICAvLyAxLiBab29taW5nIGluIChub3Qgem9vbWluZyBvdXQgb3IgcGFubmluZyBhdCBzYW1lIHpvb20pXG4gICAgICAvLyAyLiBTYW1lIHpvb20gZmxvb3IgKGhhdmVuJ3QgY3Jvc3NlZCBhbiBpbnRlZ2VyIHpvb20gbGV2ZWwpXG4gICAgICAvLyAzLiBOZXcgdmlldyBpcyBmdWxseSBjb250YWluZWQgaW4gdGhlIGxhc3QgbG9hZGVkIGltYWdlIChubyB1bmNvdmVyZWQgYXJlYXMpXG4gICAgICBpZiAoaXNab29taW5nSW4gJiYgTWF0aC5mbG9vcihjdXJyZW50Wm9vbSkgPT09IE1hdGguZmxvb3IobGFzdFpvb20pICYmIGZ1bGx5Q29udGFpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYXJrIHJlcXVlc3QgYXMgaW4tZmxpZ2h0IHRvIHByZXZlbnQgZHVwbGljYXRlIHJlcXVlc3RzXG4gICAgdGhpcy5zdGF0ZS5pbkZsaWdodFJlcXVlc3RQYXJhbWV0ZXJzID0gcmVxdWVzdFBhcmFtcztcblxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuZ2V0UmVxdWVzdElkKCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXIrKztcbiAgICAgIC8vIFRyaWdnZXIgYSByZWRyYXcgdG8gdXBkYXRlIHRoZSBVSSBsb2FkaW5nIGluZGljYXRvclxuICAgICAgdGhpcy5zZXROZWVkc1JlZHJhdygpO1xuICAgICAgdGhpcy5wcm9wcy5vbkltYWdlTG9hZFN0YXJ0KHJlcXVlc3RJZCk7XG5cbiAgICAgIGNvbnN0IGltYWdlID0gYXdhaXQgdGhpcy5zdGF0ZS5pbWFnZVNvdXJjZS5nZXRJbWFnZShyZXF1ZXN0UGFyYW1zKTtcblxuICAgICAgLy8gSWYgYSByZXF1ZXN0IHRha2VzIGEgbG9uZyB0aW1lLCBsYXRlciByZXF1ZXN0cyBtYXkgaGF2ZSBhbHJlYWR5IGxvYWRlZC5cbiAgICAgIGlmICh0aGlzLnN0YXRlLmxhc3RSZXF1ZXN0SWQgPCByZXF1ZXN0SWQpIHtcbiAgICAgICAgdGhpcy5nZXRDdXJyZW50TGF5ZXIoKT8ucHJvcHMub25JbWFnZUxvYWQocmVxdWVzdElkKTtcbiAgICAgICAgLy8gVXBkYXRlIGxhc3RSZXF1ZXN0UGFyYW1ldGVycyBvbmx5IGFmdGVyIHN1Y2Nlc3NmdWwgbG9hZFxuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgY292ZXJhZ2UgY2hlY2tzIG9ubHkgdXNlIHN1Y2Nlc3NmdWxseSBsb2FkZWQgaW1hZ2VzXG4gICAgICAgIHRoaXMuc3RhdGUubGFzdFJlcXVlc3RQYXJhbWV0ZXJzID0gcmVxdWVzdFBhcmFtcztcbiAgICAgICAgdGhpcy5zdGF0ZS5fbGFzdFJlcXVlc3Rab29tID0gdmlld3BvcnQuem9vbTtcbiAgICAgICAgLy8gTm90IHR5cGUgc2FmZS4uLlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICBib3VuZHMsXG4gICAgICAgICAgbGFzdFJlcXVlc3RJZDogcmVxdWVzdElkXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmNvbnRleHQub25FcnJvcj8uKGVycm9yIGFzIEVycm9yLCB0aGlzKTtcbiAgICAgIHRoaXMuZ2V0Q3VycmVudExheWVyKCk/LnByb3BzLm9uSW1hZ2VMb2FkRXJyb3IocmVxdWVzdElkLCBlcnJvciBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFyIGluLWZsaWdodCBtYXJrZXIgd2hlbiByZXF1ZXN0IGNvbXBsZXRlcyAoc3VjY2VzcyBvciBlcnJvcilcbiAgICAgIHRoaXMuc3RhdGUuaW5GbGlnaHRSZXF1ZXN0UGFyYW1ldGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXItLTtcbiAgICAgIC8vIFRyaWdnZXIgYSByZWRyYXcgdG8gdXBkYXRlIHRoZSBVSSBsb2FkaW5nIGluZGljYXRvclxuICAgICAgdGhpcy5zZXROZWVkc1JlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhFTFBFUlNcblxuICAvKiogR2xvYmFsIGNvdW50ZXIgZm9yIGlzc3VpbmcgdW5pcXVlIHJlcXVlc3QgaWRzICovXG4gIHByaXZhdGUgZ2V0UmVxdWVzdElkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX25leHRSZXF1ZXN0SWQrKztcbiAgfVxuXG4gIC8qKiBSdW5zIGFuIGFjdGlvbiBpbiB0aGUgZnV0dXJlLCBjYW5jZWxzIGl0IGlmIHRoZSBuZXcgYWN0aW9uIGlzIGlzc3VlZCBiZWZvcmUgaXQgZXhlY3V0ZXMgKi9cbiAgcHJpdmF0ZSBkZWJvdW5jZShmbjogKCkgPT4gdm9pZCwgbXMgPSA1MDApOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zdGF0ZS5fdGltZW91dElkKTtcbiAgICB0aGlzLnN0YXRlLl90aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGZuKCksIG1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgYG5leHRgIHZpZXcgaXMgZnVsbHkgaW5zaWRlIHRoZSBgcHJldmAgKGxhc3QgcmVxdWVzdGVkKVxuICAgKiBleHRlbnQgQU5EIG5vdCBtZWFuaW5nZnVsbHkgaGlnaGVyIHJlc29sdXRpb24sIHNvIHRoZSBjYWNoZWQgaW1hZ2UgYWxyZWFkeVxuICAgKiBjb3ZlcnMgdGhlIHNjcmVlbiBhbmQgbm8gbmV3IHJlcXVlc3QgaXMgbmVlZGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNWaWV3Q292ZXJlZEJ5TGFzdFJlcXVlc3QocHJldjogYW55LCBuZXh0OiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBDb3ZlcmFnZSBvbmx5IG1ha2VzIHNlbnNlIHdpdGhpbiB0aGUgc2FtZSBwcm9qZWN0aW9uIC8gZGF0YXNldCAvIGNhbnZhcyBzaXplLlxuICAgIGlmIChcbiAgICAgIHByZXYuc3JzICE9PSBuZXh0LnNycyB8fFxuICAgICAgcHJldi53aWR0aCAhPT0gbmV4dC53aWR0aCB8fFxuICAgICAgcHJldi5oZWlnaHQgIT09IG5leHQuaGVpZ2h0IHx8XG4gICAgICBwcmV2LnRyYW5zcGFyZW50ICE9PSBuZXh0LnRyYW5zcGFyZW50IHx8XG4gICAgICAhZGVlcEVxdWFsKHByZXYubGF5ZXJzLCBuZXh0LmxheWVycylcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwID0gcHJldi5iYm94O1xuICAgIGNvbnN0IG4gPSBuZXh0LmJib3g7XG4gICAgaWYgKCFwIHx8ICFuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSXMgdGhlIG5ldyBiYm94IGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIHByZXZpb3VzbHkgcmVxdWVzdGVkIGJib3g/XG4gICAgY29uc3QgY29udGFpbmVkID0gblswXSA+PSBwWzBdICYmIG5bMV0gPj0gcFsxXSAmJiBuWzJdIDw9IHBbMl0gJiYgblszXSA8PSBwWzNdO1xuICAgIFxuICAgIGlmICghY29udGFpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gR3JvdW5kIHJlc29sdXRpb24gaXMgcHJvcG9ydGlvbmFsIHRvIGJib3ggc3BhbiAvIHBpeGVsIGNvdW50LiBUaGUgZ3VhcmRcbiAgICAvLyBhYm92ZSBhbHJlYWR5IGVuc3VyZWQgcHJldiBhbmQgbmV4dCBzaGFyZSB0aGUgc2FtZSB3aWR0aC9oZWlnaHQsIHNvIGVxdWFsXG4gICAgLy8gcGl4ZWwgY291bnRzIGxldCB1cyBjb21wYXJlIHNwYW5zIGRpcmVjdGx5LiBPbmx5IHNraXAgd2hpbGUgdGhlIG5ldyB2aWV3XG4gICAgLy8gaXNuJ3QgbXVjaCBmaW5lciB0aGFuIHdoYXQgd2UgYWxyZWFkeSBmZXRjaGVkLCBvdGhlcndpc2UgdGhlIGNhY2hlZCBpbWFnZVxuICAgIC8vIHdvdWxkIGxvb2sgc3RyZXRjaGVkL2JsdXJyeS5cbiAgICBjb25zdCBwcmV2U3BhblggPSBwWzJdIC0gcFswXTtcbiAgICBjb25zdCBuZXh0U3BhblggPSBuWzJdIC0gblswXTtcbiAgICBjb25zdCBwcmV2U3BhblkgPSBwWzNdIC0gcFsxXTtcbiAgICBjb25zdCBuZXh0U3BhblkgPSBuWzNdIC0gblsxXTtcblxuICAgIHJldHVybiAoXG4gICAgICBuZXh0U3BhblggPj0gcHJldlNwYW5YIC8gQ09WRVJBR0VfUkVGRVRDSF9aT09NX0ZBQ1RPUiAmJlxuICAgICAgbmV4dFNwYW5ZID49IHByZXZTcGFuWSAvIENPVkVSQUdFX1JFRkVUQ0hfWk9PTV9GQUNUT1JcbiAgICApO1xuICB9XG5cbiAgLyoqIENvbXBhcmUgcmVxdWVzdCBwYXJhbWV0ZXJzIHRvIGRldGVybWluZSBpZiBhIG5ldyByZXF1ZXN0IGlzIG5lZWRlZCAqL1xuICBwcml2YXRlIF9hcmVSZXF1ZXN0UGFyYW1zRXF1YWwocHJldjogYW55LCBuZXh0OiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBDb21wYXJlIGRpbWVuc2lvbnNcbiAgICBpZiAocHJldi53aWR0aCAhPT0gbmV4dC53aWR0aCB8fCBwcmV2LmhlaWdodCAhPT0gbmV4dC5oZWlnaHQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wYXJlIFNSU1xuICAgIGlmIChwcmV2LnNycyAhPT0gbmV4dC5zcnMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wYXJlIGxheWVyc1xuICAgIGlmICghZGVlcEVxdWFsKHByZXYubGF5ZXJzLCBuZXh0LmxheWVycykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wYXJlIHRyYW5zcGFyZW50XG4gICAgaWYgKHByZXYudHJhbnNwYXJlbnQgIT09IG5leHQudHJhbnNwYXJlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wYXJlIGJvdW5kcyB3aXRoIHRvbGVyYW5jZSBmb3IgZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uXG4gICAgY29uc3QgdG9sZXJhbmNlID0gMWUtMTA7XG4gICAgY29uc3QgcHJldkJib3ggPSBwcmV2LmJib3g7XG4gICAgY29uc3QgbmV4dEJib3ggPSBuZXh0LmJib3g7XG5cbiAgICBpZiAocHJldkJib3ggJiYgbmV4dEJib3gpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhwcmV2QmJveFtpXSAtIG5leHRCYm94W2ldKSA+IHRvbGVyYW5jZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgW21pbkxuZywgbWluTGF0LCBtYXhMbmcsIG1heExhdF0gYm91bmRpbmcgYm94IG9mIHRoZSBwYXJ0IG9mIHRoZVxuICogZ2xvYmUgdGhhdCBpcyBhY3R1YWxseSB2aXNpYmxlIG9uIHNjcmVlbi5cbiAqXG4gKiBVbmxpa2UgYEdsb2JlVmlld3BvcnQuZ2V0Qm91bmRzKClgICg0IGVkZ2UgbWlkcG9pbnRzKSwgdGhpcyBzYW1wbGVzIGEgZ3JpZCBvZlxuICogc2NyZWVuIHBpeGVscywgdW5wcm9qZWN0cyBlYWNoIG9udG8gdGhlIHNwaGVyZSAoZGVjay5nbCBjbGFtcHMgcmF5cyB0aGF0IG1pc3NcbiAqIHRoZSBnbG9iZSB0byB0aGUgc2lsaG91ZXR0ZS9saW1iLCB3aGljaCBpcyBleGFjdGx5IHRoZSBib3VuZGFyeSB3ZSB3YW50KSwgYW5kXG4gKiB0YWtlcyB0aGUgZXh0ZW50LiBJdCBhZGRpdGlvbmFsbHkgZGV0ZWN0cyB3aGVuIGEgcG9sZSBpcyBpbiB2aWV3OiBhdCBhIHBvbGUgYWxsXG4gKiBtZXJpZGlhbnMgY29udmVyZ2UsIHNvIHdlIHdpZGVuIHRoZSBib3ggdG8gdGhlIGZ1bGwgbG9uZ2l0dWRlIHJhbmdlIGFuZCBleHRlbmRcbiAqIHRoZSBsYXRpdHVkZSB1cCB0byB0aGUgcG9sZSwgd2hpY2ggaXMgd2hhdCBtYWtlcyB2aWV3aW5nIGZyb20gbmVhciBhIHBvbGVcbiAqIChzZWVpbmcgYWNyb3NzIHRvIHRoZSBmYXIgaGVtaXNwaGVyZSkgd29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JlVmlzaWJsZUJvdW5kcyh2aWV3cG9ydDogVmlld3BvcnQpOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IHZpZXdwb3J0O1xuICBjb25zdCBjZW50ZXJMbmcgPSAodmlld3BvcnQgYXMgYW55KS5sb25naXR1ZGUgPz8gMDtcblxuICBjb25zdCBTQU1QTEVTID0gODsgLy8gOHg4IGNlbGxzID0+IDl4OSA9IDgxIHNhbXBsZSBwb2ludHNcbiAgY29uc3QgbGF0czogbnVtYmVyW10gPSBbXTtcbiAgLy8gTG9uZ2l0dWRlcyB0cmFja2VkIGFzIHNpZ25lZCBvZmZzZXRzIGZyb20gdGhlIGNlbnRlciBsb25naXR1ZGUsIHVud3JhcHBlZCB0b1xuICAvLyAoLTE4MCwgMTgwXSwgc28gYW4gYW50aW1lcmlkaWFuLWNyb3NzaW5nIHZpZXcgc3RheXMgYSBjb250aWd1b3VzIHJhbmdlLlxuICBjb25zdCBsbmdPZmZzZXRzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDw9IFNBTVBMRVM7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDw9IFNBTVBMRVM7IGorKykge1xuICAgICAgY29uc3QgcHggPSAoaSAvIFNBTVBMRVMpICogd2lkdGg7XG4gICAgICBjb25zdCBweSA9IChqIC8gU0FNUExFUykgKiBoZWlnaHQ7XG4gICAgICBjb25zdCBjb29yZCA9IHZpZXdwb3J0LnVucHJvamVjdChbcHgsIHB5XSk7XG4gICAgICBjb25zdCBsbmcgPSBjb29yZFswXTtcbiAgICAgIGNvbnN0IGxhdCA9IGNvb3JkWzFdO1xuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobG5nKSB8fCAhTnVtYmVyLmlzRmluaXRlKGxhdCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBsYXRzLnB1c2gobGF0KTtcbiAgICAgIC8vIFdyYXAgdGhlIG9mZnNldCBpbnRvICgtMTgwLCAxODBdLlxuICAgICAgY29uc3Qgb2Zmc2V0ID0gKChsbmcgLSBjZW50ZXJMbmcgKyA1NDApICUgMzYwKSAtIDE4MDtcbiAgICAgIGxuZ09mZnNldHMucHVzaChvZmZzZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4dHJlbWVseSBkZWdlbmVyYXRlIHZpZXdwb3J0OiBmYWxsIGJhY2sgdG8gZGVjaydzIGRlZmF1bHQuXG4gIGlmIChsYXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB2aWV3cG9ydC5nZXRCb3VuZHMoKTtcbiAgfVxuXG4gIGxldCBtaW5MYXQgPSBNYXRoLm1pbiguLi5sYXRzKTtcbiAgbGV0IG1heExhdCA9IE1hdGgubWF4KC4uLmxhdHMpO1xuXG4gIGNvbnN0IG5vcnRoUG9sZVZpc2libGUgPSBpc0dsb2JlU3VyZmFjZVBvaW50VmlzaWJsZSh2aWV3cG9ydCwgOTApO1xuICBjb25zdCBzb3V0aFBvbGVWaXNpYmxlID0gaXNHbG9iZVN1cmZhY2VQb2ludFZpc2libGUodmlld3BvcnQsIC05MCk7XG5cbiAgbGV0IG1pbkxuZzogbnVtYmVyO1xuICBsZXQgbWF4TG5nOiBudW1iZXI7XG5cbiAgaWYgKG5vcnRoUG9sZVZpc2libGUgfHwgc291dGhQb2xlVmlzaWJsZSkge1xuICAgIC8vIEEgcG9sZSBpcyBvbiBzY3JlZW46IGV2ZXJ5IG1lcmlkaWFuIGlzIHZpc2libGUsIHNvIGNvdmVyIGFsbCBsb25naXR1ZGVzIGFuZFxuICAgIC8vIGV4dGVuZCBsYXRpdHVkZSB1cCB0byB0aGUgdmlzaWJsZSBwb2xlLlxuICAgIG1pbkxuZyA9IC0xODA7XG4gICAgbWF4TG5nID0gMTgwO1xuICAgIGlmIChub3J0aFBvbGVWaXNpYmxlKSB7XG4gICAgICBtYXhMYXQgPSA5MDtcbiAgICB9XG4gICAgaWYgKHNvdXRoUG9sZVZpc2libGUpIHtcbiAgICAgIG1pbkxhdCA9IC05MDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWluTG5nID0gY2VudGVyTG5nICsgTWF0aC5taW4oLi4ubG5nT2Zmc2V0cyk7XG4gICAgbWF4TG5nID0gY2VudGVyTG5nICsgTWF0aC5tYXgoLi4ubG5nT2Zmc2V0cyk7XG4gIH1cblxuICAvLyBQYWQgc2xpZ2h0bHkgc28gdGhlIGRpc2NyZXRlIHNhbXBsaW5nIGRvZXNuJ3QgY2xpcCB0aGUgdHJ1ZSBsaW1iLlxuICBjb25zdCBsYXRQYWQgPSBNYXRoLm1pbig1LCAobWF4TGF0IC0gbWluTGF0KSAqIDAuMDUgKyAwLjUpO1xuICBtaW5MYXQgPSBNYXRoLm1heCgtOTAsIG1pbkxhdCAtIGxhdFBhZCk7XG4gIG1heExhdCA9IE1hdGgubWluKDkwLCBtYXhMYXQgKyBsYXRQYWQpO1xuXG4gIGlmIChtYXhMbmcgLSBtaW5MbmcgPCAzNjApIHtcbiAgICBjb25zdCBsbmdQYWQgPSBNYXRoLm1pbig1LCAobWF4TG5nIC0gbWluTG5nKSAqIDAuMDUgKyAwLjUpO1xuICAgIG1pbkxuZyAtPSBsbmdQYWQ7XG4gICAgbWF4TG5nICs9IGxuZ1BhZDtcbiAgfVxuXG4gIC8vIEEgc2luZ2xlIEVQU0c6NDMyNiByZWN0YW5nbGUgY2FuJ3QgY3Jvc3MgdGhlIGFudGltZXJpZGlhbiwgc28gaWYgdGhlIHZpc2libGVcbiAgLy8gc3BhbiB3cmFwcyBwYXN0IMKxMTgwIChvciBjb3ZlcnMgdGhlIHdob2xlIHdvcmxkKSByZXF1ZXN0IHRoZSBmdWxsIGxvbmdpdHVkZVxuICAvLyByYW5nZS4gVGhpcyBvdmVyLWNvdmVycyBvbmx5IG5lYXIgdGhlIGRhdGVsaW5lLCB3aGljaCBpcyBhbiBhY2NlcHRhYmxlXG4gIC8vIHRyYWRlLW9mZiBmb3IgYSB2YWxpZCwgZ2FwLWZyZWUgcmVxdWVzdC5cbiAgaWYgKG1heExuZyAtIG1pbkxuZyA+PSAzNjAgfHwgbWluTG5nIDwgLTE4MCB8fCBtYXhMbmcgPiAxODApIHtcbiAgICBtaW5MbmcgPSAtMTgwO1xuICAgIG1heExuZyA9IDE4MDtcbiAgfVxuXG4gIHJldHVybiBbbWluTG5nLCBtaW5MYXQsIG1heExuZywgbWF4TGF0XTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgcG9pbnQgb24gdGhlIGdsb2JlIHN1cmZhY2UgYXQgdGhlIGdpdmVuIGxhdGl0dWRlIChsb25naXR1ZGUgaXNcbiAqIGlycmVsZXZhbnQgYXQgdGhlIHBvbGVzKSBpcyBib3RoIGZyb250LWZhY2luZyAobm90IG9jY2x1ZGVkIGJ5IHRoZSBnbG9iZSkgYW5kXG4gKiBpbnNpZGUgdGhlIHNjcmVlbi4gVXNlcyB0aGUgc3BoZXJlLWhvcml6b24gdGVzdCBpbiBkZWNrLmdsIGNvbW1vbiBzcGFjZTpcbiAqIGEgc3VyZmFjZSBwb2ludCBpcyBmcm9udC1mYWNpbmcgd2hlbiB0aGUgYW5nbGUgYmV0d2VlbiBpdHMgb3V0d2FyZCBub3JtYWwgYW5kXG4gKiB0aGUgY2FtZXJhIGRpcmVjdGlvbiBpcyB3aXRoaW4gdGhlIGhvcml6b24gaGFsZi1hbmdsZSwgaS5lLlxuICogICBkb3Qobm9ybWFsaXplKHBvaW50Q29tbW9uKSwgbm9ybWFsaXplKGNhbWVyYVBvc2l0aW9uKSkgPj0gcmFkaXVzIC8gY2FtZXJhRGlzdFxuICovXG5mdW5jdGlvbiBpc0dsb2JlU3VyZmFjZVBvaW50VmlzaWJsZSh2aWV3cG9ydDogVmlld3BvcnQsIGxhdDogbnVtYmVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IHZpZXdwb3J0O1xuICBjb25zdCBwb2ludCA9IHZpZXdwb3J0LnByb2plY3RQb3NpdGlvbihbMCwgbGF0LCAwXSk7XG4gIGNvbnN0IGNhbWVyYSA9IHZpZXdwb3J0LmNhbWVyYVBvc2l0aW9uO1xuXG4gIGNvbnN0IHJQb2ludCA9IE1hdGguaHlwb3QocG9pbnRbMF0sIHBvaW50WzFdLCBwb2ludFsyXSk7XG4gIGNvbnN0IHJDYW0gPSBNYXRoLmh5cG90KGNhbWVyYVswXSwgY2FtZXJhWzFdLCBjYW1lcmFbMl0pO1xuICBpZiAoclBvaW50ID09PSAwIHx8IHJDYW0gPT09IDAgfHwgckNhbSA8PSByUG9pbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjb3NTdXJmYWNlID1cbiAgICAocG9pbnRbMF0gKiBjYW1lcmFbMF0gKyBwb2ludFsxXSAqIGNhbWVyYVsxXSArIHBvaW50WzJdICogY2FtZXJhWzJdKSAvIChyUG9pbnQgKiByQ2FtKTtcbiAgY29uc3QgY29zSG9yaXpvbiA9IHJQb2ludCAvIHJDYW07XG4gIGlmIChjb3NTdXJmYWNlIDwgY29zSG9yaXpvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNjcmVlbiA9IHZpZXdwb3J0LnByb2plY3QoWzAsIGxhdCwgMF0pO1xuICByZXR1cm4gc2NyZWVuWzBdID49IDAgJiYgc2NyZWVuWzBdIDw9IHdpZHRoICYmIHNjcmVlblsxXSA+PSAwICYmIHNjcmVlblsxXSA8PSBoZWlnaHQ7XG59XG5cbi8vIGh0dHBzOi8vZXBzZy5pby8zODU3XG4vLyArcHJvaj1tZXJjICthPTYzNzgxMzcgK2I9NjM3ODEzNyArbGF0X3RzPTAgK2xvbl8wPTAgK3hfMD0wICt5XzA9MCAraz0xICt1bml0cz1tICtuYWRncmlkcz1AbnVsbCArd2t0ZXh0ICtub19kZWZzICt0eXBlPWNyc1xuY29uc3QgSEFMRl9FQVJUSF9DSVJDVU1GRVJFTkNFID0gNjM3ODEzNyAqIE1hdGguUEk7XG5cbi8qKiBQcm9qZWN0cyBFUFNHOjQzMjYgdG8gRVBTRzozODU3XG4gKiBUaGlzIGlzIGEgbGlnaHR3ZWlnaHQgcmVwbGFjZW1lbnQgb2YgcHJvajQuIFVzZSB0ZXN0cyB0byBlbnN1cmUgY29uZm9ybWFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBXR1M4NFRvUHNldWRvTWVyY2F0b3IoY29vcmQ6IFtudW1iZXIsIG51bWJlcl0pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgbWVyY2F0b3IgPSBsbmdMYXRUb1dvcmxkKGNvb3JkKTtcbiAgbWVyY2F0b3JbMF0gPSAobWVyY2F0b3JbMF0gLyAyNTYgLSAxKSAqIEhBTEZfRUFSVEhfQ0lSQ1VNRkVSRU5DRTtcbiAgbWVyY2F0b3JbMV0gPSAobWVyY2F0b3JbMV0gLyAyNTYgLSAxKSAqIEhBTEZfRUFSVEhfQ0lSQ1VNRkVSRU5DRTtcbiAgcmV0dXJuIG1lcmNhdG9yO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBVUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBQTRELFNBQUFJLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdB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QSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN4RCxJQUFJRSxNQUFNLEtBQUssQ0FBQyxJQUFJRSxJQUFJLEtBQUssQ0FBQyxJQUFJQSxJQUFJLElBQUlGLE1BQU0sRUFBRTtJQUNoRCxPQUFPLEtBQUs7RUFDZDtFQUVBLElBQU1HLFVBQVUsR0FDZCxDQUFDUCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUdFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBR0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUdGLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBR0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLRSxNQUFNLEdBQUdFLElBQUksQ0FBQztFQUN4RixJQUFNRSxVQUFVLEdBQUdKLE1BQU0sR0FBR0UsSUFBSTtFQUNoQyxJQUFJQyxVQUFVLEdBQUdDLFVBQVUsRUFBRTtJQUMzQixPQUFPLEtBQUs7RUFDZDtFQUVBLElBQU1DLE1BQU0sR0FBRzNLLFFBQVEsQ0FBQzRLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRXZCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUM1QyxPQUFPc0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJbEcsS0FBSyxJQUFJa0csTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJakcsTUFBTTtBQUN0Rjs7QUFFQTtBQUNBO0FBQ0EsSUFBTW1HLHdCQUF3QixHQUFHLE9BQU8sR0FBR3RFLElBQUksQ0FBQ3VFLEVBQUU7O0FBRWxEO0FBQ0E7QUFDQTtBQUNPLFNBQVNuRSxxQkFBcUJBLENBQUN1QyxLQUF1QixFQUFvQjtFQUMvRSxJQUFNNkIsUUFBUSxHQUFHLElBQUFDLDBCQUFhLEVBQUM5QixLQUFLLENBQUM7RUFDckM2QixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQ0EsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUlGLHdCQUF3QjtFQUNoRUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUNBLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJRix3QkFBd0I7RUFDaEUsT0FBT0UsUUFBUTtBQUNqQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
624
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2ViTWVyY2F0b3IiLCJyZXF1aXJlIiwiX2NvcmUiLCJfbGF5ZXJzIiwiX3dtcyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsIkNPVkVSQUdFX1JFRkVUQ0hfWk9PTV9GQUNUT1IiLCJkZWZhdWx0UHJvcHMiLCJpZCIsImRhdGEiLCJzZXJ2aWNlVHlwZSIsInNycyIsImxheWVycyIsInR5cGUiLCJjb21wYXJlIiwidmFsdWUiLCJvbk1ldGFkYXRhTG9hZCIsIm9uTWV0YWRhdGFMb2FkRXJyb3IiLCJjb25zb2xlIiwiZXJyb3IiLCJvbkltYWdlTG9hZFN0YXJ0Iiwib25JbWFnZUxvYWQiLCJvbkltYWdlTG9hZEVycm9yIiwicmVxdWVzdElkIiwiV01TTGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiZ2V0Iiwic3RhdGUiLCJsb2FkQ291bnRlciIsInNob3VsZFVwZGF0ZVN0YXRlIiwiaW5pdGlhbGl6ZVN0YXRlIiwiX25leHRSZXF1ZXN0SWQiLCJsYXN0UmVxdWVzdElkIiwiX2xhc3RSZXF1ZXN0Wm9vbSIsInVwZGF0ZVN0YXRlIiwiX3JlZiIsIl90aGlzIiwiY2hhbmdlRmxhZ3MiLCJwcm9wcyIsIm9sZFByb3BzIiwidmlld3BvcnQiLCJjb250ZXh0IiwiZGF0YUNoYW5nZWQiLCJpbWFnZVNvdXJjZSIsIl9jcmVhdGVJbWFnZVNvdXJjZSIsIl9sb2FkTWV0YWRhdGEiLCJkZWJvdW5jZSIsImxvYWRJbWFnZSIsImRlZXBFcXVhbCIsInZpZXdwb3J0Q2hhbmdlZCIsIl9nbCRnZXRDb250ZXh0QXR0cmlidSIsImdsIiwiaXNQcmVzZXJ2aW5nQnVmZmVyIiwiZ2V0Q29udGV4dEF0dHJpYnV0ZXMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJkZWJvdW5jZURlbGF5IiwidW5kZWZpbmVkIiwicmVuZGVyTGF5ZXJzIiwiX3RoaXMkc3RhdGUiLCJib3VuZHMiLCJpbWFnZSIsImxhc3RSZXF1ZXN0UGFyYW1ldGVycyIsIkJpdG1hcExheWVyIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsIl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0iLCJDT09SRElOQVRFX1NZU1RFTSIsIkxOR0xBVCIsIkNBUlRFU0lBTiIsInBpY2thYmxlIiwiX2dldEZlYXR1cmVJbmZvVGV4dCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwieCIsInkiLCJfdGhpcyRzdGF0ZSRpbWFnZVNvdXIiLCJfdGhpcyRzdGF0ZSRpbWFnZVNvdXIyIiwiZmVhdHVyZUluZm8iLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0RmVhdHVyZUluZm9UZXh0IiwicXVlcnlfbGF5ZXJzIiwiaW5mb19mb3JtYXQiLCJzZW50IiwiYWJydXB0Iiwic3RvcCIsIl94IiwiX3gyIiwiSW1hZ2VTb3VyY2UiLCJXTVNJbWFnZVNvdXJjZSIsImxvYWRPcHRpb25zIiwiRXJyb3IiLCJfbG9hZE1ldGFkYXRhMiIsIl9jYWxsZWUyIiwibWV0YWRhdGEiLCJfdGhpcyRnZXRDdXJyZW50TGF5ZXIiLCJfdGhpcyRnZXRDdXJyZW50TGF5ZXIyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0TWV0YWRhdGEiLCJnZXRDdXJyZW50TGF5ZXIiLCJ0MCIsImZpbmlzaCIsIl9sb2FkSW1hZ2UiLCJfY2FsbGVlMyIsIl9yZWFzb24iLCJfZ2wkZ2V0Q29udGV4dEF0dHJpYnUyIiwiX3RoaXMkcHJvcHMiLCJ0cmFuc3BhcmVudCIsIndpZHRoIiwiaGVpZ2h0IiwibWluTGF0IiwibWF4TGF0IiwicmVxdWVzdFBhcmFtcyIsIl9XR1M4NFRvUHNldWRvTWVyY2F0byIsIl9XR1M4NFRvUHNldWRvTWVyY2F0bzIiLCJtaW5YIiwibWluWSIsIl9XR1M4NFRvUHNldWRvTWVyY2F0bzMiLCJfV0dTODRUb1BzZXVkb01lcmNhdG80IiwibWF4WCIsIm1heFkiLCJpc0V4cG9ydGluZyIsIl90aGlzJHN0YXRlJGxhc3RSZXF1ZSIsImN1cnJlbnRab29tIiwibGFzdFpvb20iLCJpc1pvb21pbmdJbiIsImxhc3RCYm94IiwiY3VycmVudEJib3giLCJmdWxseUNvbnRhaW5lZCIsIl90aGlzJGdldEN1cnJlbnRMYXllcjMiLCJfdGhpcyRjb250ZXh0JG9uRXJyb3IiLCJfdGhpcyRjb250ZXh0IiwiX3RoaXMkZ2V0Q3VycmVudExheWVyNCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInJlc29sdXRpb24iLCJnZXRHbG9iZVZpc2libGVCb3VuZHMiLCJnZXRCb3VuZHMiLCJNYXRoIiwiYWJzIiwiYmJveCIsImJvdW5kaW5nQm94IiwiV0dTODRUb1BzZXVkb01lcmNhdG9yIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5GbGlnaHRSZXF1ZXN0UGFyYW1ldGVycyIsIl9hcmVSZXF1ZXN0UGFyYW1zRXF1YWwiLCJfaXNWaWV3Q292ZXJlZEJ5TGFzdFJlcXVlc3QiLCJ6b29tIiwiZmxvb3IiLCJnZXRSZXF1ZXN0SWQiLCJzZXROZWVkc1JlZHJhdyIsImdldEltYWdlIiwic2V0U3RhdGUiLCJvbkVycm9yIiwiX3gzIiwiX3g0IiwiZm4iLCJtcyIsImNsZWFyVGltZW91dCIsIl90aW1lb3V0SWQiLCJzZXRUaW1lb3V0IiwibiIsImNvbnRhaW5lZCIsInByZXZTcGFuWCIsIm5leHRTcGFuWCIsInByZXZTcGFuWSIsIm5leHRTcGFuWSIsInRvbGVyYW5jZSIsInByZXZCYm94IiwibmV4dEJib3giLCJpIiwiQ29tcG9zaXRlTGF5ZXIiLCJfbG9uZ2l0dWRlIiwiY2VudGVyTG5nIiwibG9uZ2l0dWRlIiwiU0FNUExFUyIsImxhdHMiLCJsbmdPZmZzZXRzIiwiaiIsInB4IiwicHkiLCJjb29yZCIsInVucHJvamVjdCIsImxuZyIsImxhdCIsIk51bWJlciIsImlzRmluaXRlIiwib2Zmc2V0IiwibWluIiwibWF4Iiwibm9ydGhQb2xlVmlzaWJsZSIsImlzR2xvYmVTdXJmYWNlUG9pbnRWaXNpYmxlIiwic291dGhQb2xlVmlzaWJsZSIsIm1pbkxuZyIsIm1heExuZyIsImxhdFBhZCIsImxuZ1BhZCIsInBvaW50IiwicHJvamVjdFBvc2l0aW9uIiwiY2FtZXJhIiwiY2FtZXJhUG9zaXRpb24iLCJyUG9pbnQiLCJoeXBvdCIsInJDYW0iLCJjb3NTdXJmYWNlIiwiY29zSG9yaXpvbiIsInNjcmVlbiIsInByb2plY3QiLCJIQUxGX0VBUlRIX0NJUkNVTUZFUkVOQ0UiLCJQSSIsIm1lcmNhdG9yIiwibG5nTGF0VG9Xb3JsZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93bXMvd21zLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7bG5nTGF0VG9Xb3JsZH0gZnJvbSAnQG1hdGguZ2wvd2ViLW1lcmNhdG9yJztcblxuaW1wb3J0IHtcbiAgTGF5ZXIsXG4gIENvbXBvc2l0ZUxheWVyLFxuICBDb21wb3NpdGVMYXllclByb3BzLFxuICBVcGRhdGVQYXJhbWV0ZXJzLFxuICBEZWZhdWx0UHJvcHMsXG4gIFZpZXdwb3J0LFxuICBDT09SRElOQVRFX1NZU1RFTSxcbiAgX2RlZXBFcXVhbCBhcyBkZWVwRXF1YWxcbn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge0JpdG1hcExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtJbWFnZVNvdXJjZSwgV01TSW1hZ2VTb3VyY2V9IGZyb20gJ0Bsb2FkZXJzLmdsL3dtcyc7XG5cbmltcG9ydCB0eXBlIHtJbWFnZVNvdXJjZU1ldGFkYXRhfSBmcm9tICdAbG9hZGVycy5nbC9sb2FkZXItdXRpbHMnO1xuaW1wb3J0IHR5cGUge0ltYWdlVHlwZX0gZnJvbSAnQGxvYWRlcnMuZ2wvd21zJztcblxuLy8gVE9ETzogVGhpcyBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgV01TTGF5ZXIgZnJvbSBkZWNrLmdsLiBSZW1vdmUgdGhpcyBvbmNlIHdlIHVwZ3JhZGUgZGVjay5nbCBhbmQgbG9hZGVycy5nbC5cblxuLyoqIEFsbCBwcm9wcyBzdXBwb3J0ZWQgYnkgdGhlIFRpbGVMYXllciAqL1xuZXhwb3J0IHR5cGUgV01TTGF5ZXJQcm9wcyA9IENvbXBvc2l0ZUxheWVyUHJvcHMgJiBfV01TTGF5ZXJQcm9wcztcblxuLyoqIFByb3BzIGFkZGVkIGJ5IHRoZSBUaWxlTGF5ZXIgKi9cbnR5cGUgX1dNU0xheWVyUHJvcHMgPSB7XG4gIGRhdGE6IHN0cmluZyB8IEltYWdlU291cmNlO1xuICBzZXJ2aWNlVHlwZT86IHN0cmluZyB8ICdhdXRvJztcbiAgbGF5ZXJzPzogc3RyaW5nW107XG4gIHNycz86ICdFUFNHOjQzMjYnIHwgJ0VQU0c6Mzg1NycgfCAnYXV0byc7XG4gIHRyYW5zcGFyZW50PzogYm9vbGVhbjtcbiAgb25NZXRhZGF0YUxvYWQ/OiAobWV0YWRhdGE6IEltYWdlU291cmNlTWV0YWRhdGEpID0+IHZvaWQ7XG4gIG9uTWV0YWRhdGFMb2FkRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvbkltYWdlTG9hZFN0YXJ0PzogKHJlcXVlc3RJZDogdW5rbm93bikgPT4gdm9pZDtcbiAgb25JbWFnZUxvYWQ/OiAocmVxdWVzdElkOiB1bmtub3duKSA9PiB2b2lkO1xuICBvbkltYWdlTG9hZEVycm9yPzogKHJlcXVlc3RJZDogdW5rbm93biwgZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBIb3cgbXVjaCB0aGUgdXNlciBtYXkgem9vbSBpbiAoc2hyaW5raW5nIHRoZSB2aXNpYmxlIHNwYW4pIGJlZm9yZSBhIHZpZXcgdGhhdFxuICogaXMgc3RpbGwgY29udGFpbmVkIGluIHRoZSBsYXN0IHJlcXVlc3RlZCBleHRlbnQgdHJpZ2dlcnMgYSBmcmVzaCwgaGlnaGVyXG4gKiByZXNvbHV0aW9uIHJlcXVlc3QuIGAyYCBtZWFucyB0aGUgY2FjaGVkIGltYWdlIG1heSBiZSBzdHJldGNoZWQgdXAgdG8gfjJ4XG4gKiBiZWZvcmUgcmVmZXRjaGluZzsgaGlnaGVyIHZhbHVlcyBtZWFuIGZld2VyIHJlcXVlc3RzIGJ1dCBibHVycmllciB6b29tLWlucy5cbiAqL1xuY29uc3QgQ09WRVJBR0VfUkVGRVRDSF9aT09NX0ZBQ1RPUiA9IDI7XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogRGVmYXVsdFByb3BzPFdNU0xheWVyUHJvcHM+ID0ge1xuICBpZDogJ2ltYWdlcnktbGF5ZXInLFxuICBkYXRhOiAnJyxcbiAgc2VydmljZVR5cGU6ICdhdXRvJyxcbiAgc3JzOiAnYXV0bycsXG4gIGxheWVyczoge3R5cGU6ICdhcnJheScsIGNvbXBhcmU6IHRydWUsIHZhbHVlOiBbXX0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25NZXRhZGF0YUxvYWQ6IHt0eXBlOiAnZnVuY3Rpb24nLCB2YWx1ZTogKCkgPT4ge319LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgb25NZXRhZGF0YUxvYWRFcnJvcjoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiBjb25zb2xlLmVycm9yfSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkltYWdlTG9hZFN0YXJ0OiB7dHlwZTogJ2Z1bmN0aW9uJywgdmFsdWU6ICgpID0+IHt9fSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkltYWdlTG9hZDoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiAoKSA9PiB7fX0sXG4gIG9uSW1hZ2VMb2FkRXJyb3I6IHtcbiAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICAgIGNvbXBhcmU6IGZhbHNlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHZhbHVlOiAocmVxdWVzdElkOiB1bmtub3duLCBlcnJvcjogRXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoZXJyb3IsIHJlcXVlc3RJZClcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV01TTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxSZXF1aXJlZDxfV01TTGF5ZXJQcm9wcz4+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdXTVNMYXllcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHM6IERlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBkZWNsYXJlIHN0YXRlOiB7XG4gICAgaW1hZ2VTb3VyY2U6IEltYWdlU291cmNlO1xuICAgIGltYWdlOiBJbWFnZVR5cGU7XG4gICAgYm91bmRzOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgICBsYXN0UmVxdWVzdFBhcmFtZXRlcnM6IHtcbiAgICAgIC8vIFRPRE86IHJlbW92ZSBiYm94IG9uY2UgZGVjay5nbCBpcyB1cGdyYWRlZCB0byBeOC4xMCB3aXRoIGxvYWRlcnMuZ2wgXjRcbiAgICAgIGJib3g6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICAgICAgYm91bmRpbmdCb3g6IFtbbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXJdXTtcbiAgICAgIGxheWVyczogc3RyaW5nW107XG4gICAgICBzcnM6ICdFUFNHOjQzMjYnIHwgJ0VQU0c6Mzg1Nyc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgfTtcbiAgICBpbkZsaWdodFJlcXVlc3RQYXJhbWV0ZXJzPzoge1xuICAgICAgYmJveDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgICBib3VuZGluZ0JveDogW1tudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl1dO1xuICAgICAgbGF5ZXJzOiBzdHJpbmdbXTtcbiAgICAgIHNyczogJ0VQU0c6NDMyNicgfCAnRVBTRzozODU3JztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9O1xuICAgIGxhc3RSZXF1ZXN0SWQ6IG51bWJlcjtcbiAgICBfbmV4dFJlcXVlc3RJZDogbnVtYmVyO1xuICAgIC8qKiBUT0RPOiBDaGFuZ2UgYW55ID0+IHNldFRpbWVvdXQgcmV0dXJuIHR5cGUuIERpZmZlcmVudCBiZXR3ZWVuIE5vZGUgYW5kIGJyb3dzZXIuLi4gKi9cbiAgICBfdGltZW91dElkOiBhbnk7XG4gICAgbG9hZENvdW50ZXI6IG51bWJlcjtcbiAgICBfbGFzdFJlcXVlc3Rab29tOiBudW1iZXI7XG4gIH07XG5cbiAgLyoqIFJldHVybnMgdHJ1ZSBpZiBhbGwgYXN5bmMgcmVzb3VyY2VzIGFyZSBsb2FkZWQgKi9cbiAgZ2V0IGlzTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIFRyYWNrIHRoZSBleHBsaWNpdCBsb2FkaW5nIGRvbmUgYnkgdGhpcyBsYXllclxuICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RhdGUpICYmIHRoaXMuc3RhdGUubG9hZENvdW50ZXIgPT09IDAgJiYgc3VwZXIuaXNMb2FkZWQ7XG4gIH1cblxuICAvKiogTGV0cyBkZWNrLmdsIGtub3cgdGhhdCB3ZSB3YW50IHZpZXdwb3J0IGNoYW5nZSBldmVudHMgKi9cbiAgb3ZlcnJpZGUgc2hvdWxkVXBkYXRlU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvdmVycmlkZSBpbml0aWFsaXplU3RhdGUoKTogdm9pZCB7XG4gICAgLy8gaW50ZW50aW9uYWxseSBlbXB0eSwgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiB1cGRhdGVTdGF0ZVxuICAgIHRoaXMuc3RhdGUuX25leHRSZXF1ZXN0SWQgPSAwO1xuICAgIHRoaXMuc3RhdGUubGFzdFJlcXVlc3RJZCA9IC0xO1xuICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXIgPSAwO1xuICAgIHRoaXMuc3RhdGUuX2xhc3RSZXF1ZXN0Wm9vbSA9IC0xO1xuICB9XG5cbiAgb3ZlcnJpZGUgdXBkYXRlU3RhdGUoe2NoYW5nZUZsYWdzLCBwcm9wcywgb2xkUHJvcHN9OiBVcGRhdGVQYXJhbWV0ZXJzPHRoaXM+KTogdm9pZCB7XG4gICAgY29uc3Qge3ZpZXdwb3J0fSA9IHRoaXMuY29udGV4dDtcblxuICAgIC8vIENoZWNrIGlmIGRhdGEgc291cmNlIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkIHx8IHByb3BzLnNlcnZpY2VUeXBlICE9PSBvbGRQcm9wcy5zZXJ2aWNlVHlwZSkge1xuICAgICAgdGhpcy5zdGF0ZS5pbWFnZVNvdXJjZSA9IHRoaXMuX2NyZWF0ZUltYWdlU291cmNlKHByb3BzKTtcblxuICAgICAgdGhpcy5fbG9hZE1ldGFkYXRhKCk7XG4gICAgICB0aGlzLmRlYm91bmNlKCgpID0+IHRoaXMubG9hZEltYWdlKHZpZXdwb3J0LCAnaW1hZ2Ugc291cmNlIGNoYW5nZWQnKSwgMCk7XG4gICAgfSBlbHNlIGlmICghZGVlcEVxdWFsKHByb3BzLmxheWVycywgb2xkUHJvcHMubGF5ZXJzLCAxKSkge1xuICAgICAgdGhpcy5kZWJvdW5jZSgoKSA9PiB0aGlzLmxvYWRJbWFnZSh2aWV3cG9ydCwgJ2xheWVycyBjaGFuZ2VkJyksIDApO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlRmxhZ3Mudmlld3BvcnRDaGFuZ2VkKSB7XG4gICAgICAvLyBDaGVjayBpZiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgaXMgZW5hYmxlZCAoaW5kaWNhdGVzIHZpZGVvIHJlY29yZGluZyBvciBpbWFnZSBleHBvcnQpXG4gICAgICAvLyBVc2UgbWluaW1hbCBkZWJvdW5jZSAoMTBtcykgZHVyaW5nIGV4cG9ydCBmb3IgcmVzcG9uc2l2ZSBmcmFtZSBjYXB0dXJlXG4gICAgICAvLyBSZXF1ZXN0IGRlZHVwbGljYXRpb24gaW4gbG9hZEltYWdlIHByZXZlbnRzIHNwYW0gZnJvbSByZWR1bmRhbnQgdmlld3BvcnQgdXBkYXRlc1xuICAgICAgY29uc3QgZ2wgPSB0aGlzLmNvbnRleHQuZ2w7XG4gICAgICBjb25zdCBpc1ByZXNlcnZpbmdCdWZmZXIgPSBnbD8uZ2V0Q29udGV4dEF0dHJpYnV0ZXM/LigpPy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7XG5cbiAgICAgIGNvbnN0IGRlYm91bmNlRGVsYXkgPSBpc1ByZXNlcnZpbmdCdWZmZXIgPyAxMCA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZGVib3VuY2UoKCkgPT4gdGhpcy5sb2FkSW1hZ2Uodmlld3BvcnQsICd2aWV3cG9ydCBjaGFuZ2VkJyksIGRlYm91bmNlRGVsYXkpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHJlbmRlckxheWVycygpOiBMYXllcjxhbnk+IHtcbiAgICBjb25zdCB7Ym91bmRzLCBpbWFnZSwgbGFzdFJlcXVlc3RQYXJhbWV0ZXJzfSA9IHRoaXMuc3RhdGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgaW1hZ2UgJiZcbiAgICAgIG5ldyBCaXRtYXBMYXllcih7XG4gICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7aWQ6ICdiaXRtYXAnfSksXG4gICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06XG4gICAgICAgICAgbGFzdFJlcXVlc3RQYXJhbWV0ZXJzLnNycyA9PT0gJ0VQU0c6NDMyNidcbiAgICAgICAgICAgID8gQ09PUkRJTkFURV9TWVNURU0uTE5HTEFUXG4gICAgICAgICAgICA6IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgYm91bmRzLFxuICAgICAgICBpbWFnZSxcbiAgICAgICAgcGlja2FibGU6IHRoaXMucHJvcHMucGlja2FibGVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZlYXR1cmVJbmZvVGV4dCh4OiBudW1iZXIsIHk6IG51bWJlcik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IHtsYXN0UmVxdWVzdFBhcmFtZXRlcnN9ID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAobGFzdFJlcXVlc3RQYXJhbWV0ZXJzKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFVuZG9jdW1lbnRlZCBtZXRob2RcbiAgICAgIGNvbnN0IGZlYXR1cmVJbmZvID0gYXdhaXQgdGhpcy5zdGF0ZS5pbWFnZVNvdXJjZS5nZXRGZWF0dXJlSW5mb1RleHQ/Lih7XG4gICAgICAgIC4uLmxhc3RSZXF1ZXN0UGFyYW1ldGVycyxcbiAgICAgICAgcXVlcnlfbGF5ZXJzOiBsYXN0UmVxdWVzdFBhcmFtZXRlcnMubGF5ZXJzLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBpbmZvX2Zvcm1hdDogJ2FwcGxpY2F0aW9uL3ZuZC5vZ2MuZ21sJ1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmVhdHVyZUluZm87XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIF9jcmVhdGVJbWFnZVNvdXJjZShwcm9wczogV01TTGF5ZXJQcm9wcyk6IEltYWdlU291cmNlIHtcbiAgICBpZiAocHJvcHMuZGF0YSBpbnN0YW5jZW9mIEltYWdlU291cmNlKSB7XG4gICAgICByZXR1cm4gcHJvcHMuZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHByb3BzLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbmV3IFdNU0ltYWdlU291cmNlKHByb3BzLmRhdGEsIHtcbiAgICAgICAgbG9hZE9wdGlvbnM6IHByb3BzLmxvYWRPcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaW1hZ2Ugc291cmNlIGluIHByb3BzLmRhdGEnKTtcbiAgfVxuXG4gIC8qKiBSdW4gYSBnZXRNZXRhZGF0YSBvbiB0aGUgaW1hZ2Ugc2VydmljZSAqL1xuICBhc3luYyBfbG9hZE1ldGFkYXRhKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHtpbWFnZVNvdXJjZX0gPSB0aGlzLnN0YXRlO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnN0YXRlLmxvYWRDb3VudGVyKys7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IGltYWdlU291cmNlLmdldE1ldGFkYXRhKCk7XG5cbiAgICAgIC8vIElmIGEgcmVxdWVzdCB0YWtlcyBhIGxvbmcgdGltZSwgaXQgbWF5IG5vIGxvbmdlciBiZSBleHBlY3RlZFxuICAgICAgaWYgKHRoaXMuc3RhdGUuaW1hZ2VTb3VyY2UgPT09IGltYWdlU291cmNlKSB7XG4gICAgICAgIHRoaXMuZ2V0Q3VycmVudExheWVyKCk/LnByb3BzLm9uTWV0YWRhdGFMb2FkKG1ldGFkYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5nZXRDdXJyZW50TGF5ZXIoKT8ucHJvcHMub25NZXRhZGF0YUxvYWRFcnJvcihlcnJvciBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXItLTtcbiAgICB9XG4gIH1cblxuICAvKiogTG9hZCBhbiBpbWFnZSAqL1xuICBhc3luYyBsb2FkSW1hZ2Uodmlld3BvcnQ6IFZpZXdwb3J0LCBfcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7bGF5ZXJzLCBzZXJ2aWNlVHlwZSwgdHJhbnNwYXJlbnR9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIFRPRE8gLSBtb3ZlIHRvIEltYWdlU291cmNlP1xuICAgIGlmIChzZXJ2aWNlVHlwZSA9PT0gJ3dtcycgJiYgbGF5ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIGdsb2JlIG1vZGUgZGVjaydzIEdsb2JlVmlld3BvcnQuZ2V0Qm91bmRzKCkgb25seSB1bnByb2plY3RzIDQgZWRnZVxuICAgIC8vIG1pZHBvaW50cyBhbmQgdGFrZXMgdGhlaXIgbWluL21heC4gVGhhdCBtaXNzZXMgdGhlIHNjcmVlbiBjb3JuZXJzLCB0aGVcbiAgICAvLyBjdXJ2ZWQgbGltYiwgYW5kIChtb3N0IGltcG9ydGFudGx5KSB0aGUgY2FzZSB3aGVyZSBhIHBvbGUgaXMgaW4gdmlldyB3aGVuXG4gICAgLy8gbG9va2luZyBmcm9tIGEgaGlnaCBsYXRpdHVkZSDigJQgd2hlcmUgZXZlcnkgbWVyaWRpYW4gYW5kIHBhcnQgb2YgdGhlIGZhclxuICAgIC8vIGhlbWlzcGhlcmUgYmVjb21lIHZpc2libGUuIENvbXB1dGUgYSBmdWxsZXIgdmlzaWJsZSBib3VuZGluZyBib3ggaW5zdGVhZCBzb1xuICAgIC8vIHRoZSByZXF1ZXN0ZWQgV01TIGltYWdlIGNvdmVycyBldmVyeXRoaW5nIG9uIHNjcmVlbi5cbiAgICBjb25zdCBib3VuZHMgPSB2aWV3cG9ydC5yZXNvbHV0aW9uID8gZ2V0R2xvYmVWaXNpYmxlQm91bmRzKHZpZXdwb3J0KSA6IHZpZXdwb3J0LmdldEJvdW5kcygpO1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IHZpZXdwb3J0O1xuXG4gICAgLy8gRWRnZSBjYXNlOiB3aGVuIGJvdW5kcyBhcmUgcGVyZmVjdGx5IHN5bW1ldHJpYyBhcm91bmQgMMKwIChib3RoIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUpLFxuICAgIC8vIGl0IGNhbiBjYXVzZSByZW5kZXJpbmcgYXJ0aWZhY3RzIHdpdGggRVBTRzo0MzI2IG9uIHRoZSBnbG9iZS5cbiAgICAvLyBBZGQgYXN5bW1ldHJ5IHRvIGF2b2lkIHRoaXMgaXNzdWUuXG4gICAgaWYgKHZpZXdwb3J0LnJlc29sdXRpb24gJiYgYm91bmRzKSB7XG4gICAgICBjb25zdCBtaW5MYXQgPSBib3VuZHNbMV07XG4gICAgICBjb25zdCBtYXhMYXQgPSBib3VuZHNbM107XG4gICAgICAvLyBDaGVjayBpZiBsYXRpdHVkZSBib3VuZHMgYXJlIHN5bW1ldHJpYyBhcm91bmQgMMKwICh3aXRoaW4gMC4xwrAgdG9sZXJhbmNlKVxuICAgICAgaWYgKE1hdGguYWJzKG1pbkxhdCArIG1heExhdCkgPCAwLjEgJiYgTWF0aC5hYnMobWluTGF0KSA+IDEpIHtcbiAgICAgICAgYm91bmRzWzNdICs9IDAuMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQge3Nyc30gPSB0aGlzLnByb3BzO1xuICAgIGlmIChzcnMgPT09ICdhdXRvJykge1xuICAgICAgLy8gQml0bWFwTGF5ZXIgb25seSBzdXBwb3J0cyBMTkdMQVQgb3IgQ0FSVEVTSUFOIChXZWItTWVyY2F0b3IpXG4gICAgICBzcnMgPSB2aWV3cG9ydC5yZXNvbHV0aW9uID8gJ0VQU0c6NDMyNicgOiAnRVBTRzozODU3JztcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdFBhcmFtcyA9IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgLy8gVE9ETzogcmVtb3ZlIGJib3ggb25jZSBkZWNrLmdsIGlzIHVwZ3JhZGVkIHRvIF44LjEwIHdpdGggbG9hZGVycy5nbCBeNFxuICAgICAgYmJveDogYm91bmRzLFxuICAgICAgYm91bmRpbmdCb3g6IFtcbiAgICAgICAgW2JvdW5kc1swXSwgYm91bmRzWzFdXSxcbiAgICAgICAgW2JvdW5kc1syXSwgYm91bmRzWzNdXVxuICAgICAgXSBhcyBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV0sXG4gICAgICBsYXllcnMsXG4gICAgICBzcnMsXG4gICAgICB0cmFuc3BhcmVudFxuICAgIH07XG4gICAgaWYgKHNycyA9PT0gJ0VQU0c6Mzg1NycpIHtcbiAgICAgIGNvbnN0IFttaW5YLCBtaW5ZXSA9IFdHUzg0VG9Qc2V1ZG9NZXJjYXRvcihbYm91bmRzWzBdLCBib3VuZHNbMV1dKTtcbiAgICAgIGNvbnN0IFttYXhYLCBtYXhZXSA9IFdHUzg0VG9Qc2V1ZG9NZXJjYXRvcihbYm91bmRzWzJdLCBib3VuZHNbM11dKTtcbiAgICAgIHJlcXVlc3RQYXJhbXMuYm91bmRpbmdCb3ggPSBbXG4gICAgICAgIFttaW5YLCBtaW5ZXSxcbiAgICAgICAgW21heFgsIG1heFldXG4gICAgICBdO1xuICAgICAgLy8gVE9ETzogcmVtb3ZlIGJib3ggb25jZSBkZWNrLmdsIGlzIHVwZ3JhZGVkIHRvIF44LjEwIHdpdGggbG9hZGVycy5nbCBeNFxuICAgICAgcmVxdWVzdFBhcmFtcy5iYm94ID0gW21pblgsIG1pblksIG1heFgsIG1heFldO1xuICAgIH1cblxuICAgIC8vIFNraXAgcmVxdWVzdCBpZiBwYXJhbWV0ZXJzIGhhdmVuJ3QgbWVhbmluZ2Z1bGx5IGNoYW5nZWQgZnJvbSBhbiBpbi1mbGlnaHQgcmVxdWVzdFxuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUuaW5GbGlnaHRSZXF1ZXN0UGFyYW1ldGVycyAmJlxuICAgICAgdGhpcy5fYXJlUmVxdWVzdFBhcmFtc0VxdWFsKHRoaXMuc3RhdGUuaW5GbGlnaHRSZXF1ZXN0UGFyYW1ldGVycywgcmVxdWVzdFBhcmFtcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTa2lwIHJlcXVlc3QgaWYgdGhlIG5ldyB2aWV3IGlzIGFscmVhZHkgZnVsbHkgY292ZXJlZCBieSB0aGUgbGFzdCBDT01QTEVURUQgcmVxdWVzdFxuICAgIC8vIGF0IGNvbXBhcmFibGUgcmVzb2x1dGlvbi4gVGhpcyBpcyB2ZXJ5IGNvbW1vbiB3aGlsZSBwYW5uaW5nIChhbmQgc21hbGxcbiAgICAvLyB6b29tLWlucykgd2l0aGluIGEgbGFyZ2VyLCByZWNlbnRseSBmZXRjaGVkIGV4dGVudCDigJQgZS5nLiBvbiB0aGUgZ2xvYmUgYVxuICAgIC8vIHNpbmdsZSByZXF1ZXN0IGNhbiBjb3ZlciB0aGUgd2hvbGUgdmlzaWJsZSBoZW1pc3BoZXJlLCBzbyByb3RhdGluZyBhcm91bmQgaXRcbiAgICAvLyBzaG91bGRuJ3QgaGl0IHRoZSBuZXR3b3JrIGFnYWluLiBUaGUgZXhpc3RpbmcgaW1hZ2UgaXMgc2ltcGx5IHJlcG9zaXRpb25lZCBieVxuICAgIC8vIHRoZSBCaXRtYXBMYXllci4gV2Ugc3RpbGwgcmVmZXRjaCBvbmNlIHRoZSB1c2VyIHpvb21zIGluIGVub3VnaCB0aGF0IHRoZVxuICAgIC8vIGNhY2hlZCBpbWFnZSB3b3VsZCBiZSB2aXNpYmx5IHN0cmV0Y2hlZCAoc2VlIENPVkVSQUdFX1JFRkVUQ0hfWk9PTV9GQUNUT1IpLlxuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUubGFzdFJlcXVlc3RQYXJhbWV0ZXJzICYmXG4gICAgICB0aGlzLl9pc1ZpZXdDb3ZlcmVkQnlMYXN0UmVxdWVzdCh0aGlzLnN0YXRlLmxhc3RSZXF1ZXN0UGFyYW1ldGVycywgcmVxdWVzdFBhcmFtcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEdXJpbmcgdmlkZW8gZXhwb3J0LCB0aHJvdHRsZSB6b29tLWluIHJlcXVlc3RzIHRvIG9ubHkgZmlyZSBvbiB6b29tIGxldmVsIGNyb3NzaW5ncy5cbiAgICAvLyBUaGUgZXhpc3RpbmcgaW1hZ2UgaXMgc3RyZXRjaGVkIGJ5IHRoZSBCaXRtYXBMYXllciB1bnRpbCB0aGUgbmV4dCBsZXZlbCBpcyByZWFjaGVkLlxuICAgIC8vIEhvd2V2ZXIsIGFsd2F5cyBhbGxvdyByZXF1ZXN0cyBpZiB0aGUgbmV3IHZpZXcgaXNuJ3QgZnVsbHkgY292ZXJlZCBieSB0aGUgbGFzdCBpbWFnZS5cbiAgICBjb25zdCBnbCA9IHRoaXMuY29udGV4dC5nbDtcbiAgICBjb25zdCBpc0V4cG9ydGluZyA9IGdsPy5nZXRDb250ZXh0QXR0cmlidXRlcz8uKCk/LnByZXNlcnZlRHJhd2luZ0J1ZmZlcjtcblxuICAgIGlmIChpc0V4cG9ydGluZyAmJiB0aGlzLnN0YXRlLl9sYXN0UmVxdWVzdFpvb20gPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudFpvb20gPSB2aWV3cG9ydC56b29tO1xuICAgICAgY29uc3QgbGFzdFpvb20gPSB0aGlzLnN0YXRlLl9sYXN0UmVxdWVzdFpvb207XG4gICAgICBjb25zdCBpc1pvb21pbmdJbiA9IGN1cnJlbnRab29tID4gbGFzdFpvb207XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBuZXcgdmlldyBpcyBmdWxseSBjb3ZlcmVkIGJ5IHRoZSBsYXN0IGxvYWRlZCBpbWFnZVxuICAgICAgY29uc3QgbGFzdEJib3ggPSB0aGlzLnN0YXRlLmxhc3RSZXF1ZXN0UGFyYW1ldGVycz8uYmJveDtcbiAgICAgIGNvbnN0IGN1cnJlbnRCYm94ID0gcmVxdWVzdFBhcmFtcy5iYm94O1xuICAgICAgbGV0IGZ1bGx5Q29udGFpbmVkID0gZmFsc2U7XG5cbiAgICAgIGlmIChsYXN0QmJveCAmJiBjdXJyZW50QmJveCkge1xuICAgICAgICAvLyBOZXcgYmJveCBtdXN0IGJlIGZ1bGx5IGluc2lkZSB0aGUgcHJldmlvdXMgYmJveFxuICAgICAgICBmdWxseUNvbnRhaW5lZCA9XG4gICAgICAgICAgY3VycmVudEJib3hbMF0gPj0gbGFzdEJib3hbMF0gJiZcbiAgICAgICAgICBjdXJyZW50QmJveFsxXSA+PSBsYXN0QmJveFsxXSAmJlxuICAgICAgICAgIGN1cnJlbnRCYm94WzJdIDw9IGxhc3RCYm94WzJdICYmXG4gICAgICAgICAgY3VycmVudEJib3hbM10gPD0gbGFzdEJib3hbM107XG4gICAgICB9XG5cbiAgICAgIC8vIE9ubHkgdGhyb3R0bGUgaWY6XG4gICAgICAvLyAxLiBab29taW5nIGluIChub3Qgem9vbWluZyBvdXQgb3IgcGFubmluZyBhdCBzYW1lIHpvb20pXG4gICAgICAvLyAyLiBTYW1lIHpvb20gZmxvb3IgKGhhdmVuJ3QgY3Jvc3NlZCBhbiBpbnRlZ2VyIHpvb20gbGV2ZWwpXG4gICAgICAvLyAzLiBOZXcgdmlldyBpcyBmdWxseSBjb250YWluZWQgaW4gdGhlIGxhc3QgbG9hZGVkIGltYWdlIChubyB1bmNvdmVyZWQgYXJlYXMpXG4gICAgICBpZiAoaXNab29taW5nSW4gJiYgTWF0aC5mbG9vcihjdXJyZW50Wm9vbSkgPT09IE1hdGguZmxvb3IobGFzdFpvb20pICYmIGZ1bGx5Q29udGFpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYXJrIHJlcXVlc3QgYXMgaW4tZmxpZ2h0IHRvIHByZXZlbnQgZHVwbGljYXRlIHJlcXVlc3RzXG4gICAgdGhpcy5zdGF0ZS5pbkZsaWdodFJlcXVlc3RQYXJhbWV0ZXJzID0gcmVxdWVzdFBhcmFtcztcblxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuZ2V0UmVxdWVzdElkKCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXIrKztcbiAgICAgIC8vIFRyaWdnZXIgYSByZWRyYXcgdG8gdXBkYXRlIHRoZSBVSSBsb2FkaW5nIGluZGljYXRvclxuICAgICAgdGhpcy5zZXROZWVkc1JlZHJhdygpO1xuICAgICAgdGhpcy5wcm9wcy5vbkltYWdlTG9hZFN0YXJ0KHJlcXVlc3RJZCk7XG5cbiAgICAgIGNvbnN0IGltYWdlID0gYXdhaXQgdGhpcy5zdGF0ZS5pbWFnZVNvdXJjZS5nZXRJbWFnZShyZXF1ZXN0UGFyYW1zKTtcblxuICAgICAgLy8gSWYgYSByZXF1ZXN0IHRha2VzIGEgbG9uZyB0aW1lLCBsYXRlciByZXF1ZXN0cyBtYXkgaGF2ZSBhbHJlYWR5IGxvYWRlZC5cbiAgICAgIGlmICh0aGlzLnN0YXRlLmxhc3RSZXF1ZXN0SWQgPCByZXF1ZXN0SWQpIHtcbiAgICAgICAgdGhpcy5nZXRDdXJyZW50TGF5ZXIoKT8ucHJvcHMub25JbWFnZUxvYWQocmVxdWVzdElkKTtcbiAgICAgICAgLy8gVXBkYXRlIGxhc3RSZXF1ZXN0UGFyYW1ldGVycyBvbmx5IGFmdGVyIHN1Y2Nlc3NmdWwgbG9hZFxuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgY292ZXJhZ2UgY2hlY2tzIG9ubHkgdXNlIHN1Y2Nlc3NmdWxseSBsb2FkZWQgaW1hZ2VzXG4gICAgICAgIHRoaXMuc3RhdGUubGFzdFJlcXVlc3RQYXJhbWV0ZXJzID0gcmVxdWVzdFBhcmFtcztcbiAgICAgICAgdGhpcy5zdGF0ZS5fbGFzdFJlcXVlc3Rab29tID0gdmlld3BvcnQuem9vbTtcbiAgICAgICAgLy8gTm90IHR5cGUgc2FmZS4uLlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpbWFnZSxcbiAgICAgICAgICBib3VuZHMsXG4gICAgICAgICAgbGFzdFJlcXVlc3RJZDogcmVxdWVzdElkXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmNvbnRleHQub25FcnJvcj8uKGVycm9yIGFzIEVycm9yLCB0aGlzKTtcbiAgICAgIHRoaXMuZ2V0Q3VycmVudExheWVyKCk/LnByb3BzLm9uSW1hZ2VMb2FkRXJyb3IocmVxdWVzdElkLCBlcnJvciBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFyIGluLWZsaWdodCBtYXJrZXIgd2hlbiByZXF1ZXN0IGNvbXBsZXRlcyAoc3VjY2VzcyBvciBlcnJvcilcbiAgICAgIHRoaXMuc3RhdGUuaW5GbGlnaHRSZXF1ZXN0UGFyYW1ldGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RhdGUubG9hZENvdW50ZXItLTtcbiAgICAgIC8vIFRyaWdnZXIgYSByZWRyYXcgdG8gdXBkYXRlIHRoZSBVSSBsb2FkaW5nIGluZGljYXRvclxuICAgICAgdGhpcy5zZXROZWVkc1JlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhFTFBFUlNcblxuICAvKiogR2xvYmFsIGNvdW50ZXIgZm9yIGlzc3VpbmcgdW5pcXVlIHJlcXVlc3QgaWRzICovXG4gIHByaXZhdGUgZ2V0UmVxdWVzdElkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX25leHRSZXF1ZXN0SWQrKztcbiAgfVxuXG4gIC8qKiBSdW5zIGFuIGFjdGlvbiBpbiB0aGUgZnV0dXJlLCBjYW5jZWxzIGl0IGlmIHRoZSBuZXcgYWN0aW9uIGlzIGlzc3VlZCBiZWZvcmUgaXQgZXhlY3V0ZXMgKi9cbiAgcHJpdmF0ZSBkZWJvdW5jZShmbjogKCkgPT4gdm9pZCwgbXMgPSA1MDApOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zdGF0ZS5fdGltZW91dElkKTtcbiAgICB0aGlzLnN0YXRlLl90aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGZuKCksIG1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgd2hlbiB0aGUgYG5leHRgIHZpZXcgaXMgZnVsbHkgaW5zaWRlIHRoZSBgcHJldmAgKGxhc3QgcmVxdWVzdGVkKVxuICAgKiBleHRlbnQgQU5EIG5vdCBtZWFuaW5nZnVsbHkgaGlnaGVyIHJlc29sdXRpb24sIHNvIHRoZSBjYWNoZWQgaW1hZ2UgYWxyZWFkeVxuICAgKiBjb3ZlcnMgdGhlIHNjcmVlbiBhbmQgbm8gbmV3IHJlcXVlc3QgaXMgbmVlZGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNWaWV3Q292ZXJlZEJ5TGFzdFJlcXVlc3QocHJldjogYW55LCBuZXh0OiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBDb3ZlcmFnZSBvbmx5IG1ha2VzIHNlbnNlIHdpdGhpbiB0aGUgc2FtZSBwcm9qZWN0aW9uIC8gZGF0YXNldCAvIGNhbnZhcyBzaXplLlxuICAgIGlmIChcbiAgICAgIHByZXYuc3JzICE9PSBuZXh0LnNycyB8fFxuICAgICAgcHJldi53aWR0aCAhPT0gbmV4dC53aWR0aCB8fFxuICAgICAgcHJldi5oZWlnaHQgIT09IG5leHQuaGVpZ2h0IHx8XG4gICAgICBwcmV2LnRyYW5zcGFyZW50ICE9PSBuZXh0LnRyYW5zcGFyZW50IHx8XG4gICAgICAhZGVlcEVxdWFsKHByZXYubGF5ZXJzLCBuZXh0LmxheWVycylcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwID0gcHJldi5iYm94O1xuICAgIGNvbnN0IG4gPSBuZXh0LmJib3g7XG4gICAgaWYgKCFwIHx8ICFuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSXMgdGhlIG5ldyBiYm94IGZ1bGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhlIHByZXZpb3VzbHkgcmVxdWVzdGVkIGJib3g/XG4gICAgY29uc3QgY29udGFpbmVkID0gblswXSA+PSBwWzBdICYmIG5bMV0gPj0gcFsxXSAmJiBuWzJdIDw9IHBbMl0gJiYgblszXSA8PSBwWzNdO1xuXG4gICAgaWYgKCFjb250YWluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBHcm91bmQgcmVzb2x1dGlvbiBpcyBwcm9wb3J0aW9uYWwgdG8gYmJveCBzcGFuIC8gcGl4ZWwgY291bnQuIFRoZSBndWFyZFxuICAgIC8vIGFib3ZlIGFscmVhZHkgZW5zdXJlZCBwcmV2IGFuZCBuZXh0IHNoYXJlIHRoZSBzYW1lIHdpZHRoL2hlaWdodCwgc28gZXF1YWxcbiAgICAvLyBwaXhlbCBjb3VudHMgbGV0IHVzIGNvbXBhcmUgc3BhbnMgZGlyZWN0bHkuIE9ubHkgc2tpcCB3aGlsZSB0aGUgbmV3IHZpZXdcbiAgICAvLyBpc24ndCBtdWNoIGZpbmVyIHRoYW4gd2hhdCB3ZSBhbHJlYWR5IGZldGNoZWQsIG90aGVyd2lzZSB0aGUgY2FjaGVkIGltYWdlXG4gICAgLy8gd291bGQgbG9vayBzdHJldGNoZWQvYmx1cnJ5LlxuICAgIGNvbnN0IHByZXZTcGFuWCA9IHBbMl0gLSBwWzBdO1xuICAgIGNvbnN0IG5leHRTcGFuWCA9IG5bMl0gLSBuWzBdO1xuICAgIGNvbnN0IHByZXZTcGFuWSA9IHBbM10gLSBwWzFdO1xuICAgIGNvbnN0IG5leHRTcGFuWSA9IG5bM10gLSBuWzFdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIG5leHRTcGFuWCA+PSBwcmV2U3BhblggLyBDT1ZFUkFHRV9SRUZFVENIX1pPT01fRkFDVE9SICYmXG4gICAgICBuZXh0U3BhblkgPj0gcHJldlNwYW5ZIC8gQ09WRVJBR0VfUkVGRVRDSF9aT09NX0ZBQ1RPUlxuICAgICk7XG4gIH1cblxuICAvKiogQ29tcGFyZSByZXF1ZXN0IHBhcmFtZXRlcnMgdG8gZGV0ZXJtaW5lIGlmIGEgbmV3IHJlcXVlc3QgaXMgbmVlZGVkICovXG4gIHByaXZhdGUgX2FyZVJlcXVlc3RQYXJhbXNFcXVhbChwcmV2OiBhbnksIG5leHQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIENvbXBhcmUgZGltZW5zaW9uc1xuICAgIGlmIChwcmV2LndpZHRoICE9PSBuZXh0LndpZHRoIHx8IHByZXYuaGVpZ2h0ICE9PSBuZXh0LmhlaWdodCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbXBhcmUgU1JTXG4gICAgaWYgKHByZXYuc3JzICE9PSBuZXh0LnNycykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbXBhcmUgbGF5ZXJzXG4gICAgaWYgKCFkZWVwRXF1YWwocHJldi5sYXllcnMsIG5leHQubGF5ZXJzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbXBhcmUgdHJhbnNwYXJlbnRcbiAgICBpZiAocHJldi50cmFuc3BhcmVudCAhPT0gbmV4dC50cmFuc3BhcmVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbXBhcmUgYm91bmRzIHdpdGggdG9sZXJhbmNlIGZvciBmbG9hdGluZyBwb2ludCBwcmVjaXNpb25cbiAgICBjb25zdCB0b2xlcmFuY2UgPSAxZS0xMDtcbiAgICBjb25zdCBwcmV2QmJveCA9IHByZXYuYmJveDtcbiAgICBjb25zdCBuZXh0QmJveCA9IG5leHQuYmJveDtcblxuICAgIGlmIChwcmV2QmJveCAmJiBuZXh0QmJveCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKHByZXZCYm94W2ldIC0gbmV4dEJib3hbaV0pID4gdG9sZXJhbmNlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wdXRlIHRoZSBbbWluTG5nLCBtaW5MYXQsIG1heExuZywgbWF4TGF0XSBib3VuZGluZyBib3ggb2YgdGhlIHBhcnQgb2YgdGhlXG4gKiBnbG9iZSB0aGF0IGlzIGFjdHVhbGx5IHZpc2libGUgb24gc2NyZWVuLlxuICpcbiAqIFVubGlrZSBgR2xvYmVWaWV3cG9ydC5nZXRCb3VuZHMoKWAgKDQgZWRnZSBtaWRwb2ludHMpLCB0aGlzIHNhbXBsZXMgYSBncmlkIG9mXG4gKiBzY3JlZW4gcGl4ZWxzLCB1bnByb2plY3RzIGVhY2ggb250byB0aGUgc3BoZXJlIChkZWNrLmdsIGNsYW1wcyByYXlzIHRoYXQgbWlzc1xuICogdGhlIGdsb2JlIHRvIHRoZSBzaWxob3VldHRlL2xpbWIsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGJvdW5kYXJ5IHdlIHdhbnQpLCBhbmRcbiAqIHRha2VzIHRoZSBleHRlbnQuIEl0IGFkZGl0aW9uYWxseSBkZXRlY3RzIHdoZW4gYSBwb2xlIGlzIGluIHZpZXc6IGF0IGEgcG9sZSBhbGxcbiAqIG1lcmlkaWFucyBjb252ZXJnZSwgc28gd2Ugd2lkZW4gdGhlIGJveCB0byB0aGUgZnVsbCBsb25naXR1ZGUgcmFuZ2UgYW5kIGV4dGVuZFxuICogdGhlIGxhdGl0dWRlIHVwIHRvIHRoZSBwb2xlLCB3aGljaCBpcyB3aGF0IG1ha2VzIHZpZXdpbmcgZnJvbSBuZWFyIGEgcG9sZVxuICogKHNlZWluZyBhY3Jvc3MgdG8gdGhlIGZhciBoZW1pc3BoZXJlKSB3b3JrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmVWaXNpYmxlQm91bmRzKHZpZXdwb3J0OiBWaWV3cG9ydCk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdmlld3BvcnQ7XG4gIGNvbnN0IGNlbnRlckxuZyA9ICh2aWV3cG9ydCBhcyBhbnkpLmxvbmdpdHVkZSA/PyAwO1xuXG4gIGNvbnN0IFNBTVBMRVMgPSA4OyAvLyA4eDggY2VsbHMgPT4gOXg5ID0gODEgc2FtcGxlIHBvaW50c1xuICBjb25zdCBsYXRzOiBudW1iZXJbXSA9IFtdO1xuICAvLyBMb25naXR1ZGVzIHRyYWNrZWQgYXMgc2lnbmVkIG9mZnNldHMgZnJvbSB0aGUgY2VudGVyIGxvbmdpdHVkZSwgdW53cmFwcGVkIHRvXG4gIC8vICgtMTgwLCAxODBdLCBzbyBhbiBhbnRpbWVyaWRpYW4tY3Jvc3NpbmcgdmlldyBzdGF5cyBhIGNvbnRpZ3VvdXMgcmFuZ2UuXG4gIGNvbnN0IGxuZ09mZnNldHM6IG51bWJlcltdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPD0gU0FNUExFUzsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPD0gU0FNUExFUzsgaisrKSB7XG4gICAgICBjb25zdCBweCA9IChpIC8gU0FNUExFUykgKiB3aWR0aDtcbiAgICAgIGNvbnN0IHB5ID0gKGogLyBTQU1QTEVTKSAqIGhlaWdodDtcbiAgICAgIGNvbnN0IGNvb3JkID0gdmlld3BvcnQudW5wcm9qZWN0KFtweCwgcHldKTtcbiAgICAgIGNvbnN0IGxuZyA9IGNvb3JkWzBdO1xuICAgICAgY29uc3QgbGF0ID0gY29vcmRbMV07XG4gICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShsbmcpIHx8ICFOdW1iZXIuaXNGaW5pdGUobGF0KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxhdHMucHVzaChsYXQpO1xuICAgICAgLy8gV3JhcCB0aGUgb2Zmc2V0IGludG8gKC0xODAsIDE4MF0uXG4gICAgICBjb25zdCBvZmZzZXQgPSAoKGxuZyAtIGNlbnRlckxuZyArIDU0MCkgJSAzNjApIC0gMTgwO1xuICAgICAgbG5nT2Zmc2V0cy5wdXNoKG9mZnNldCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRXh0cmVtZWx5IGRlZ2VuZXJhdGUgdmlld3BvcnQ6IGZhbGwgYmFjayB0byBkZWNrJ3MgZGVmYXVsdC5cbiAgaWYgKGxhdHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHZpZXdwb3J0LmdldEJvdW5kcygpO1xuICB9XG5cbiAgbGV0IG1pbkxhdCA9IE1hdGgubWluKC4uLmxhdHMpO1xuICBsZXQgbWF4TGF0ID0gTWF0aC5tYXgoLi4ubGF0cyk7XG5cbiAgY29uc3Qgbm9ydGhQb2xlVmlzaWJsZSA9IGlzR2xvYmVTdXJmYWNlUG9pbnRWaXNpYmxlKHZpZXdwb3J0LCA5MCk7XG4gIGNvbnN0IHNvdXRoUG9sZVZpc2libGUgPSBpc0dsb2JlU3VyZmFjZVBvaW50VmlzaWJsZSh2aWV3cG9ydCwgLTkwKTtcblxuICBsZXQgbWluTG5nOiBudW1iZXI7XG4gIGxldCBtYXhMbmc6IG51bWJlcjtcblxuICBpZiAobm9ydGhQb2xlVmlzaWJsZSB8fCBzb3V0aFBvbGVWaXNpYmxlKSB7XG4gICAgLy8gQSBwb2xlIGlzIG9uIHNjcmVlbjogZXZlcnkgbWVyaWRpYW4gaXMgdmlzaWJsZSwgc28gY292ZXIgYWxsIGxvbmdpdHVkZXMgYW5kXG4gICAgLy8gZXh0ZW5kIGxhdGl0dWRlIHVwIHRvIHRoZSB2aXNpYmxlIHBvbGUuXG4gICAgbWluTG5nID0gLTE4MDtcbiAgICBtYXhMbmcgPSAxODA7XG4gICAgaWYgKG5vcnRoUG9sZVZpc2libGUpIHtcbiAgICAgIG1heExhdCA9IDkwO1xuICAgIH1cbiAgICBpZiAoc291dGhQb2xlVmlzaWJsZSkge1xuICAgICAgbWluTGF0ID0gLTkwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtaW5MbmcgPSBjZW50ZXJMbmcgKyBNYXRoLm1pbiguLi5sbmdPZmZzZXRzKTtcbiAgICBtYXhMbmcgPSBjZW50ZXJMbmcgKyBNYXRoLm1heCguLi5sbmdPZmZzZXRzKTtcbiAgfVxuXG4gIC8vIFBhZCBzbGlnaHRseSBzbyB0aGUgZGlzY3JldGUgc2FtcGxpbmcgZG9lc24ndCBjbGlwIHRoZSB0cnVlIGxpbWIuXG4gIGNvbnN0IGxhdFBhZCA9IE1hdGgubWluKDUsIChtYXhMYXQgLSBtaW5MYXQpICogMC4wNSArIDAuNSk7XG4gIG1pbkxhdCA9IE1hdGgubWF4KC05MCwgbWluTGF0IC0gbGF0UGFkKTtcbiAgbWF4TGF0ID0gTWF0aC5taW4oOTAsIG1heExhdCArIGxhdFBhZCk7XG5cbiAgaWYgKG1heExuZyAtIG1pbkxuZyA8IDM2MCkge1xuICAgIGNvbnN0IGxuZ1BhZCA9IE1hdGgubWluKDUsIChtYXhMbmcgLSBtaW5MbmcpICogMC4wNSArIDAuNSk7XG4gICAgbWluTG5nIC09IGxuZ1BhZDtcbiAgICBtYXhMbmcgKz0gbG5nUGFkO1xuICB9XG5cbiAgLy8gQSBzaW5nbGUgRVBTRzo0MzI2IHJlY3RhbmdsZSBjYW4ndCBjcm9zcyB0aGUgYW50aW1lcmlkaWFuLCBzbyBpZiB0aGUgdmlzaWJsZVxuICAvLyBzcGFuIHdyYXBzIHBhc3QgwrExODAgKG9yIGNvdmVycyB0aGUgd2hvbGUgd29ybGQpIHJlcXVlc3QgdGhlIGZ1bGwgbG9uZ2l0dWRlXG4gIC8vIHJhbmdlLiBUaGlzIG92ZXItY292ZXJzIG9ubHkgbmVhciB0aGUgZGF0ZWxpbmUsIHdoaWNoIGlzIGFuIGFjY2VwdGFibGVcbiAgLy8gdHJhZGUtb2ZmIGZvciBhIHZhbGlkLCBnYXAtZnJlZSByZXF1ZXN0LlxuICBpZiAobWF4TG5nIC0gbWluTG5nID49IDM2MCB8fCBtaW5MbmcgPCAtMTgwIHx8IG1heExuZyA+IDE4MCkge1xuICAgIG1pbkxuZyA9IC0xODA7XG4gICAgbWF4TG5nID0gMTgwO1xuICB9XG5cbiAgcmV0dXJuIFttaW5MbmcsIG1pbkxhdCwgbWF4TG5nLCBtYXhMYXRdO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBwb2ludCBvbiB0aGUgZ2xvYmUgc3VyZmFjZSBhdCB0aGUgZ2l2ZW4gbGF0aXR1ZGUgKGxvbmdpdHVkZSBpc1xuICogaXJyZWxldmFudCBhdCB0aGUgcG9sZXMpIGlzIGJvdGggZnJvbnQtZmFjaW5nIChub3Qgb2NjbHVkZWQgYnkgdGhlIGdsb2JlKSBhbmRcbiAqIGluc2lkZSB0aGUgc2NyZWVuLiBVc2VzIHRoZSBzcGhlcmUtaG9yaXpvbiB0ZXN0IGluIGRlY2suZ2wgY29tbW9uIHNwYWNlOlxuICogYSBzdXJmYWNlIHBvaW50IGlzIGZyb250LWZhY2luZyB3aGVuIHRoZSBhbmdsZSBiZXR3ZWVuIGl0cyBvdXR3YXJkIG5vcm1hbCBhbmRcbiAqIHRoZSBjYW1lcmEgZGlyZWN0aW9uIGlzIHdpdGhpbiB0aGUgaG9yaXpvbiBoYWxmLWFuZ2xlLCBpLmUuXG4gKiAgIGRvdChub3JtYWxpemUocG9pbnRDb21tb24pLCBub3JtYWxpemUoY2FtZXJhUG9zaXRpb24pKSA+PSByYWRpdXMgLyBjYW1lcmFEaXN0XG4gKi9cbmZ1bmN0aW9uIGlzR2xvYmVTdXJmYWNlUG9pbnRWaXNpYmxlKHZpZXdwb3J0OiBWaWV3cG9ydCwgbGF0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdmlld3BvcnQ7XG4gIGNvbnN0IHBvaW50ID0gdmlld3BvcnQucHJvamVjdFBvc2l0aW9uKFswLCBsYXQsIDBdKTtcbiAgY29uc3QgY2FtZXJhID0gdmlld3BvcnQuY2FtZXJhUG9zaXRpb247XG5cbiAgY29uc3QgclBvaW50ID0gTWF0aC5oeXBvdChwb2ludFswXSwgcG9pbnRbMV0sIHBvaW50WzJdKTtcbiAgY29uc3QgckNhbSA9IE1hdGguaHlwb3QoY2FtZXJhWzBdLCBjYW1lcmFbMV0sIGNhbWVyYVsyXSk7XG4gIGlmIChyUG9pbnQgPT09IDAgfHwgckNhbSA9PT0gMCB8fCByQ2FtIDw9IHJQb2ludCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvc1N1cmZhY2UgPVxuICAgIChwb2ludFswXSAqIGNhbWVyYVswXSArIHBvaW50WzFdICogY2FtZXJhWzFdICsgcG9pbnRbMl0gKiBjYW1lcmFbMl0pIC8gKHJQb2ludCAqIHJDYW0pO1xuICBjb25zdCBjb3NIb3Jpem9uID0gclBvaW50IC8gckNhbTtcbiAgaWYgKGNvc1N1cmZhY2UgPCBjb3NIb3Jpem9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc2NyZWVuID0gdmlld3BvcnQucHJvamVjdChbMCwgbGF0LCAwXSk7XG4gIHJldHVybiBzY3JlZW5bMF0gPj0gMCAmJiBzY3JlZW5bMF0gPD0gd2lkdGggJiYgc2NyZWVuWzFdID49IDAgJiYgc2NyZWVuWzFdIDw9IGhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9lcHNnLmlvLzM4NTdcbi8vICtwcm9qPW1lcmMgK2E9NjM3ODEzNyArYj02Mzc4MTM3ICtsYXRfdHM9MCArbG9uXzA9MCAreF8wPTAgK3lfMD0wICtrPTEgK3VuaXRzPW0gK25hZGdyaWRzPUBudWxsICt3a3RleHQgK25vX2RlZnMgK3R5cGU9Y3JzXG5jb25zdCBIQUxGX0VBUlRIX0NJUkNVTUZFUkVOQ0UgPSA2Mzc4MTM3ICogTWF0aC5QSTtcblxuLyoqIFByb2plY3RzIEVQU0c6NDMyNiB0byBFUFNHOjM4NTdcbiAqIFRoaXMgaXMgYSBsaWdodHdlaWdodCByZXBsYWNlbWVudCBvZiBwcm9qNC4gVXNlIHRlc3RzIHRvIGVuc3VyZSBjb25mb3JtYW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFdHUzg0VG9Qc2V1ZG9NZXJjYXRvcihjb29yZDogW251bWJlciwgbnVtYmVyXSk6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBtZXJjYXRvciA9IGxuZ0xhdFRvV29ybGQoY29vcmQpO1xuICBtZXJjYXRvclswXSA9IChtZXJjYXRvclswXSAvIDI1NiAtIDEpICogSEFMRl9FQVJUSF9DSVJDVU1GRVJFTkNFO1xuICBtZXJjYXRvclsxXSA9IChtZXJjYXRvclsxXSAvIDI1NiAtIDEpICogSEFMRl9FQVJUSF9DSVJDVU1GRVJFTkNFO1xuICByZXR1cm4gbWVyY2F0b3I7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxZQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFVQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxJQUFBLEdBQUFILE9BQUE7QUFBNEQsU0FBQUksUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENB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
|
|
@@ -332,4 +332,4 @@ export var getGlobeHugeHaloLayer = function getGlobeHugeHaloLayer(_ref6) {
|
|
|
332
332
|
parameters: HUGE_HALO_PARAMETERS
|
|
333
333
|
});
|
|
334
334
|
};
|
|
335
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT09SRElOQVRFX1NZU1RFTSIsIlNpbXBsZU1lc2hMYXllciIsIlNwaGVyZUdlb21ldHJ5IiwiVmVjdG9yMyIsImdldFN1blBvc2l0aW9uIiwiREVGQVVMVF9HTE9CRV9DT05GSUciLCJ0b1JhZGlhbnMiLCJkZWdyZWVzIiwiTWF0aCIsIlBJIiwiYW5nbGVUb1ZlYyIsImFuZ2xlIiwic2luIiwiY29zIiwiYW5nbGVUb1N1blBvcyIsIm5vcm1hbGl6ZSIsIkdMT0JFX01FU0hfSU5ORVIiLCJyYWRpdXMiLCJubGF0IiwibmxvbmciLCJHTE9CRV9NRVNIX09VVEVSIiwiR0xPQkVfTUVTSF9IVUdFX0hBTE8iLCJsb24iLCJsYXQiLCJzdW5Qb3NOb3ciLCJEYXRlIiwibm93IiwidjNTdW5Qb3NOb3ciLCJhemltdXRoIiwiTlVNX1NBTVBMRV9SQVlTIiwiQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQiLCJBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQiLCJhdG1vc3BoZXJlWm9vbUZhZGUiLCJ6b29tIiwidCIsIkFUTU9TUEhFUkVfVU5JRk9STVMiLCJ2M1N1blBvcyIsImV4cG9zdXJlIiwiZlNhbXBsZXMiLCJnIiwiZktyRVN1biIsImZLbUVTdW4iLCJmS3I0UEkiLCJmS200UEkiLCJmU2NhbGVEZXB0aCIsImZJbm5lclJhZGl1cyIsImZPdXRlclJhZGl1cyIsImZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yIiwiZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yIiwiQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljIiwiX1NpbXBsZU1lc2hMYXllciIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJhcmd1bWVudHMiLCJfaW5oZXJpdHMiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsImRyYXciLCJfcmVmIiwidW5pZm9ybXMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY29uZmlnIiwiem9vbUZhZGUiLCJtb2RlbCIsInN0YXRlIiwiX29iamVjdFNwcmVhZCIsInRlcm1pbmF0b3IiLCJ0ZXJtaW5hdG9yT3BhY2l0eSIsImF6aW11dGhBbmdsZSIsImZBdG1vc3BoZXJlWm9vbUZhZGUiLCJfc3VwZXJQcm9wR2V0IiwiZ2V0U2hhZGVycyIsImluamVjdCIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsIkF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyIsIl9TaW1wbGVNZXNoTGF5ZXIyIiwiX3JlZjIiLCJfdGhpcyRwcm9wczIiLCJBVE1PU1BIRVJFX1BBUkFNRVRFUlMiLCJkZXB0aFRlc3QiLCJibGVuZEZ1bmMiLCJibGVuZEVxdWF0aW9uIiwiQVRNT1NQSEVSRV9TS1lfUEFSQU1FVEVSUyIsImN1bGxGYWNlIiwiZGVwdGhNYXNrIiwiSFVHRV9IQUxPX0lOTkVSX1JBRElVUyIsIkhVR0VfSEFMT19CQVNFX09VVEVSX1JBRElVUyIsIkhVR0VfSEFMT19CQVNFX1NIRUxMIiwiSFVHRV9IQUxPX1JBRElVU19NQVgiLCJIVUdFX0hBTE9fVU5JRk9STVMiLCJ2M0hhbG9Db2xvciIsImZIYWxvSW50ZW5zaXR5IiwiSFVHRV9IQUxPX1BBUkFNRVRFUlMiLCJyZXNvbHZlSHVnZUhhbG9SYWRpdXMiLCJtdWx0aXBsaWVyIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJodWdlSGFsb1JhZGl1cyIsIm1heCIsIm1pbiIsInJlc29sdmVIdWdlSGFsb09wYWNpdHkiLCJvcGFjaXR5IiwiaHVnZUhhbG9PcGFjaXR5IiwiQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIiLCJfU2ltcGxlTWVzaExheWVyMyIsIl9yZWYzIiwiX3RoaXMkcHJvcHMzIiwiZkhhbG9PcGFjaXR5IiwiZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIiLCJfcmVmNCIsImlkIiwiZGF0YSIsImNvb3JkaW5hdGVPcmlnaW4iLCJjb29yZGluYXRlU3lzdGVtIiwiQ0FSVEVTSUFOIiwiZ2V0UG9zaXRpb24iLCJkIiwiZ2V0Q29sb3IiLCJtZXNoIiwicGFyYW1ldGVycyIsImdldEdsb2JlQXRtb3NwaGVyZVNreUxheWVyIiwiX3JlZjUiLCJnZXRHbG9iZUh1Z2VIYWxvTGF5ZXIiLCJfcmVmNiIsImh1Z2VIYWxvIiwib3V0ZXJSYWRpdXMiLCJzaXplU2NhbGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmUvYXRtb3NwaGVyZS1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBTaGFkZXJzIHBvcnRlZCBmcm9tIGlUb3ducywgYmFzZWQgb24gU2VhbiBPJ05laWwncyBhcHByb2FjaCBpbiBHUFUgR2VtcyAyXG4vLyBTRUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pVG93bnMvaXRvd25zL2Jsb2IvbWFzdGVyL3NyYy9Db3JlL1ByZWZhYi9HbG9iZS9BdG1vc3BoZXJlLmpzXG4vLyBTRUU6IGh0dHBzOi8vZGV2ZWxvcGVyLm52aWRpYS5jb20vZ3B1Z2Vtcy9ncHVnZW1zMi9wYXJ0LWlpLXNoYWRpbmctbGlnaHRpbmctYW5kLXNoYWRvd3MvY2hhcHRlci0xNi1hY2N1cmF0ZS1hdG1vc3BoZXJpYy1zY2F0dGVyaW5nXG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU19IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTaW1wbGVNZXNoTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL21lc2gtbGF5ZXJzJztcbmltcG9ydCB7U3BoZXJlR2VvbWV0cnl9IGZyb20gJ0BsdW1hLmdsL2VuZ2luZSc7XG5pbXBvcnQge1ZlY3RvcjN9IGZyb20gJ0BtYXRoLmdsL2NvcmUnO1xuaW1wb3J0IHtnZXRTdW5Qb3NpdGlvbn0gZnJvbSAnQG1hdGguZ2wvc3VuJztcblxuaW1wb3J0IHtERUZBVUxUX0dMT0JFX0NPTkZJRywgdHlwZSBHbG9iZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCB0b1JhZGlhbnMgPSAoZGVncmVlczogbnVtYmVyKTogbnVtYmVyID0+IChkZWdyZWVzICogTWF0aC5QSSkgLyAxODA7XG5cbmNvbnN0IGFuZ2xlVG9WZWMgPSAoYW5nbGU6IG51bWJlcik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9PiB7XG4gIHJldHVybiBbTWF0aC5zaW4oYW5nbGUpLCBNYXRoLmNvcyhhbmdsZSksIDBdO1xufTtcblxuY29uc3QgYW5nbGVUb1N1blBvcyA9IChhbmdsZTogbnVtYmVyKTogbnVtYmVyW10gPT4ge1xuICByZXR1cm4gbmV3IFZlY3RvcjMoYW5nbGVUb1ZlYyhhbmdsZSkpLm5vcm1hbGl6ZSgpIGFzIHVua25vd24gYXMgbnVtYmVyW107XG59O1xuXG5jb25zdCBHTE9CRV9NRVNIX0lOTkVSID0gbmV3IFNwaGVyZUdlb21ldHJ5KHtcbiAgcmFkaXVzOiA2LjRlNixcbiAgbmxhdDogMTAwLFxuICBubG9uZzogMTAwXG59KTtcblxuY29uc3QgR0xPQkVfTUVTSF9PVVRFUiA9IG5ldyBTcGhlcmVHZW9tZXRyeSh7XG4gIHJhZGl1czogNi43ZTYsXG4gIG5sYXQ6IDEwMCxcbiAgbmxvbmc6IDEwMFxufSk7XG5cbi8vIH4xNCUgbGFyZ2VyIHRoYW4gdGhlIGdsb2JlIHN1cmZhY2UgbWVzaCDigJQgeWllbGRzIGEgdGhpY2sgc29mdCBhdXJhICh+MC4x4oCTMC4xNVIpLlxuY29uc3QgR0xPQkVfTUVTSF9IVUdFX0hBTE8gPSBuZXcgU3BoZXJlR2VvbWV0cnkoe1xuICByYWRpdXM6IDcuM2U2LFxuICBubGF0OiAxMDAsXG4gIG5sb25nOiAxMDBcbn0pO1xuXG5jb25zdCBbbG9uLCBsYXRdID0gWzAsIDkwXTtcbmNvbnN0IHN1blBvc05vdyA9IGdldFN1blBvc2l0aW9uKERhdGUubm93KCksIGxhdCwgbG9uKTtcbmNvbnN0IHYzU3VuUG9zTm93ID0gYW5nbGVUb1N1blBvcyhzdW5Qb3NOb3cuYXppbXV0aCArIE1hdGguUEkpO1xuXG5jb25zdCBOVU1fU0FNUExFX1JBWVMgPSAzO1xuXG4vKipcbiAqIFpvb20gcmFuZ2Ugb3ZlciB3aGljaCB0aGUgYXRtb3NwaGVyZSBlZmZlY3QgZmFkZXMgb3V0LlxuICogQmVsb3cgQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQgdGhlIGVmZmVjdCBpcyBmdWxseSB2aXNpYmxlLlxuICogQWJvdmUgQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EIHRoZSBlZmZlY3QgaXMgY29tcGxldGVseSBoaWRkZW4uXG4gKi9cbmNvbnN0IEFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUID0gMy41O1xuY29uc3QgQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EID0gNjtcblxuLyoqXG4gKiBDb252ZXJ0IGEgbWFwU3RhdGUgem9vbSBsZXZlbCB0byBhIFswLCAxXSBhdG1vc3BoZXJlIG9wYWNpdHkgbXVsdGlwbGllci5cbiAqIFJldHVybnMgMSAoZnVsbHkgdmlzaWJsZSkgYmVsb3cgQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQsIHNtb290aGx5XG4gKiBpbnRlcnBvbGF0ZXMgdG8gMCBiZXR3ZWVuIHRoZSB0d28gdGhyZXNob2xkcywgYW5kIHJldHVybnMgMCBhYm92ZVxuICogQVRNT1NQSEVSRV9GQURFX1pPT01fRU5ELlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXRtb3NwaGVyZVpvb21GYWRlKHpvb206IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh6b29tIDw9IEFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUKSByZXR1cm4gMTtcbiAgaWYgKHpvb20gPj0gQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EKSByZXR1cm4gMDtcbiAgY29uc3QgdCA9ICh6b29tIC0gQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQpIC8gKEFUTU9TUEhFUkVfRkFERV9aT09NX0VORCAtIEFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUKTtcbiAgLy8gU21vb3RoLXN0ZXAgZm9yIGEgcGVyY2VwdHVhbGx5IGdlbnRsZSB0cmFuc2l0aW9uLlxuICByZXR1cm4gMSAtIHQgKiB0ICogKDMgLSAyICogdCk7XG59XG5cbmNvbnN0IEFUTU9TUEhFUkVfVU5JRk9STVMgPSB7XG4gIHYzU3VuUG9zOiB2M1N1blBvc05vdyxcbiAgZXhwb3N1cmU6IDIsXG4gIGZTYW1wbGVzOiAzLFxuICBnOiAtMC42NSxcbiAgZktyRVN1bjogMC4wMDAyNSAqIDIwLFxuICBmS21FU3VuOiAwLjAwMDEgKiAyMCxcbiAgZktyNFBJOiAwLjAwMDI1ICogNCAqIE1hdGguUEksXG4gIGZLbTRQSTogMC4wMDAxICogNCAqIE1hdGguUEksXG4gIGZTY2FsZURlcHRoOiAwLjI1LFxuICBmSW5uZXJSYWRpdXM6IDI1OCxcbiAgZk91dGVyUmFkaXVzOiAyNjUsXG4gIGZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yOiAwLjgsXG4gIGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjogMVxufTtcblxudHlwZSBBdG1vc3BoZXJlTGF5ZXJQcm9wcyA9IHtcbiAgY29uZmlnOiBHbG9iZUNvbmZpZztcbiAgLyoqIFByZS1jb21wdXRlZCBbMCwgMV0gem9vbS1mYWRlIG11bHRpcGxpZXI7IDEgPSBmdWxseSB2aXNpYmxlLCAwID0gaGlkZGVuLiAqL1xuICB6b29tRmFkZTogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNsYXNzIEF0bW9zcGhlcmVMYXllclJlYWxpc3RpYyBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIEF0bW9zcGhlcmVMYXllclByb3BzPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljJztcblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IHtjb25maWcsIHpvb21GYWRlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAuLi5BVE1PU1BIRVJFX1VOSUZPUk1TLFxuICAgICAgICBmVGVybWluYXRvck9wYWNpdHlGYWN0b3I6IGNvbmZpZy50ZXJtaW5hdG9yID8gY29uZmlnLnRlcm1pbmF0b3JPcGFjaXR5IDogMCxcbiAgICAgICAgdjNTdW5Qb3M6IGNvbmZpZy5hemltdXRoID8gYW5nbGVUb1N1blBvcyh0b1JhZGlhbnMoY29uZmlnLmF6aW11dGhBbmdsZSkpIDogdjNTdW5Qb3NOb3csXG4gICAgICAgIGZBdG1vc3BoZXJlWm9vbUZhZGU6IHpvb21GYWRlXG4gICAgICB9O1xuICAgIH1cbiAgICBzdXBlci5kcmF3KHt1bmlmb3Jtc30pO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXRTaGFkZXJzKCksXG4gICAgICBpbmplY3Q6IHtcbiAgICAgICAgJ2ZzOiNkZWNsJzogYFxuICAgICAgICAgIHVuaWZvcm0gdmVjMyB2M1N1blBvcztcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGV4cG9zdXJlO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmU2FtcGxlcztcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZklubmVyUmFkaXVzO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZk91dGVyUmFkaXVzO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZktyRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbUVTdW47XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3I0UEk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS200UEk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmU2NhbGVEZXB0aDtcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZlRlcm1pbmF0b3JBdHRlbnVhdGVGYWN0b3I7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmVGVybWluYXRvck9wYWNpdHlGYWN0b3I7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmQXRtb3NwaGVyZVpvb21GYWRlO1xuXG4gICAgICAgICAgY29uc3QgaW50IG5TYW1wbGVzID0gJHtOVU1fU0FNUExFX1JBWVN9O1xuXG4gICAgICAgICAgZmxvYXQgc2NhbGUoZmxvYXQgZkNvcykge1xuICAgICAgICAgICAgZmxvYXQgeCA9IDEuMCAtIGZDb3M7XG4gICAgICAgICAgICByZXR1cm4gZlNjYWxlRGVwdGggKiBleHAoLTAuMDAyODcgKyB4KigwLjQ1OSArIHgqKDMuODMgKyB4KigtNi44ICsgeCo1LjI1KSkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgICAgICdmczojbWFpbi1lbmQnOiBgXG4gICAgICAgICAgdmVjMyB2M0NhbWVyYVBvcyA9IGNhbWVyYVBvc2l0aW9uO1xuICAgICAgICAgIHZlYzMgdjNQb3MgPSBwb3NpdGlvbl9jb21tb25zcGFjZS54eXo7XG5cbiAgICAgICAgICBmbG9hdCBnMiA9IGcgKiBnO1xuXG4gICAgICAgICAgdmVjMyB2M0ludldhdmVsZW5ndGggPSB2ZWMzKDEuMCAvIHBvdygwLjY1MCwgNC4wKSwgMS4wIC8gcG93KDAuNTcwLCA0LjApLCAxLjAgLyBwb3coMC40NzUsIDQuMCkpO1xuXG4gICAgICAgICAgZmxvYXQgZklubmVyUmFkaXVzMiA9IGZJbm5lclJhZGl1cyAqIGZJbm5lclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmT3V0ZXJSYWRpdXMyID0gZk91dGVyUmFkaXVzICogZk91dGVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZSA9IDEuMCAvIChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMpO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZU92ZXJTY2FsZURlcHRoID0gMS4wIC8gKGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cykgLyBmU2NhbGVEZXB0aDtcblxuICAgICAgICAgIGZsb2F0IGNhbWVyYUhlaWdodDIgPSBsZW5ndGgodjNDYW1lcmFQb3MpICogbGVuZ3RoKHYzQ2FtZXJhUG9zKTtcblxuICAgICAgICAgIHZlYzMgdjNSYXkgPSB2M1BvcyAtIHYzQ2FtZXJhUG9zO1xuICAgICAgICAgIGZsb2F0IGZGYXIgPSBsZW5ndGgodjNSYXkpO1xuICAgICAgICAgIHYzUmF5IC89IGZGYXI7XG5cbiAgICAgICAgICBmbG9hdCBCID0gMi4wICogZG90KHYzQ2FtZXJhUG9zLCB2M1JheSk7XG4gICAgICAgICAgZmxvYXQgQyA9IGNhbWVyYUhlaWdodDIgLSBmT3V0ZXJSYWRpdXMyO1xuICAgICAgICAgIGZsb2F0IGZEZXQgPSBtYXgoMC4wLCBCKkIgLSA0LjAgKiBDKTtcbiAgICAgICAgICBmbG9hdCBmTmVhciA9IDAuNSAqICgtQiAtIHNxcnQoZkRldCkpO1xuXG4gICAgICAgICAgdmVjMyB2M1N0YXJ0ID0gdjNDYW1lcmFQb3MgKyB2M1JheSAqIGZOZWFyO1xuICAgICAgICAgIGZGYXIgLT0gZk5lYXI7XG5cbiAgICAgICAgICBmbG9hdCBmRGVwdGggPSBleHAoKGZJbm5lclJhZGl1cyAtIGZPdXRlclJhZGl1cykgLyBmU2NhbGVEZXB0aCk7XG4gICAgICAgICAgZmxvYXQgZkNhbWVyYUFuZ2xlID0gZG90KC12M1JheSwgdjNQb3MpIC8gbGVuZ3RoKHYzUG9zKTtcbiAgICAgICAgICBmbG9hdCBmTGlnaHRBbmdsZSA9IGRvdCh2M1N1blBvcywgdjNQb3MpIC8gbGVuZ3RoKHYzUG9zKTtcbiAgICAgICAgICBmbG9hdCBmQ2FtZXJhU2NhbGUgPSBzY2FsZShmQ2FtZXJhQW5nbGUpO1xuICAgICAgICAgIGZsb2F0IGZMaWdodFNjYWxlID0gc2NhbGUoZkxpZ2h0QW5nbGUpO1xuICAgICAgICAgIGZsb2F0IGZDYW1lcmFPZmZzZXQgPSBmRGVwdGgqZkNhbWVyYVNjYWxlO1xuICAgICAgICAgIGZsb2F0IGZUZW1wID0gKGZMaWdodFNjYWxlICsgZkNhbWVyYVNjYWxlKTtcblxuICAgICAgICAgIGZsb2F0IGZTYW1wbGVMZW5ndGggPSBmRmFyIC8gZlNhbXBsZXM7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlZExlbmd0aCA9IGZTYW1wbGVMZW5ndGggKiBmU2NhbGU7XG4gICAgICAgICAgdmVjMyB2M1NhbXBsZVJheSA9IHYzUmF5ICogZlNhbXBsZUxlbmd0aDtcbiAgICAgICAgICB2ZWMzIHYzU2FtcGxlUG9pbnQgPSB2M1N0YXJ0ICsgdjNTYW1wbGVSYXkgKiAwLjU7XG5cbiAgICAgICAgICB2ZWMzIHYzRnJvbnRDb2xvciA9IHZlYzMoMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgdmVjMyB2M0F0dGVudWF0ZSA9IHZlYzMoMC4wLCAwLjAsIDAuMCk7XG4gICAgICAgICAgZm9yKGludCBpPTA7IGk8blNhbXBsZXM7IGkrKylcbiAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZsb2F0IGZIZWlnaHQgPSBsZW5ndGgodjNTYW1wbGVQb2ludCk7XG4gICAgICAgICAgICAgIGZsb2F0IGZEZXB0aCA9IGV4cChmU2NhbGVPdmVyU2NhbGVEZXB0aCAqIChmSW5uZXJSYWRpdXMgLSBmSGVpZ2h0KSk7XG4gICAgICAgICAgICAgIGZsb2F0IGZTY2F0dGVyID0gZkRlcHRoKmZUZW1wIC0gZkNhbWVyYU9mZnNldDtcbiAgICAgICAgICAgICAgdjNBdHRlbnVhdGUgPSBleHAoLWZTY2F0dGVyICogKHYzSW52V2F2ZWxlbmd0aCAqIGZLcjRQSSArIGZLbTRQSSkpO1xuICAgICAgICAgICAgICB2M0Zyb250Q29sb3IgKz0gdjNBdHRlbnVhdGUgKiAoZkRlcHRoICogZlNjYWxlZExlbmd0aCk7XG4gICAgICAgICAgICAgIHYzU2FtcGxlUG9pbnQgKz0gdjNTYW1wbGVSYXk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmVjMyBjMCA9IHYzQXR0ZW51YXRlO1xuICAgICAgICAgIHZlYzMgYzEgPSB2M0Zyb250Q29sb3IgKiAodjNJbnZXYXZlbGVuZ3RoICogZktyRVN1biArIGZLbUVTdW4pO1xuXG4gICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNChjMSwgMS4wIC0gYzAgKiBmVGVybWluYXRvckF0dGVudWF0ZUZhY3Rvcik7XG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yO1xuXG4gICAgICAgICAgLy8gS2VlcCB0aGUgZGF5IGhlbWlzcGhlcmUgY29tcGxldGVseSB1bnNoYWRlZCDigJQgdGhlIGF0dGVudWF0aW9uLWJhc2VkXG4gICAgICAgICAgLy8gYWxwaGEgYWJvdmUgaXMgbm9uLXplcm8gZXZlbiBhdCBub29uLCB3aGljaCBzbGlnaHRseSBkYXJrZW5zIHRoZSBsaXRcbiAgICAgICAgICAvLyBzaWRlLiBHYXRlIGl0IHdpdGggYSBkYXkvbmlnaHQgbWFzayBzbyBkYXJrZW5pbmcgb25seSBhcHBlYXJzIGFjcm9zc1xuICAgICAgICAgIC8vIHRoZSB0ZXJtaW5hdG9yIGFuZCBvbnRvIHRoZSBuaWdodCBzaWRlLlxuICAgICAgICAgIC8vIGZMaWdodEFuZ2xlID0gZG90KHN1bkRpciwgc3VyZmFjZU5vcm1hbCk6ICsxIGF0IHRoZSBzdWJzb2xhciBwb2ludFxuICAgICAgICAgIC8vIChub29uKSwgMCBhdCB0aGUgdGVybWluYXRvciwgLTEgYXQgbWlkbmlnaHQuIHNtb290aHN0ZXAgbWFwcyB0aGUgZGF5XG4gICAgICAgICAgLy8gc2lkZSAoPj0gMC4yKSB0byAwIChubyBkYXJrZW5pbmcpLCByYW1wcyB0aHJvdWdoIHRoZSB0ZXJtaW5hdG9yLCBhbmRcbiAgICAgICAgICAvLyByZWFjaGVzIGZ1bGwgZGFya2VuaW5nIG9uIHRoZSBuaWdodCBzaWRlICg8PSAtMC4yKS5cbiAgICAgICAgICBmbG9hdCBmTmlnaHRNYXNrID0gc21vb3Roc3RlcCgwLjIsIC0wLjIsIGZMaWdodEFuZ2xlKTtcbiAgICAgICAgICBmcmFnQ29sb3IuYSAqPSBmTmlnaHRNYXNrO1xuXG4gICAgICAgICAgLy8gRmFkZSBvdXQgdGhlIGVudGlyZSBkYXkvbmlnaHQgc2hhZGluZyBlZmZlY3QgYXMgdGhlIHVzZXIgem9vbXMgaW4uXG4gICAgICAgICAgLy8gQXQgem9vbSBsZXZlbHMgYWJvdmUgQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EIHRoZSBlZmZlY3QgaXMgaW52aXNpYmxlLFxuICAgICAgICAgIC8vIHNvIGl0IGRvZXNuJ3Qgb2JzY3VyZSBtYXAgZGV0YWlsIGF0IHN0cmVldC9jaXR5IHNjYWxlLlxuICAgICAgICAgIGZyYWdDb2xvci5hICo9IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG4gICAgICAgIGAsXG4gICAgICAgICdmczpERUNLR0xfRklMVEVSX0NPTE9SJzogYGBcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMgZXh0ZW5kcyBTaW1wbGVNZXNoTGF5ZXI8YW55LCBBdG1vc3BoZXJlTGF5ZXJQcm9wcz4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0F0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyc7XG5cbiAgZHJhdyh7dW5pZm9ybXN9OiB7dW5pZm9ybXM6IG9iamVjdH0pOiB2b2lkIHtcbiAgICBjb25zdCB7Y29uZmlnLCB6b29tRmFkZX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5zdGF0ZS5tb2RlbDtcbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIChtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zID0ge1xuICAgICAgICAuLi4obW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyxcbiAgICAgICAgLi4uQVRNT1NQSEVSRV9VTklGT1JNUyxcbiAgICAgICAgdjNTdW5Qb3M6IGNvbmZpZy5hemltdXRoID8gYW5nbGVUb1N1blBvcyh0b1JhZGlhbnMoY29uZmlnLmF6aW11dGhBbmdsZSkpIDogdjNTdW5Qb3NOb3csXG4gICAgICAgIGZBdG1vc3BoZXJlWm9vbUZhZGU6IHpvb21GYWRlXG4gICAgICB9O1xuICAgIH1cbiAgICBzdXBlci5kcmF3KHt1bmlmb3Jtc30pO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXRTaGFkZXJzKCksXG4gICAgICBpbmplY3Q6IHtcbiAgICAgICAgJ2ZzOiNkZWNsJzogYFxuICAgICAgICAgIHVuaWZvcm0gdmVjMyB2M1N1blBvcztcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGV4cG9zdXJlO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmU2FtcGxlcztcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZklubmVyUmFkaXVzO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZk91dGVyUmFkaXVzO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZktyRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbUVTdW47XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3I0UEk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS200UEk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmU2NhbGVEZXB0aDtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG5cbiAgICAgICAgICBjb25zdCBpbnQgblNhbXBsZXMgPSAke05VTV9TQU1QTEVfUkFZU307XG5cbiAgICAgICAgICBmbG9hdCBzY2FsZShmbG9hdCBmQ29zKSB7XG4gICAgICAgICAgICBmbG9hdCB4ID0gMS4wIC0gZkNvcztcbiAgICAgICAgICAgIHJldHVybiBmU2NhbGVEZXB0aCAqIGV4cCgtMC4wMDI4NyArIHgqKDAuNDU5ICsgeCooMy44MyArIHgqKC02LjggKyB4KjUuMjUpKSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZsb2F0IGdldE1pZVBoYXNlKGZsb2F0IGZDb3MsIGZsb2F0IGZDb3MyLCBmbG9hdCBnLCBmbG9hdCBnMikge1xuICAgICAgICAgICAgcmV0dXJuIDEuNSAqICgoMS4wIC0gZzIpIC8gKDIuMCArIGcyKSkgKiAoMS4wICsgZkNvczIpIC8gcG93KDEuMCArIGcyIC0gMi4wICogZyAqIGZDb3MsIDEuNSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmxvYXQgZ2V0UmF5bGVpZ2hQaGFzZShmbG9hdCBmQ29zMikge1xuICAgICAgICAgICAgcmV0dXJuIDAuNzUgKyAwLjc1ICogZkNvczI7XG4gICAgICAgICAgfVxuICAgICAgICBgLFxuICAgICAgICAnZnM6I21haW4tZW5kJzogYFxuICAgICAgICAgIHZlYzMgdjNDYW1lcmFQb3MgPSBjYW1lcmFQb3NpdGlvbjtcbiAgICAgICAgICB2ZWMzIHYzUG9zID0gcG9zaXRpb25fY29tbW9uc3BhY2UueHl6O1xuXG4gICAgICAgICAgZmxvYXQgZzIgPSBnICogZztcblxuICAgICAgICAgIHZlYzMgdjNJbnZXYXZlbGVuZ3RoID0gdmVjMygxLjAgLyBwb3coMC42NTAsIDQuMCksIDEuMCAvIHBvdygwLjU3MCwgNC4wKSwgMS4wIC8gcG93KDAuNDc1LCA0LjApKTtcblxuICAgICAgICAgIGZsb2F0IGZJbm5lclJhZGl1czIgPSBmSW5uZXJSYWRpdXMgKiBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgZmxvYXQgZk91dGVyUmFkaXVzMiA9IGZPdXRlclJhZGl1cyAqIGZPdXRlclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmU2NhbGUgPSAxLjAgLyAoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzKTtcbiAgICAgICAgICBmbG9hdCBmU2NhbGVPdmVyU2NhbGVEZXB0aCA9IDEuMCAvIChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMpIC8gZlNjYWxlRGVwdGg7XG5cbiAgICAgICAgICBmbG9hdCBjYW1lcmFIZWlnaHQyID0gbGVuZ3RoKHYzQ2FtZXJhUG9zKSAqIGxlbmd0aCh2M0NhbWVyYVBvcyk7XG5cbiAgICAgICAgICB2ZWMzIHYzUmF5ID0gdjNQb3MgLSB2M0NhbWVyYVBvcztcbiAgICAgICAgICBmbG9hdCBmRmFyID0gbGVuZ3RoKHYzUmF5KTtcbiAgICAgICAgICB2M1JheSAvPSBmRmFyO1xuXG4gICAgICAgICAgZmxvYXQgQiA9IDIuMCAqIGRvdCh2M0NhbWVyYVBvcywgdjNSYXkpO1xuICAgICAgICAgIGZsb2F0IEMgPSBjYW1lcmFIZWlnaHQyIC0gZk91dGVyUmFkaXVzMjtcbiAgICAgICAgICBmbG9hdCBmRGV0ID0gbWF4KDAuMCwgQipCIC0gNC4wICogQyk7XG4gICAgICAgICAgZmxvYXQgZk5lYXIgPSAwLjUgKiAoLUIgLSBzcXJ0KGZEZXQpKTtcblxuICAgICAgICAgIHZlYzMgdjNTdGFydCA9IHYzQ2FtZXJhUG9zICsgdjNSYXkgKiBmTmVhcjtcbiAgICAgICAgICBmRmFyIC09IGZOZWFyO1xuICAgICAgICAgIGZsb2F0IGZTdGFydEFuZ2xlID0gZG90KHYzUmF5LCB2M1N0YXJ0KSAvIGZPdXRlclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmU3RhcnREZXB0aCA9IGV4cCgtMS4wIC8gZlNjYWxlRGVwdGgpO1xuICAgICAgICAgIGZsb2F0IGZTdGFydE9mZnNldCA9IGZTdGFydERlcHRoICogc2NhbGUoZlN0YXJ0QW5nbGUpO1xuXG4gICAgICAgICAgZmxvYXQgZlNhbXBsZUxlbmd0aCA9IGZGYXIgLyBmU2FtcGxlcztcbiAgICAgICAgICBmbG9hdCBmU2NhbGVkTGVuZ3RoID0gZlNhbXBsZUxlbmd0aCAqIGZTY2FsZTtcbiAgICAgICAgICB2ZWMzIHYzU2FtcGxlUmF5ID0gdjNSYXkgKiBmU2FtcGxlTGVuZ3RoO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVQb2ludCA9IHYzU3RhcnQgKyB2M1NhbXBsZVJheSAqIDAuNTtcblxuICAgICAgICAgIHZlYzMgdjNGcm9udENvbG9yID0gdmVjMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgICBmb3IoaW50IGk9MDsgaTxuU2FtcGxlczsgaSsrKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZsb2F0IGZIZWlnaHQgPSBsZW5ndGgodjNTYW1wbGVQb2ludCk7XG4gICAgICAgICAgICBmbG9hdCBmRGVwdGggPSBleHAoZlNjYWxlT3ZlclNjYWxlRGVwdGggKiAoZklubmVyUmFkaXVzIC0gZkhlaWdodCkpO1xuICAgICAgICAgICAgZmxvYXQgZkxpZ2h0QW5nbGUgPSBkb3QodjNTdW5Qb3MsIHYzU2FtcGxlUG9pbnQpIC8gZkhlaWdodDtcbiAgICAgICAgICAgIGZsb2F0IGZDYW1lcmFBbmdsZSA9IGRvdCh2M1JheSwgdjNTYW1wbGVQb2ludCkgLyBmSGVpZ2h0O1xuICAgICAgICAgICAgZmxvYXQgZlNjYXR0ZXIgPSAoZlN0YXJ0T2Zmc2V0ICsgZkRlcHRoICogKHNjYWxlKGZMaWdodEFuZ2xlKSAtIHNjYWxlKGZDYW1lcmFBbmdsZSkpKTtcbiAgICAgICAgICAgIHZlYzMgdjNBdHRlbnVhdGUgPSBleHAoLWZTY2F0dGVyICogKHYzSW52V2F2ZWxlbmd0aCAqIGZLcjRQSSArIGZLbTRQSSkpO1xuXG4gICAgICAgICAgICB2M0Zyb250Q29sb3IgKz0gdjNBdHRlbnVhdGUgKiAoZkRlcHRoICogZlNjYWxlZExlbmd0aCk7XG4gICAgICAgICAgICB2M1NhbXBsZVBvaW50ICs9IHYzU2FtcGxlUmF5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZlYzMgYzAgPSB2M0Zyb250Q29sb3IgKiAodjNJbnZXYXZlbGVuZ3RoICogZktyRVN1bik7XG4gICAgICAgICAgdmVjMyBjMSA9IHYzRnJvbnRDb2xvciAqIGZLbUVTdW47XG5cbiAgICAgICAgICB2ZWMzIHYzRGlyZWN0aW9uID0gdjNDYW1lcmFQb3MgLSB2M1BvcztcblxuICAgICAgICAgIGZsb2F0IGZDb3MgPSBkb3QodjNTdW5Qb3MsIHYzRGlyZWN0aW9uKSAvIGxlbmd0aCh2M0RpcmVjdGlvbik7XG4gICAgICAgICAgZmxvYXQgZkNvczIgPSBmQ29zICogZkNvcztcblxuICAgICAgICAgIHZlYzMgc2t5Q29sb3IgPSBnZXRSYXlsZWlnaFBoYXNlKGZDb3MyKSAqIGMwICsgZ2V0TWllUGhhc2UoZkNvcywgZkNvczIsIGcsIGcyKSAqIGMxO1xuXG4gICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNChza3lDb2xvciwgMS4wKTtcbiAgICAgICAgICBmcmFnQ29sb3IuYSA9IGZyYWdDb2xvci5iO1xuXG4gICAgICAgICAgLy8gRmFkZSB0aGUgc2t5IGhhbG8gb3V0IGFzIHRoZSB1c2VyIHpvb21zIGluIHBhc3QgY29udGluZW50IHNjYWxlLlxuICAgICAgICAgIGZyYWdDb2xvci5hICo9IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG4gICAgICAgIGAsXG4gICAgICAgICdmczpERUNLR0xfRklMVEVSX0NPTE9SJzogYGBcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IEFUTU9TUEhFUkVfUEFSQU1FVEVSUyA9IHtcbiAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgYmxlbmRGdW5jOiBbMHgwMzAyLCAweDAzMDMsIDEsIDB4MDMwM10sIC8vIFNSQ19BTFBIQSwgT05FX01JTlVTX1NSQ19BTFBIQSwgT05FLCBPTkVfTUlOVVNfU1JDX0FMUEhBXG4gIGJsZW5kRXF1YXRpb246IFsweDgwMDYsIDB4ODAwNl0gLy8gRlVOQ19BRERcbn07XG5cbmNvbnN0IEFUTU9TUEhFUkVfU0tZX1BBUkFNRVRFUlMgPSB7XG4gIGN1bGxGYWNlOiAweDA0MDQsIC8vIEdMLkZST05UXG4gIGRlcHRoTWFzazogZmFsc2UsXG4gIGJsZW5kRnVuYzogWzB4MDMwMiwgMHgwMzAzLCAxLCAweDAzMDNdLFxuICBibGVuZEVxdWF0aW9uOiBbMHg4MDA2LCAweDgwMDZdXG59O1xuXG4vKipcbiAqIFNvZnQsIHN1bi1pbmRlcGVuZGVudCBnbG93LiBSYWRpaSBhcmUgaW4gZGVjay5nbCBjb21tb24gc3BhY2VcbiAqIChHTE9CRV9DT01NT05fUkFESVVTID0gMjU2OyBhdG1vc3BoZXJlIHVzZXMgfjI1OCBhcyBhIHNsaWdodCBmdWRnZSkuXG4gKiBPdXRlciDiiYggMTQlIGxhcmdlciB0aGFuIGlubmVyIGF0IHJhZGl1cyBtdWx0aXBsaWVyID0gMSAobWF0Y2hlcyB0aGUgYmFzZSBtZXNoKS5cbiAqL1xuY29uc3QgSFVHRV9IQUxPX0lOTkVSX1JBRElVUyA9IDI1ODtcbmNvbnN0IEhVR0VfSEFMT19CQVNFX09VVEVSX1JBRElVUyA9IDI5NDtcbmNvbnN0IEhVR0VfSEFMT19CQVNFX1NIRUxMID0gSFVHRV9IQUxPX0JBU0VfT1VURVJfUkFESVVTIC0gSFVHRV9IQUxPX0lOTkVSX1JBRElVUztcbi8qKiBNYXRjaGVzIHRoZSBIYWxvIFJhZGl1cyBzbGlkZXIgbWF4OyBoaWdoZXIgdmFsdWVzIGNhbiBwcm9kdWNlIGEgYmxhY2stZGlzYyBhcnRpZmFjdC4gKi9cbmNvbnN0IEhVR0VfSEFMT19SQURJVVNfTUFYID0gMy41O1xuXG5jb25zdCBIVUdFX0hBTE9fVU5JRk9STVMgPSB7XG4gIGZJbm5lclJhZGl1czogSFVHRV9IQUxPX0lOTkVSX1JBRElVUyxcbiAgLy8gU29mdCBjeWFuIG1hdGNoaW5nIHRoZSByZWZlcmVuY2UgaHVnZS1oYWxvIGxvb2suXG4gIHYzSGFsb0NvbG9yOiBbMC40NSwgMC43MiwgMS4wXSxcbiAgZkhhbG9JbnRlbnNpdHk6IDEuMFxufTtcblxuY29uc3QgSFVHRV9IQUxPX1BBUkFNRVRFUlMgPSB7XG4gIGN1bGxGYWNlOiAweDA0MDQsIC8vIEdMLkZST05UXG4gIGRlcHRoTWFzazogZmFsc2UsXG4gIC8vIExhcmdlIHNoZWxscyBvZnRlbiBlbmNsb3NlIHRoZSBjYW1lcmE7IGRpc2FibGUgZGVwdGggc28gdGhlIHJpbmcgc3RpbGwgZHJhd3MuXG4gIGRlcHRoVGVzdDogZmFsc2UsXG4gIGJsZW5kRnVuYzogWzB4MDMwMiwgMHgwMzAzLCAxLCAweDAzMDNdLCAvLyBTUkNfQUxQSEEsIE9ORV9NSU5VU19TUkNfQUxQSEFcbiAgYmxlbmRFcXVhdGlvbjogWzB4ODAwNiwgMHg4MDA2XVxufTtcblxuZnVuY3Rpb24gcmVzb2x2ZUh1Z2VIYWxvUmFkaXVzKGNvbmZpZzogR2xvYmVDb25maWcpOiBudW1iZXIge1xuICBjb25zdCBtdWx0aXBsaWVyID0gTnVtYmVyLmlzRmluaXRlKGNvbmZpZy5odWdlSGFsb1JhZGl1cylcbiAgICA/IChjb25maWcuaHVnZUhhbG9SYWRpdXMgYXMgbnVtYmVyKVxuICAgIDogREVGQVVMVF9HTE9CRV9DT05GSUcuaHVnZUhhbG9SYWRpdXM7XG4gIC8vIFNjYWxlIHNoZWxsIHRoaWNrbmVzczsga2VlcCBvdXRlciBhYm92ZSB0aGUgcGxhbmV0IHN1cmZhY2UuXG4gIHJldHVybiAoXG4gICAgSFVHRV9IQUxPX0lOTkVSX1JBRElVUyArXG4gICAgSFVHRV9IQUxPX0JBU0VfU0hFTEwgKiBNYXRoLm1heChNYXRoLm1pbihtdWx0aXBsaWVyLCBIVUdFX0hBTE9fUkFESVVTX01BWCksIDAuMDUpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVIdWdlSGFsb09wYWNpdHkoY29uZmlnOiBHbG9iZUNvbmZpZyk6IG51bWJlciB7XG4gIGNvbnN0IG9wYWNpdHkgPSBOdW1iZXIuaXNGaW5pdGUoY29uZmlnLmh1Z2VIYWxvT3BhY2l0eSlcbiAgICA/IChjb25maWcuaHVnZUhhbG9PcGFjaXR5IGFzIG51bWJlcilcbiAgICA6IERFRkFVTFRfR0xPQkVfQ09ORklHLmh1Z2VIYWxvT3BhY2l0eTtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKDEsIG9wYWNpdHkpKTtcbn1cblxuLyoqXG4gKiBWaWV3LWluZGVwZW5kZW50IGF0bW9zcGhlcmU6IGEgbGFyZ2UgdW5pZm9ybSBlbWlzc2l2ZSBhdXJhIGFyb3VuZCB0aGUgZ2xvYmUuXG4gKiBVbmxpa2UgQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljLCB0aGlzIGlnbm9yZXMgc3VuIGRpcmVjdGlvbiBhbmQgdXNlcyBhXG4gKiBsaW5lYXIgcmFkaWFsIGZhbGxvZmYgdGhyb3VnaCBhIHRoaWNrIHNoZWxsIChtYXggYXQgdGhlIHN1cmZhY2Ug4oaSIDAgYXQgb3V0ZXIgcmFkaXVzKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEF0bW9zcGhlcmVIdWdlSGFsb0xheWVyIGV4dGVuZHMgU2ltcGxlTWVzaExheWVyPGFueSwgQXRtb3NwaGVyZUxheWVyUHJvcHM+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdBdG1vc3BoZXJlSHVnZUhhbG9MYXllcic7XG5cbiAgZHJhdyh7dW5pZm9ybXN9OiB7dW5pZm9ybXM6IG9iamVjdH0pOiB2b2lkIHtcbiAgICBjb25zdCB7Y29uZmlnLCB6b29tRmFkZX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5zdGF0ZS5tb2RlbDtcbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIChtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zID0ge1xuICAgICAgICAuLi4obW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyxcbiAgICAgICAgLi4uSFVHRV9IQUxPX1VOSUZPUk1TLFxuICAgICAgICBmSGFsb09wYWNpdHk6IHJlc29sdmVIdWdlSGFsb09wYWNpdHkoY29uZmlnKSxcbiAgICAgICAgZkF0bW9zcGhlcmVab29tRmFkZTogem9vbUZhZGVcbiAgICAgIH07XG4gICAgfVxuICAgIHN1cGVyLmRyYXcoe3VuaWZvcm1zfSk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFNoYWRlcnMoKSxcbiAgICAgIGluamVjdDoge1xuICAgICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIHYzSGFsb0NvbG9yO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkhhbG9JbnRlbnNpdHk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSGFsb09wYWNpdHk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmQXRtb3NwaGVyZVpvb21GYWRlO1xuICAgICAgICBgLFxuICAgICAgICAnZnM6I21haW4tZW5kJzogYFxuICAgICAgICAgIHZlYzMgdjNDYW1lcmFQb3MgPSBjYW1lcmFQb3NpdGlvbjtcbiAgICAgICAgICB2ZWMzIHYzUG9zID0gcG9zaXRpb25fY29tbW9uc3BhY2UueHl6O1xuICAgICAgICAgIC8vIE91dGVyIHJhZGl1cyBmcm9tIHRoZSBhY3R1YWwgbWVzaCB2ZXJ0ZXggc28gc2l6ZVNjYWxlIHN0YXlzIGluIHN5bmMuXG4gICAgICAgICAgZmxvYXQgZk91dGVyUmFkaXVzID0gbGVuZ3RoKHYzUG9zKTtcbiAgICAgICAgICB2ZWMzIHYzUmF5ID0gbm9ybWFsaXplKHYzUG9zIC0gdjNDYW1lcmFQb3MpO1xuXG4gICAgICAgICAgLy8gSW1wYWN0IHBhcmFtZXRlciBvZiB0aGUgdmlldyByYXkgKHBlcnBlbmRpY3VsYXIgZGlzdGFuY2UgZnJvbSBnbG9iZVxuICAgICAgICAgIC8vIGNlbnRlciB0byB0aGUgcmF5KS4gU3RhYmxlIHdoZW4gdGhlIGNhbWVyYSBpcyBpbnNpZGUgdGhlIG91dGVyIHNoZWxsLFxuICAgICAgICAgIC8vIHVubGlrZSBuZWFyL2ZhciBzcGhlcmUtaW50ZXJzZWN0aW9uIG1hdGggd2hpY2ggYnJlYWtzIGluIHRoYXQgY2FzZVxuICAgICAgICAgIC8vIGFuZCBwcm9kdWNlZCBhIGJsYWNrIGRpc2MgYXQgaGlnaCByYWRpdXMgbXVsdGlwbGllcnMuXG4gICAgICAgICAgZmxvYXQgZkRNaW4gPSBsZW5ndGgoY3Jvc3ModjNDYW1lcmFQb3MsIHYzUmF5KSk7XG5cbiAgICAgICAgICAvLyBMaW5lYXIgZmFsbG9mZiBpbiB0aGUgYW5udWx1cyBvbmx5OiBtYXggYXQgdGhlIHN1cmZhY2UsIHplcm8gYXQgb3V0ZXIuXG4gICAgICAgICAgZmxvYXQgZlNoZWxsID0gbWF4KGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cywgMC4wMDAxKTtcbiAgICAgICAgICBmbG9hdCBmR2xvdyA9IDAuMDtcbiAgICAgICAgICBpZiAoZkRNaW4gPj0gZklubmVyUmFkaXVzICYmIGZETWluIDwgZk91dGVyUmFkaXVzKSB7XG4gICAgICAgICAgICBmbG9hdCB0ID0gKGZETWluIC0gZklubmVyUmFkaXVzKSAvIGZTaGVsbDtcbiAgICAgICAgICAgIGZHbG93ID0gMS4wIC0gdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmR2xvdyAqPSBmSGFsb0ludGVuc2l0eTtcblxuICAgICAgICAgIC8vIFN0cmFpZ2h0IGFscGhhIChub3QgcHJlbXVsdGlwbGllZCkgZm9yIFNSQ19BTFBIQSBibGVuZGluZy5cbiAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KHYzSGFsb0NvbG9yLCBmR2xvdyAqIGZIYWxvT3BhY2l0eSk7XG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZkF0bW9zcGhlcmVab29tRmFkZTtcbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOkRFQ0tHTF9GSUxURVJfQ09MT1InOiBgYFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldEdsb2JlQXRtb3NwaGVyZUxheWVyID0gKHtjb25maWcsIHpvb219OiB7Y29uZmlnOiBHbG9iZUNvbmZpZzsgem9vbT86IG51bWJlcn0pID0+IHtcbiAgY29uc3Qgem9vbUZhZGUgPSBhdG1vc3BoZXJlWm9vbUZhZGUoem9vbSA/PyAwKTtcbiAgcmV0dXJuIG5ldyBBdG1vc3BoZXJlTGF5ZXJSZWFsaXN0aWMoe1xuICAgIGlkOiAnYXRtb3NwaGVyZScsXG4gICAgZGF0YTogW1swLCAwLCAwXV0sXG4gICAgY29uZmlnLFxuICAgIHpvb21GYWRlLFxuICAgIGNvb3JkaW5hdGVPcmlnaW46IFswLCAwLCAwXSxcbiAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgZ2V0UG9zaXRpb246ICgoZDogbnVtYmVyW10pID0+IGQpIGFzIGFueSxcbiAgICBnZXRDb2xvcjogWzAsIDAsIDBdLFxuICAgIG1lc2g6IEdMT0JFX01FU0hfSU5ORVIsXG4gICAgcGFyYW1ldGVyczogQVRNT1NQSEVSRV9QQVJBTUVURVJTXG4gIH0pO1xufTtcblxuLyoqIFJlYWxpc3RpYyBzdW4tbGl0IHNjYXR0ZXJpbmcgc2t5IGhhbG8gKHRoaW4gbGltYiBnbG93KS4gKi9cbmV4cG9ydCBjb25zdCBnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllciA9ICh7Y29uZmlnLCB6b29tfToge2NvbmZpZzogR2xvYmVDb25maWc7IHpvb20/OiBudW1iZXJ9KSA9PiB7XG4gIGNvbnN0IHpvb21GYWRlID0gYXRtb3NwaGVyZVpvb21GYWRlKHpvb20gPz8gMCk7XG4gIHJldHVybiBuZXcgQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljKHtcbiAgICBpZDogJ2F0bW9zcGhlcmUtc2t5JyxcbiAgICBkYXRhOiBbWzAsIDAsIDBdXSxcbiAgICBjb25maWcsXG4gICAgem9vbUZhZGUsXG4gICAgY29vcmRpbmF0ZU9yaWdpbjogWzAsIDAsIDBdLFxuICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICBnZXRQb3NpdGlvbjogKChkOiBudW1iZXJbXSkgPT4gZCkgYXMgYW55LFxuICAgIGdldENvbG9yOiBbMCwgMCwgMF0sXG4gICAgbWVzaDogR0xPQkVfTUVTSF9PVVRFUixcbiAgICBwYXJhbWV0ZXJzOiBBVE1PU1BIRVJFX1NLWV9QQVJBTUVURVJTXG4gIH0pO1xufTtcblxuLyoqXG4gKiBMYXJnZSB1bmlmb3JtIGdsb3cgZHJhd24gaW4gYWRkaXRpb24gdG8gdGhlIHJlYWxpc3RpYyBza3kgaGFsbyB3aGVuXG4gKiBgY29uZmlnLmh1Z2VIYWxvYCBpcyBlbmFibGVkLiBSZXR1cm5zIG51bGwgd2hlbiBkaXNhYmxlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEdsb2JlSHVnZUhhbG9MYXllciA9ICh7Y29uZmlnLCB6b29tfToge2NvbmZpZzogR2xvYmVDb25maWc7IHpvb20/OiBudW1iZXJ9KSA9PiB7XG4gIGlmICghY29uZmlnLmh1Z2VIYWxvKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgem9vbUZhZGUgPSBhdG1vc3BoZXJlWm9vbUZhZGUoem9vbSA/PyAwKTtcbiAgY29uc3Qgb3V0ZXJSYWRpdXMgPSByZXNvbHZlSHVnZUhhbG9SYWRpdXMoY29uZmlnKTtcbiAgLy8gS2VlcCBtZXNoIGV4dGVudCBpbiBzeW5jIHdpdGggdGhlIGRlc2lyZWQgb3V0ZXIgcmFkaXVzIChiYXNlIG1lc2ggPSBkZWZhdWx0IG91dGVyKS5cbiAgY29uc3Qgc2l6ZVNjYWxlID0gb3V0ZXJSYWRpdXMgLyBIVUdFX0hBTE9fQkFTRV9PVVRFUl9SQURJVVM7XG4gIHJldHVybiBuZXcgQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIoe1xuICAgIGlkOiAnYXRtb3NwaGVyZS1odWdlLWhhbG8nLFxuICAgIGRhdGE6IFtbMCwgMCwgMF1dLFxuICAgIGNvbmZpZyxcbiAgICB6b29tRmFkZSxcbiAgICBjb29yZGluYXRlT3JpZ2luOiBbMCwgMCwgMF0sXG4gICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOLFxuICAgIGdldFBvc2l0aW9uOiAoKGQ6IG51bWJlcltdKSA9PiBkKSBhcyBhbnksXG4gICAgZ2V0Q29sb3I6IFswLCAwLCAwXSxcbiAgICBtZXNoOiBHTE9CRV9NRVNIX0hVR0VfSEFMTyxcbiAgICBzaXplU2NhbGUsXG4gICAgcGFyYW1ldGVyczogSFVHRV9IQUxPX1BBUkFNRVRFUlNcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFRQSxpQkFBaUIsUUFBTyxlQUFlO0FBQy9DLFNBQVFDLGVBQWUsUUFBTyxzQkFBc0I7QUFDcEQsU0FBUUMsY0FBYyxRQUFPLGlCQUFpQjtBQUM5QyxTQUFRQyxPQUFPLFFBQU8sZUFBZTtBQUNyQyxTQUFRQyxjQUFjLFFBQU8sY0FBYztBQUUzQyxTQUFRQyxvQkFBb0IsUUFBeUIsc0JBQXNCO0FBRTNFLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJQyxPQUFlO0VBQUEsT0FBY0EsT0FBTyxHQUFHQyxJQUFJLENBQUNDLEVBQUUsR0FBSSxHQUFHO0FBQUE7QUFFeEUsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLEtBQWEsRUFBK0I7RUFDOUQs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
|
|
335
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT09SRElOQVRFX1NZU1RFTSIsIlNpbXBsZU1lc2hMYXllciIsIlNwaGVyZUdlb21ldHJ5IiwiVmVjdG9yMyIsImdldFN1blBvc2l0aW9uIiwiREVGQVVMVF9HTE9CRV9DT05GSUciLCJ0b1JhZGlhbnMiLCJkZWdyZWVzIiwiTWF0aCIsIlBJIiwiYW5nbGVUb1ZlYyIsImFuZ2xlIiwic2luIiwiY29zIiwiYW5nbGVUb1N1blBvcyIsIm5vcm1hbGl6ZSIsIkdMT0JFX01FU0hfSU5ORVIiLCJyYWRpdXMiLCJubGF0IiwibmxvbmciLCJHTE9CRV9NRVNIX09VVEVSIiwiR0xPQkVfTUVTSF9IVUdFX0hBTE8iLCJsb24iLCJsYXQiLCJzdW5Qb3NOb3ciLCJEYXRlIiwibm93IiwidjNTdW5Qb3NOb3ciLCJhemltdXRoIiwiTlVNX1NBTVBMRV9SQVlTIiwiQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQiLCJBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQiLCJhdG1vc3BoZXJlWm9vbUZhZGUiLCJ6b29tIiwidCIsIkFUTU9TUEhFUkVfVU5JRk9STVMiLCJ2M1N1blBvcyIsImV4cG9zdXJlIiwiZlNhbXBsZXMiLCJnIiwiZktyRVN1biIsImZLbUVTdW4iLCJmS3I0UEkiLCJmS200UEkiLCJmU2NhbGVEZXB0aCIsImZJbm5lclJhZGl1cyIsImZPdXRlclJhZGl1cyIsImZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yIiwiZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yIiwiQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljIiwiX1NpbXBsZU1lc2hMYXllciIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJhcmd1bWVudHMiLCJfaW5oZXJpdHMiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsImRyYXciLCJfcmVmIiwidW5pZm9ybXMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiY29uZmlnIiwiem9vbUZhZGUiLCJtb2RlbCIsInN0YXRlIiwiX29iamVjdFNwcmVhZCIsInRlcm1pbmF0b3IiLCJ0ZXJtaW5hdG9yT3BhY2l0eSIsImF6aW11dGhBbmdsZSIsImZBdG1vc3BoZXJlWm9vbUZhZGUiLCJfc3VwZXJQcm9wR2V0IiwiZ2V0U2hhZGVycyIsImluamVjdCIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsIkF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyIsIl9TaW1wbGVNZXNoTGF5ZXIyIiwiX3JlZjIiLCJfdGhpcyRwcm9wczIiLCJBVE1PU1BIRVJFX1BBUkFNRVRFUlMiLCJkZXB0aFRlc3QiLCJibGVuZEZ1bmMiLCJibGVuZEVxdWF0aW9uIiwiQVRNT1NQSEVSRV9TS1lfUEFSQU1FVEVSUyIsImN1bGxGYWNlIiwiZGVwdGhNYXNrIiwiSFVHRV9IQUxPX0lOTkVSX1JBRElVUyIsIkhVR0VfSEFMT19CQVNFX09VVEVSX1JBRElVUyIsIkhVR0VfSEFMT19CQVNFX1NIRUxMIiwiSFVHRV9IQUxPX1JBRElVU19NQVgiLCJIVUdFX0hBTE9fVU5JRk9STVMiLCJ2M0hhbG9Db2xvciIsImZIYWxvSW50ZW5zaXR5IiwiSFVHRV9IQUxPX1BBUkFNRVRFUlMiLCJyZXNvbHZlSHVnZUhhbG9SYWRpdXMiLCJtdWx0aXBsaWVyIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJodWdlSGFsb1JhZGl1cyIsIm1heCIsIm1pbiIsInJlc29sdmVIdWdlSGFsb09wYWNpdHkiLCJvcGFjaXR5IiwiaHVnZUhhbG9PcGFjaXR5IiwiQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIiLCJfU2ltcGxlTWVzaExheWVyMyIsIl9yZWYzIiwiX3RoaXMkcHJvcHMzIiwiZkhhbG9PcGFjaXR5IiwiZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIiLCJfcmVmNCIsImlkIiwiZGF0YSIsImNvb3JkaW5hdGVPcmlnaW4iLCJjb29yZGluYXRlU3lzdGVtIiwiQ0FSVEVTSUFOIiwiZ2V0UG9zaXRpb24iLCJkIiwiZ2V0Q29sb3IiLCJtZXNoIiwicGFyYW1ldGVycyIsImdldEdsb2JlQXRtb3NwaGVyZVNreUxheWVyIiwiX3JlZjUiLCJnZXRHbG9iZUh1Z2VIYWxvTGF5ZXIiLCJfcmVmNiIsImh1Z2VIYWxvIiwib3V0ZXJSYWRpdXMiLCJzaXplU2NhbGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmUvYXRtb3NwaGVyZS1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBTaGFkZXJzIHBvcnRlZCBmcm9tIGlUb3ducywgYmFzZWQgb24gU2VhbiBPJ05laWwncyBhcHByb2FjaCBpbiBHUFUgR2VtcyAyXG4vLyBTRUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pVG93bnMvaXRvd25zL2Jsb2IvbWFzdGVyL3NyYy9Db3JlL1ByZWZhYi9HbG9iZS9BdG1vc3BoZXJlLmpzXG4vLyBTRUU6IGh0dHBzOi8vZGV2ZWxvcGVyLm52aWRpYS5jb20vZ3B1Z2Vtcy9ncHVnZW1zMi9wYXJ0LWlpLXNoYWRpbmctbGlnaHRpbmctYW5kLXNoYWRvd3MvY2hhcHRlci0xNi1hY2N1cmF0ZS1hdG1vc3BoZXJpYy1zY2F0dGVyaW5nXG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU19IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTaW1wbGVNZXNoTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL21lc2gtbGF5ZXJzJztcbmltcG9ydCB7U3BoZXJlR2VvbWV0cnl9IGZyb20gJ0BsdW1hLmdsL2VuZ2luZSc7XG5pbXBvcnQge1ZlY3RvcjN9IGZyb20gJ0BtYXRoLmdsL2NvcmUnO1xuaW1wb3J0IHtnZXRTdW5Qb3NpdGlvbn0gZnJvbSAnQG1hdGguZ2wvc3VuJztcblxuaW1wb3J0IHtERUZBVUxUX0dMT0JFX0NPTkZJRywgdHlwZSBHbG9iZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCB0b1JhZGlhbnMgPSAoZGVncmVlczogbnVtYmVyKTogbnVtYmVyID0+IChkZWdyZWVzICogTWF0aC5QSSkgLyAxODA7XG5cbmNvbnN0IGFuZ2xlVG9WZWMgPSAoYW5nbGU6IG51bWJlcik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9PiB7XG4gIHJldHVybiBbTWF0aC5zaW4oYW5nbGUpLCBNYXRoLmNvcyhhbmdsZSksIDBdO1xufTtcblxuY29uc3QgYW5nbGVUb1N1blBvcyA9IChhbmdsZTogbnVtYmVyKTogbnVtYmVyW10gPT4ge1xuICByZXR1cm4gbmV3IFZlY3RvcjMoYW5nbGVUb1ZlYyhhbmdsZSkpLm5vcm1hbGl6ZSgpIGFzIHVua25vd24gYXMgbnVtYmVyW107XG59O1xuXG5jb25zdCBHTE9CRV9NRVNIX0lOTkVSID0gbmV3IFNwaGVyZUdlb21ldHJ5KHtcbiAgcmFkaXVzOiA2LjRlNixcbiAgbmxhdDogMTAwLFxuICBubG9uZzogMTAwXG59KTtcblxuY29uc3QgR0xPQkVfTUVTSF9PVVRFUiA9IG5ldyBTcGhlcmVHZW9tZXRyeSh7XG4gIHJhZGl1czogNi43ZTYsXG4gIG5sYXQ6IDEwMCxcbiAgbmxvbmc6IDEwMFxufSk7XG5cbi8vIH4xNCUgbGFyZ2VyIHRoYW4gdGhlIGdsb2JlIHN1cmZhY2UgbWVzaCDigJQgeWllbGRzIGEgdGhpY2sgc29mdCBhdXJhICh+MC4x4oCTMC4xNVIpLlxuY29uc3QgR0xPQkVfTUVTSF9IVUdFX0hBTE8gPSBuZXcgU3BoZXJlR2VvbWV0cnkoe1xuICByYWRpdXM6IDcuM2U2LFxuICBubGF0OiAxMDAsXG4gIG5sb25nOiAxMDBcbn0pO1xuXG5jb25zdCBbbG9uLCBsYXRdID0gWzAsIDkwXTtcbmNvbnN0IHN1blBvc05vdyA9IGdldFN1blBvc2l0aW9uKERhdGUubm93KCksIGxhdCwgbG9uKTtcbmNvbnN0IHYzU3VuUG9zTm93ID0gYW5nbGVUb1N1blBvcyhzdW5Qb3NOb3cuYXppbXV0aCArIE1hdGguUEkpO1xuXG5jb25zdCBOVU1fU0FNUExFX1JBWVMgPSAzO1xuXG4vKipcbiAqIFpvb20gcmFuZ2Ugb3ZlciB3aGljaCB0aGUgYXRtb3NwaGVyZSBlZmZlY3QgZmFkZXMgb3V0LlxuICogQmVsb3cgQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQgdGhlIGVmZmVjdCBpcyBmdWxseSB2aXNpYmxlLlxuICogQWJvdmUgQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EIHRoZSBlZmZlY3QgaXMgY29tcGxldGVseSBoaWRkZW4uXG4gKi9cbmNvbnN0IEFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUID0gMy41O1xuY29uc3QgQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EID0gNjtcblxuLyoqXG4gKiBDb252ZXJ0IGEgbWFwU3RhdGUgem9vbSBsZXZlbCB0byBhIFswLCAxXSBhdG1vc3BoZXJlIG9wYWNpdHkgbXVsdGlwbGllci5cbiAqIFJldHVybnMgMSAoZnVsbHkgdmlzaWJsZSkgYmVsb3cgQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQsIHNtb290aGx5XG4gKiBpbnRlcnBvbGF0ZXMgdG8gMCBiZXR3ZWVuIHRoZSB0d28gdGhyZXNob2xkcywgYW5kIHJldHVybnMgMCBhYm92ZVxuICogQVRNT1NQSEVSRV9GQURFX1pPT01fRU5ELlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXRtb3NwaGVyZVpvb21GYWRlKHpvb206IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh6b29tIDw9IEFUTU9TUEhFUkVfRkFERV9aT09NX1NUQVJUKSByZXR1cm4gMTtcbiAgaWYgKHpvb20gPj0gQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EKSByZXR1cm4gMDtcbiAgY29uc3QgdCA9XG4gICAgKHpvb20gLSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9TVEFSVCkgLyAoQVRNT1NQSEVSRV9GQURFX1pPT01fRU5EIC0gQVRNT1NQSEVSRV9GQURFX1pPT01fU1RBUlQpO1xuICAvLyBTbW9vdGgtc3RlcCBmb3IgYSBwZXJjZXB0dWFsbHkgZ2VudGxlIHRyYW5zaXRpb24uXG4gIHJldHVybiAxIC0gdCAqIHQgKiAoMyAtIDIgKiB0KTtcbn1cblxuY29uc3QgQVRNT1NQSEVSRV9VTklGT1JNUyA9IHtcbiAgdjNTdW5Qb3M6IHYzU3VuUG9zTm93LFxuICBleHBvc3VyZTogMixcbiAgZlNhbXBsZXM6IDMsXG4gIGc6IC0wLjY1LFxuICBmS3JFU3VuOiAwLjAwMDI1ICogMjAsXG4gIGZLbUVTdW46IDAuMDAwMSAqIDIwLFxuICBmS3I0UEk6IDAuMDAwMjUgKiA0ICogTWF0aC5QSSxcbiAgZkttNFBJOiAwLjAwMDEgKiA0ICogTWF0aC5QSSxcbiAgZlNjYWxlRGVwdGg6IDAuMjUsXG4gIGZJbm5lclJhZGl1czogMjU4LFxuICBmT3V0ZXJSYWRpdXM6IDI2NSxcbiAgZlRlcm1pbmF0b3JBdHRlbnVhdGVGYWN0b3I6IDAuOCxcbiAgZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yOiAxXG59O1xuXG50eXBlIEF0bW9zcGhlcmVMYXllclByb3BzID0ge1xuICBjb25maWc6IEdsb2JlQ29uZmlnO1xuICAvKiogUHJlLWNvbXB1dGVkIFswLCAxXSB6b29tLWZhZGUgbXVsdGlwbGllcjsgMSA9IGZ1bGx5IHZpc2libGUsIDAgPSBoaWRkZW4uICovXG4gIHpvb21GYWRlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgY2xhc3MgQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljIGV4dGVuZHMgU2ltcGxlTWVzaExheWVyPGFueSwgQXRtb3NwaGVyZUxheWVyUHJvcHM+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdBdG1vc3BoZXJlTGF5ZXJSZWFsaXN0aWMnO1xuXG4gIGRyYXcoe3VuaWZvcm1zfToge3VuaWZvcm1zOiBvYmplY3R9KTogdm9pZCB7XG4gICAgY29uc3Qge2NvbmZpZywgem9vbUZhZGV9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuc3RhdGUubW9kZWw7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICAobW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyA9IHtcbiAgICAgICAgLi4uKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMsXG4gICAgICAgIC4uLkFUTU9TUEhFUkVfVU5JRk9STVMsXG4gICAgICAgIGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjogY29uZmlnLnRlcm1pbmF0b3IgPyBjb25maWcudGVybWluYXRvck9wYWNpdHkgOiAwLFxuICAgICAgICB2M1N1blBvczogY29uZmlnLmF6aW11dGggPyBhbmdsZVRvU3VuUG9zKHRvUmFkaWFucyhjb25maWcuYXppbXV0aEFuZ2xlKSkgOiB2M1N1blBvc05vdyxcbiAgICAgICAgZkF0bW9zcGhlcmVab29tRmFkZTogem9vbUZhZGVcbiAgICAgIH07XG4gICAgfVxuICAgIHN1cGVyLmRyYXcoe3VuaWZvcm1zfSk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFNoYWRlcnMoKSxcbiAgICAgIGluamVjdDoge1xuICAgICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIHYzU3VuUG9zO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBnO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZXhwb3N1cmU7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTYW1wbGVzO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3JFU3VuO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkttRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLcjRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbTRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTY2FsZURlcHRoO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmVGVybWluYXRvckF0dGVudWF0ZUZhY3RvcjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG5cbiAgICAgICAgICBjb25zdCBpbnQgblNhbXBsZXMgPSAke05VTV9TQU1QTEVfUkFZU307XG5cbiAgICAgICAgICBmbG9hdCBzY2FsZShmbG9hdCBmQ29zKSB7XG4gICAgICAgICAgICBmbG9hdCB4ID0gMS4wIC0gZkNvcztcbiAgICAgICAgICAgIHJldHVybiBmU2NhbGVEZXB0aCAqIGV4cCgtMC4wMDI4NyArIHgqKDAuNDU5ICsgeCooMy44MyArIHgqKC02LjggKyB4KjUuMjUpKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOiNtYWluLWVuZCc6IGBcbiAgICAgICAgICB2ZWMzIHYzQ2FtZXJhUG9zID0gY2FtZXJhUG9zaXRpb247XG4gICAgICAgICAgdmVjMyB2M1BvcyA9IHBvc2l0aW9uX2NvbW1vbnNwYWNlLnh5ejtcblxuICAgICAgICAgIGZsb2F0IGcyID0gZyAqIGc7XG5cbiAgICAgICAgICB2ZWMzIHYzSW52V2F2ZWxlbmd0aCA9IHZlYzMoMS4wIC8gcG93KDAuNjUwLCA0LjApLCAxLjAgLyBwb3coMC41NzAsIDQuMCksIDEuMCAvIHBvdygwLjQ3NSwgNC4wKSk7XG5cbiAgICAgICAgICBmbG9hdCBmSW5uZXJSYWRpdXMyID0gZklubmVyUmFkaXVzICogZklubmVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZPdXRlclJhZGl1czIgPSBmT3V0ZXJSYWRpdXMgKiBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlID0gMS4wIC8gKGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cyk7XG4gICAgICAgICAgZmxvYXQgZlNjYWxlT3ZlclNjYWxlRGVwdGggPSAxLjAgLyAoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzKSAvIGZTY2FsZURlcHRoO1xuXG4gICAgICAgICAgZmxvYXQgY2FtZXJhSGVpZ2h0MiA9IGxlbmd0aCh2M0NhbWVyYVBvcykgKiBsZW5ndGgodjNDYW1lcmFQb3MpO1xuXG4gICAgICAgICAgdmVjMyB2M1JheSA9IHYzUG9zIC0gdjNDYW1lcmFQb3M7XG4gICAgICAgICAgZmxvYXQgZkZhciA9IGxlbmd0aCh2M1JheSk7XG4gICAgICAgICAgdjNSYXkgLz0gZkZhcjtcblxuICAgICAgICAgIGZsb2F0IEIgPSAyLjAgKiBkb3QodjNDYW1lcmFQb3MsIHYzUmF5KTtcbiAgICAgICAgICBmbG9hdCBDID0gY2FtZXJhSGVpZ2h0MiAtIGZPdXRlclJhZGl1czI7XG4gICAgICAgICAgZmxvYXQgZkRldCA9IG1heCgwLjAsIEIqQiAtIDQuMCAqIEMpO1xuICAgICAgICAgIGZsb2F0IGZOZWFyID0gMC41ICogKC1CIC0gc3FydChmRGV0KSk7XG5cbiAgICAgICAgICB2ZWMzIHYzU3RhcnQgPSB2M0NhbWVyYVBvcyArIHYzUmF5ICogZk5lYXI7XG4gICAgICAgICAgZkZhciAtPSBmTmVhcjtcblxuICAgICAgICAgIGZsb2F0IGZEZXB0aCA9IGV4cCgoZklubmVyUmFkaXVzIC0gZk91dGVyUmFkaXVzKSAvIGZTY2FsZURlcHRoKTtcbiAgICAgICAgICBmbG9hdCBmQ2FtZXJhQW5nbGUgPSBkb3QoLXYzUmF5LCB2M1BvcykgLyBsZW5ndGgodjNQb3MpO1xuICAgICAgICAgIGZsb2F0IGZMaWdodEFuZ2xlID0gZG90KHYzU3VuUG9zLCB2M1BvcykgLyBsZW5ndGgodjNQb3MpO1xuICAgICAgICAgIGZsb2F0IGZDYW1lcmFTY2FsZSA9IHNjYWxlKGZDYW1lcmFBbmdsZSk7XG4gICAgICAgICAgZmxvYXQgZkxpZ2h0U2NhbGUgPSBzY2FsZShmTGlnaHRBbmdsZSk7XG4gICAgICAgICAgZmxvYXQgZkNhbWVyYU9mZnNldCA9IGZEZXB0aCpmQ2FtZXJhU2NhbGU7XG4gICAgICAgICAgZmxvYXQgZlRlbXAgPSAoZkxpZ2h0U2NhbGUgKyBmQ2FtZXJhU2NhbGUpO1xuXG4gICAgICAgICAgZmxvYXQgZlNhbXBsZUxlbmd0aCA9IGZGYXIgLyBmU2FtcGxlcztcbiAgICAgICAgICBmbG9hdCBmU2NhbGVkTGVuZ3RoID0gZlNhbXBsZUxlbmd0aCAqIGZTY2FsZTtcbiAgICAgICAgICB2ZWMzIHYzU2FtcGxlUmF5ID0gdjNSYXkgKiBmU2FtcGxlTGVuZ3RoO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVQb2ludCA9IHYzU3RhcnQgKyB2M1NhbXBsZVJheSAqIDAuNTtcblxuICAgICAgICAgIHZlYzMgdjNGcm9udENvbG9yID0gdmVjMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgICB2ZWMzIHYzQXR0ZW51YXRlID0gdmVjMygwLjAsIDAuMCwgMC4wKTtcbiAgICAgICAgICBmb3IoaW50IGk9MDsgaTxuU2FtcGxlczsgaSsrKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmxvYXQgZkhlaWdodCA9IGxlbmd0aCh2M1NhbXBsZVBvaW50KTtcbiAgICAgICAgICAgICAgZmxvYXQgZkRlcHRoID0gZXhwKGZTY2FsZU92ZXJTY2FsZURlcHRoICogKGZJbm5lclJhZGl1cyAtIGZIZWlnaHQpKTtcbiAgICAgICAgICAgICAgZmxvYXQgZlNjYXR0ZXIgPSBmRGVwdGgqZlRlbXAgLSBmQ2FtZXJhT2Zmc2V0O1xuICAgICAgICAgICAgICB2M0F0dGVudWF0ZSA9IGV4cCgtZlNjYXR0ZXIgKiAodjNJbnZXYXZlbGVuZ3RoICogZktyNFBJICsgZkttNFBJKSk7XG4gICAgICAgICAgICAgIHYzRnJvbnRDb2xvciArPSB2M0F0dGVudWF0ZSAqIChmRGVwdGggKiBmU2NhbGVkTGVuZ3RoKTtcbiAgICAgICAgICAgICAgdjNTYW1wbGVQb2ludCArPSB2M1NhbXBsZVJheTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2ZWMzIGMwID0gdjNBdHRlbnVhdGU7XG4gICAgICAgICAgdmVjMyBjMSA9IHYzRnJvbnRDb2xvciAqICh2M0ludldhdmVsZW5ndGggKiBmS3JFU3VuICsgZkttRVN1bik7XG5cbiAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KGMxLCAxLjAgLSBjMCAqIGZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yKTtcbiAgICAgICAgICBmcmFnQ29sb3IuYSAqPSBmVGVybWluYXRvck9wYWNpdHlGYWN0b3I7XG5cbiAgICAgICAgICAvLyBLZWVwIHRoZSBkYXkgaGVtaXNwaGVyZSBjb21wbGV0ZWx5IHVuc2hhZGVkIOKAlCB0aGUgYXR0ZW51YXRpb24tYmFzZWRcbiAgICAgICAgICAvLyBhbHBoYSBhYm92ZSBpcyBub24temVybyBldmVuIGF0IG5vb24sIHdoaWNoIHNsaWdodGx5IGRhcmtlbnMgdGhlIGxpdFxuICAgICAgICAgIC8vIHNpZGUuIEdhdGUgaXQgd2l0aCBhIGRheS9uaWdodCBtYXNrIHNvIGRhcmtlbmluZyBvbmx5IGFwcGVhcnMgYWNyb3NzXG4gICAgICAgICAgLy8gdGhlIHRlcm1pbmF0b3IgYW5kIG9udG8gdGhlIG5pZ2h0IHNpZGUuXG4gICAgICAgICAgLy8gZkxpZ2h0QW5nbGUgPSBkb3Qoc3VuRGlyLCBzdXJmYWNlTm9ybWFsKTogKzEgYXQgdGhlIHN1YnNvbGFyIHBvaW50XG4gICAgICAgICAgLy8gKG5vb24pLCAwIGF0IHRoZSB0ZXJtaW5hdG9yLCAtMSBhdCBtaWRuaWdodC4gc21vb3Roc3RlcCBtYXBzIHRoZSBkYXlcbiAgICAgICAgICAvLyBzaWRlICg+PSAwLjIpIHRvIDAgKG5vIGRhcmtlbmluZyksIHJhbXBzIHRocm91Z2ggdGhlIHRlcm1pbmF0b3IsIGFuZFxuICAgICAgICAgIC8vIHJlYWNoZXMgZnVsbCBkYXJrZW5pbmcgb24gdGhlIG5pZ2h0IHNpZGUgKDw9IC0wLjIpLlxuICAgICAgICAgIGZsb2F0IGZOaWdodE1hc2sgPSBzbW9vdGhzdGVwKDAuMiwgLTAuMiwgZkxpZ2h0QW5nbGUpO1xuICAgICAgICAgIGZyYWdDb2xvci5hICo9IGZOaWdodE1hc2s7XG5cbiAgICAgICAgICAvLyBGYWRlIG91dCB0aGUgZW50aXJlIGRheS9uaWdodCBzaGFkaW5nIGVmZmVjdCBhcyB0aGUgdXNlciB6b29tcyBpbi5cbiAgICAgICAgICAvLyBBdCB6b29tIGxldmVscyBhYm92ZSBBVE1PU1BIRVJFX0ZBREVfWk9PTV9FTkQgdGhlIGVmZmVjdCBpcyBpbnZpc2libGUsXG4gICAgICAgICAgLy8gc28gaXQgZG9lc24ndCBvYnNjdXJlIG1hcCBkZXRhaWwgYXQgc3RyZWV0L2NpdHkgc2NhbGUuXG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZkF0bW9zcGhlcmVab29tRmFkZTtcbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOkRFQ0tHTF9GSUxURVJfQ09MT1InOiBgYFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIEF0bW9zcGhlcmVMYXllclByb3BzPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljJztcblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IHtjb25maWcsIHpvb21GYWRlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAuLi5BVE1PU1BIRVJFX1VOSUZPUk1TLFxuICAgICAgICB2M1N1blBvczogY29uZmlnLmF6aW11dGggPyBhbmdsZVRvU3VuUG9zKHRvUmFkaWFucyhjb25maWcuYXppbXV0aEFuZ2xlKSkgOiB2M1N1blBvc05vdyxcbiAgICAgICAgZkF0bW9zcGhlcmVab29tRmFkZTogem9vbUZhZGVcbiAgICAgIH07XG4gICAgfVxuICAgIHN1cGVyLmRyYXcoe3VuaWZvcm1zfSk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFNoYWRlcnMoKSxcbiAgICAgIGluamVjdDoge1xuICAgICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIHYzU3VuUG9zO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBnO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZXhwb3N1cmU7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTYW1wbGVzO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3JFU3VuO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkttRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLcjRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbTRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTY2FsZURlcHRoO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkF0bW9zcGhlcmVab29tRmFkZTtcblxuICAgICAgICAgIGNvbnN0IGludCBuU2FtcGxlcyA9ICR7TlVNX1NBTVBMRV9SQVlTfTtcblxuICAgICAgICAgIGZsb2F0IHNjYWxlKGZsb2F0IGZDb3MpIHtcbiAgICAgICAgICAgIGZsb2F0IHggPSAxLjAgLSBmQ29zO1xuICAgICAgICAgICAgcmV0dXJuIGZTY2FsZURlcHRoICogZXhwKC0wLjAwMjg3ICsgeCooMC40NTkgKyB4KigzLjgzICsgeCooLTYuOCArIHgqNS4yNSkpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmxvYXQgZ2V0TWllUGhhc2UoZmxvYXQgZkNvcywgZmxvYXQgZkNvczIsIGZsb2F0IGcsIGZsb2F0IGcyKSB7XG4gICAgICAgICAgICByZXR1cm4gMS41ICogKCgxLjAgLSBnMikgLyAoMi4wICsgZzIpKSAqICgxLjAgKyBmQ29zMikgLyBwb3coMS4wICsgZzIgLSAyLjAgKiBnICogZkNvcywgMS41KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmbG9hdCBnZXRSYXlsZWlnaFBoYXNlKGZsb2F0IGZDb3MyKSB7XG4gICAgICAgICAgICByZXR1cm4gMC43NSArIDAuNzUgKiBmQ29zMjtcbiAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgICAgICdmczojbWFpbi1lbmQnOiBgXG4gICAgICAgICAgdmVjMyB2M0NhbWVyYVBvcyA9IGNhbWVyYVBvc2l0aW9uO1xuICAgICAgICAgIHZlYzMgdjNQb3MgPSBwb3NpdGlvbl9jb21tb25zcGFjZS54eXo7XG5cbiAgICAgICAgICBmbG9hdCBnMiA9IGcgKiBnO1xuXG4gICAgICAgICAgdmVjMyB2M0ludldhdmVsZW5ndGggPSB2ZWMzKDEuMCAvIHBvdygwLjY1MCwgNC4wKSwgMS4wIC8gcG93KDAuNTcwLCA0LjApLCAxLjAgLyBwb3coMC40NzUsIDQuMCkpO1xuXG4gICAgICAgICAgZmxvYXQgZklubmVyUmFkaXVzMiA9IGZJbm5lclJhZGl1cyAqIGZJbm5lclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmT3V0ZXJSYWRpdXMyID0gZk91dGVyUmFkaXVzICogZk91dGVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZSA9IDEuMCAvIChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMpO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZU92ZXJTY2FsZURlcHRoID0gMS4wIC8gKGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cykgLyBmU2NhbGVEZXB0aDtcblxuICAgICAgICAgIGZsb2F0IGNhbWVyYUhlaWdodDIgPSBsZW5ndGgodjNDYW1lcmFQb3MpICogbGVuZ3RoKHYzQ2FtZXJhUG9zKTtcblxuICAgICAgICAgIHZlYzMgdjNSYXkgPSB2M1BvcyAtIHYzQ2FtZXJhUG9zO1xuICAgICAgICAgIGZsb2F0IGZGYXIgPSBsZW5ndGgodjNSYXkpO1xuICAgICAgICAgIHYzUmF5IC89IGZGYXI7XG5cbiAgICAgICAgICBmbG9hdCBCID0gMi4wICogZG90KHYzQ2FtZXJhUG9zLCB2M1JheSk7XG4gICAgICAgICAgZmxvYXQgQyA9IGNhbWVyYUhlaWdodDIgLSBmT3V0ZXJSYWRpdXMyO1xuICAgICAgICAgIGZsb2F0IGZEZXQgPSBtYXgoMC4wLCBCKkIgLSA0LjAgKiBDKTtcbiAgICAgICAgICBmbG9hdCBmTmVhciA9IDAuNSAqICgtQiAtIHNxcnQoZkRldCkpO1xuXG4gICAgICAgICAgdmVjMyB2M1N0YXJ0ID0gdjNDYW1lcmFQb3MgKyB2M1JheSAqIGZOZWFyO1xuICAgICAgICAgIGZGYXIgLT0gZk5lYXI7XG4gICAgICAgICAgZmxvYXQgZlN0YXJ0QW5nbGUgPSBkb3QodjNSYXksIHYzU3RhcnQpIC8gZk91dGVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZTdGFydERlcHRoID0gZXhwKC0xLjAgLyBmU2NhbGVEZXB0aCk7XG4gICAgICAgICAgZmxvYXQgZlN0YXJ0T2Zmc2V0ID0gZlN0YXJ0RGVwdGggKiBzY2FsZShmU3RhcnRBbmdsZSk7XG5cbiAgICAgICAgICBmbG9hdCBmU2FtcGxlTGVuZ3RoID0gZkZhciAvIGZTYW1wbGVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZWRMZW5ndGggPSBmU2FtcGxlTGVuZ3RoICogZlNjYWxlO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVSYXkgPSB2M1JheSAqIGZTYW1wbGVMZW5ndGg7XG4gICAgICAgICAgdmVjMyB2M1NhbXBsZVBvaW50ID0gdjNTdGFydCArIHYzU2FtcGxlUmF5ICogMC41O1xuXG4gICAgICAgICAgdmVjMyB2M0Zyb250Q29sb3IgPSB2ZWMzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG5TYW1wbGVzOyBpKyspXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmxvYXQgZkhlaWdodCA9IGxlbmd0aCh2M1NhbXBsZVBvaW50KTtcbiAgICAgICAgICAgIGZsb2F0IGZEZXB0aCA9IGV4cChmU2NhbGVPdmVyU2NhbGVEZXB0aCAqIChmSW5uZXJSYWRpdXMgLSBmSGVpZ2h0KSk7XG4gICAgICAgICAgICBmbG9hdCBmTGlnaHRBbmdsZSA9IGRvdCh2M1N1blBvcywgdjNTYW1wbGVQb2ludCkgLyBmSGVpZ2h0O1xuICAgICAgICAgICAgZmxvYXQgZkNhbWVyYUFuZ2xlID0gZG90KHYzUmF5LCB2M1NhbXBsZVBvaW50KSAvIGZIZWlnaHQ7XG4gICAgICAgICAgICBmbG9hdCBmU2NhdHRlciA9IChmU3RhcnRPZmZzZXQgKyBmRGVwdGggKiAoc2NhbGUoZkxpZ2h0QW5nbGUpIC0gc2NhbGUoZkNhbWVyYUFuZ2xlKSkpO1xuICAgICAgICAgICAgdmVjMyB2M0F0dGVudWF0ZSA9IGV4cCgtZlNjYXR0ZXIgKiAodjNJbnZXYXZlbGVuZ3RoICogZktyNFBJICsgZkttNFBJKSk7XG5cbiAgICAgICAgICAgIHYzRnJvbnRDb2xvciArPSB2M0F0dGVudWF0ZSAqIChmRGVwdGggKiBmU2NhbGVkTGVuZ3RoKTtcbiAgICAgICAgICAgIHYzU2FtcGxlUG9pbnQgKz0gdjNTYW1wbGVSYXk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmVjMyBjMCA9IHYzRnJvbnRDb2xvciAqICh2M0ludldhdmVsZW5ndGggKiBmS3JFU3VuKTtcbiAgICAgICAgICB2ZWMzIGMxID0gdjNGcm9udENvbG9yICogZkttRVN1bjtcblxuICAgICAgICAgIHZlYzMgdjNEaXJlY3Rpb24gPSB2M0NhbWVyYVBvcyAtIHYzUG9zO1xuXG4gICAgICAgICAgZmxvYXQgZkNvcyA9IGRvdCh2M1N1blBvcywgdjNEaXJlY3Rpb24pIC8gbGVuZ3RoKHYzRGlyZWN0aW9uKTtcbiAgICAgICAgICBmbG9hdCBmQ29zMiA9IGZDb3MgKiBmQ29zO1xuXG4gICAgICAgICAgdmVjMyBza3lDb2xvciA9IGdldFJheWxlaWdoUGhhc2UoZkNvczIpICogYzAgKyBnZXRNaWVQaGFzZShmQ29zLCBmQ29zMiwgZywgZzIpICogYzE7XG5cbiAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KHNreUNvbG9yLCAxLjApO1xuICAgICAgICAgIGZyYWdDb2xvci5hID0gZnJhZ0NvbG9yLmI7XG5cbiAgICAgICAgICAvLyBGYWRlIHRoZSBza3kgaGFsbyBvdXQgYXMgdGhlIHVzZXIgem9vbXMgaW4gcGFzdCBjb250aW5lbnQgc2NhbGUuXG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZkF0bW9zcGhlcmVab29tRmFkZTtcbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOkRFQ0tHTF9GSUxURVJfQ09MT1InOiBgYFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgQVRNT1NQSEVSRV9QQVJBTUVURVJTID0ge1xuICBkZXB0aFRlc3Q6IGZhbHNlLFxuICBibGVuZEZ1bmM6IFsweDAzMDIsIDB4MDMwMywgMSwgMHgwMzAzXSwgLy8gU1JDX0FMUEhBLCBPTkVfTUlOVVNfU1JDX0FMUEhBLCBPTkUsIE9ORV9NSU5VU19TUkNfQUxQSEFcbiAgYmxlbmRFcXVhdGlvbjogWzB4ODAwNiwgMHg4MDA2XSAvLyBGVU5DX0FERFxufTtcblxuY29uc3QgQVRNT1NQSEVSRV9TS1lfUEFSQU1FVEVSUyA9IHtcbiAgY3VsbEZhY2U6IDB4MDQwNCwgLy8gR0wuRlJPTlRcbiAgZGVwdGhNYXNrOiBmYWxzZSxcbiAgYmxlbmRGdW5jOiBbMHgwMzAyLCAweDAzMDMsIDEsIDB4MDMwM10sXG4gIGJsZW5kRXF1YXRpb246IFsweDgwMDYsIDB4ODAwNl1cbn07XG5cbi8qKlxuICogU29mdCwgc3VuLWluZGVwZW5kZW50IGdsb3cuIFJhZGlpIGFyZSBpbiBkZWNrLmdsIGNvbW1vbiBzcGFjZVxuICogKEdMT0JFX0NPTU1PTl9SQURJVVMgPSAyNTY7IGF0bW9zcGhlcmUgdXNlcyB+MjU4IGFzIGEgc2xpZ2h0IGZ1ZGdlKS5cbiAqIE91dGVyIOKJiCAxNCUgbGFyZ2VyIHRoYW4gaW5uZXIgYXQgcmFkaXVzIG11bHRpcGxpZXIgPSAxIChtYXRjaGVzIHRoZSBiYXNlIG1lc2gpLlxuICovXG5jb25zdCBIVUdFX0hBTE9fSU5ORVJfUkFESVVTID0gMjU4O1xuY29uc3QgSFVHRV9IQUxPX0JBU0VfT1VURVJfUkFESVVTID0gMjk0O1xuY29uc3QgSFVHRV9IQUxPX0JBU0VfU0hFTEwgPSBIVUdFX0hBTE9fQkFTRV9PVVRFUl9SQURJVVMgLSBIVUdFX0hBTE9fSU5ORVJfUkFESVVTO1xuLyoqIE1hdGNoZXMgdGhlIEhhbG8gUmFkaXVzIHNsaWRlciBtYXg7IGhpZ2hlciB2YWx1ZXMgY2FuIHByb2R1Y2UgYSBibGFjay1kaXNjIGFydGlmYWN0LiAqL1xuY29uc3QgSFVHRV9IQUxPX1JBRElVU19NQVggPSAzLjU7XG5cbmNvbnN0IEhVR0VfSEFMT19VTklGT1JNUyA9IHtcbiAgZklubmVyUmFkaXVzOiBIVUdFX0hBTE9fSU5ORVJfUkFESVVTLFxuICAvLyBTb2Z0IGN5YW4gbWF0Y2hpbmcgdGhlIHJlZmVyZW5jZSBodWdlLWhhbG8gbG9vay5cbiAgdjNIYWxvQ29sb3I6IFswLjQ1LCAwLjcyLCAxLjBdLFxuICBmSGFsb0ludGVuc2l0eTogMS4wXG59O1xuXG5jb25zdCBIVUdFX0hBTE9fUEFSQU1FVEVSUyA9IHtcbiAgY3VsbEZhY2U6IDB4MDQwNCwgLy8gR0wuRlJPTlRcbiAgZGVwdGhNYXNrOiBmYWxzZSxcbiAgLy8gTGFyZ2Ugc2hlbGxzIG9mdGVuIGVuY2xvc2UgdGhlIGNhbWVyYTsgZGlzYWJsZSBkZXB0aCBzbyB0aGUgcmluZyBzdGlsbCBkcmF3cy5cbiAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgYmxlbmRGdW5jOiBbMHgwMzAyLCAweDAzMDMsIDEsIDB4MDMwM10sIC8vIFNSQ19BTFBIQSwgT05FX01JTlVTX1NSQ19BTFBIQVxuICBibGVuZEVxdWF0aW9uOiBbMHg4MDA2LCAweDgwMDZdXG59O1xuXG5mdW5jdGlvbiByZXNvbHZlSHVnZUhhbG9SYWRpdXMoY29uZmlnOiBHbG9iZUNvbmZpZyk6IG51bWJlciB7XG4gIGNvbnN0IG11bHRpcGxpZXIgPSBOdW1iZXIuaXNGaW5pdGUoY29uZmlnLmh1Z2VIYWxvUmFkaXVzKVxuICAgID8gKGNvbmZpZy5odWdlSGFsb1JhZGl1cyBhcyBudW1iZXIpXG4gICAgOiBERUZBVUxUX0dMT0JFX0NPTkZJRy5odWdlSGFsb1JhZGl1cztcbiAgLy8gU2NhbGUgc2hlbGwgdGhpY2tuZXNzOyBrZWVwIG91dGVyIGFib3ZlIHRoZSBwbGFuZXQgc3VyZmFjZS5cbiAgcmV0dXJuIChcbiAgICBIVUdFX0hBTE9fSU5ORVJfUkFESVVTICtcbiAgICBIVUdFX0hBTE9fQkFTRV9TSEVMTCAqIE1hdGgubWF4KE1hdGgubWluKG11bHRpcGxpZXIsIEhVR0VfSEFMT19SQURJVVNfTUFYKSwgMC4wNSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUh1Z2VIYWxvT3BhY2l0eShjb25maWc6IEdsb2JlQ29uZmlnKTogbnVtYmVyIHtcbiAgY29uc3Qgb3BhY2l0eSA9IE51bWJlci5pc0Zpbml0ZShjb25maWcuaHVnZUhhbG9PcGFjaXR5KVxuICAgID8gKGNvbmZpZy5odWdlSGFsb09wYWNpdHkgYXMgbnVtYmVyKVxuICAgIDogREVGQVVMVF9HTE9CRV9DT05GSUcuaHVnZUhhbG9PcGFjaXR5O1xuICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgb3BhY2l0eSkpO1xufVxuXG4vKipcbiAqIFZpZXctaW5kZXBlbmRlbnQgYXRtb3NwaGVyZTogYSBsYXJnZSB1bmlmb3JtIGVtaXNzaXZlIGF1cmEgYXJvdW5kIHRoZSBnbG9iZS5cbiAqIFVubGlrZSBBdG1vc3BoZXJlU2t5TGF5ZXJSZWFsaXN0aWMsIHRoaXMgaWdub3JlcyBzdW4gZGlyZWN0aW9uIGFuZCB1c2VzIGFcbiAqIGxpbmVhciByYWRpYWwgZmFsbG9mZiB0aHJvdWdoIGEgdGhpY2sgc2hlbGwgKG1heCBhdCB0aGUgc3VyZmFjZSDihpIgMCBhdCBvdXRlciByYWRpdXMpLlxuICovXG5leHBvcnQgY2xhc3MgQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIgZXh0ZW5kcyBTaW1wbGVNZXNoTGF5ZXI8YW55LCBBdG1vc3BoZXJlTGF5ZXJQcm9wcz4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0F0bW9zcGhlcmVIdWdlSGFsb0xheWVyJztcblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IHtjb25maWcsIHpvb21GYWRlfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAuLi5IVUdFX0hBTE9fVU5JRk9STVMsXG4gICAgICAgIGZIYWxvT3BhY2l0eTogcmVzb2x2ZUh1Z2VIYWxvT3BhY2l0eShjb25maWcpLFxuICAgICAgICBmQXRtb3NwaGVyZVpvb21GYWRlOiB6b29tRmFkZVxuICAgICAgfTtcbiAgICB9XG4gICAgc3VwZXIuZHJhdyh7dW5pZm9ybXN9KTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0U2hhZGVycygpLFxuICAgICAgaW5qZWN0OiB7XG4gICAgICAgICdmczojZGVjbCc6IGBcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZJbm5lclJhZGl1cztcbiAgICAgICAgICB1bmlmb3JtIHZlYzMgdjNIYWxvQ29sb3I7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSGFsb0ludGVuc2l0eTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZIYWxvT3BhY2l0eTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZBdG1vc3BoZXJlWm9vbUZhZGU7XG4gICAgICAgIGAsXG4gICAgICAgICdmczojbWFpbi1lbmQnOiBgXG4gICAgICAgICAgdmVjMyB2M0NhbWVyYVBvcyA9IGNhbWVyYVBvc2l0aW9uO1xuICAgICAgICAgIHZlYzMgdjNQb3MgPSBwb3NpdGlvbl9jb21tb25zcGFjZS54eXo7XG4gICAgICAgICAgLy8gT3V0ZXIgcmFkaXVzIGZyb20gdGhlIGFjdHVhbCBtZXNoIHZlcnRleCBzbyBzaXplU2NhbGUgc3RheXMgaW4gc3luYy5cbiAgICAgICAgICBmbG9hdCBmT3V0ZXJSYWRpdXMgPSBsZW5ndGgodjNQb3MpO1xuICAgICAgICAgIHZlYzMgdjNSYXkgPSBub3JtYWxpemUodjNQb3MgLSB2M0NhbWVyYVBvcyk7XG5cbiAgICAgICAgICAvLyBJbXBhY3QgcGFyYW1ldGVyIG9mIHRoZSB2aWV3IHJheSAocGVycGVuZGljdWxhciBkaXN0YW5jZSBmcm9tIGdsb2JlXG4gICAgICAgICAgLy8gY2VudGVyIHRvIHRoZSByYXkpLiBTdGFibGUgd2hlbiB0aGUgY2FtZXJhIGlzIGluc2lkZSB0aGUgb3V0ZXIgc2hlbGwsXG4gICAgICAgICAgLy8gdW5saWtlIG5lYXIvZmFyIHNwaGVyZS1pbnRlcnNlY3Rpb24gbWF0aCB3aGljaCBicmVha3MgaW4gdGhhdCBjYXNlXG4gICAgICAgICAgLy8gYW5kIHByb2R1Y2VkIGEgYmxhY2sgZGlzYyBhdCBoaWdoIHJhZGl1cyBtdWx0aXBsaWVycy5cbiAgICAgICAgICBmbG9hdCBmRE1pbiA9IGxlbmd0aChjcm9zcyh2M0NhbWVyYVBvcywgdjNSYXkpKTtcblxuICAgICAgICAgIC8vIExpbmVhciBmYWxsb2ZmIGluIHRoZSBhbm51bHVzIG9ubHk6IG1heCBhdCB0aGUgc3VyZmFjZSwgemVybyBhdCBvdXRlci5cbiAgICAgICAgICBmbG9hdCBmU2hlbGwgPSBtYXgoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzLCAwLjAwMDEpO1xuICAgICAgICAgIGZsb2F0IGZHbG93ID0gMC4wO1xuICAgICAgICAgIGlmIChmRE1pbiA+PSBmSW5uZXJSYWRpdXMgJiYgZkRNaW4gPCBmT3V0ZXJSYWRpdXMpIHtcbiAgICAgICAgICAgIGZsb2F0IHQgPSAoZkRNaW4gLSBmSW5uZXJSYWRpdXMpIC8gZlNoZWxsO1xuICAgICAgICAgICAgZkdsb3cgPSAxLjAgLSB0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZHbG93ICo9IGZIYWxvSW50ZW5zaXR5O1xuXG4gICAgICAgICAgLy8gU3RyYWlnaHQgYWxwaGEgKG5vdCBwcmVtdWx0aXBsaWVkKSBmb3IgU1JDX0FMUEhBIGJsZW5kaW5nLlxuICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQodjNIYWxvQ29sb3IsIGZHbG93ICogZkhhbG9PcGFjaXR5KTtcbiAgICAgICAgICBmcmFnQ29sb3IuYSAqPSBmQXRtb3NwaGVyZVpvb21GYWRlO1xuICAgICAgICBgLFxuICAgICAgICAnZnM6REVDS0dMX0ZJTFRFUl9DT0xPUic6IGBgXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIgPSAoe2NvbmZpZywgem9vbX06IHtjb25maWc6IEdsb2JlQ29uZmlnOyB6b29tPzogbnVtYmVyfSkgPT4ge1xuICBjb25zdCB6b29tRmFkZSA9IGF0bW9zcGhlcmVab29tRmFkZSh6b29tID8/IDApO1xuICByZXR1cm4gbmV3IEF0bW9zcGhlcmVMYXllclJlYWxpc3RpYyh7XG4gICAgaWQ6ICdhdG1vc3BoZXJlJyxcbiAgICBkYXRhOiBbWzAsIDAsIDBdXSxcbiAgICBjb25maWcsXG4gICAgem9vbUZhZGUsXG4gICAgY29vcmRpbmF0ZU9yaWdpbjogWzAsIDAsIDBdLFxuICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICBnZXRQb3NpdGlvbjogKChkOiBudW1iZXJbXSkgPT4gZCkgYXMgYW55LFxuICAgIGdldENvbG9yOiBbMCwgMCwgMF0sXG4gICAgbWVzaDogR0xPQkVfTUVTSF9JTk5FUixcbiAgICBwYXJhbWV0ZXJzOiBBVE1PU1BIRVJFX1BBUkFNRVRFUlNcbiAgfSk7XG59O1xuXG4vKiogUmVhbGlzdGljIHN1bi1saXQgc2NhdHRlcmluZyBza3kgaGFsbyAodGhpbiBsaW1iIGdsb3cpLiAqL1xuZXhwb3J0IGNvbnN0IGdldEdsb2JlQXRtb3NwaGVyZVNreUxheWVyID0gKHtcbiAgY29uZmlnLFxuICB6b29tXG59OiB7XG4gIGNvbmZpZzogR2xvYmVDb25maWc7XG4gIHpvb20/OiBudW1iZXI7XG59KSA9PiB7XG4gIGNvbnN0IHpvb21GYWRlID0gYXRtb3NwaGVyZVpvb21GYWRlKHpvb20gPz8gMCk7XG4gIHJldHVybiBuZXcgQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljKHtcbiAgICBpZDogJ2F0bW9zcGhlcmUtc2t5JyxcbiAgICBkYXRhOiBbWzAsIDAsIDBdXSxcbiAgICBjb25maWcsXG4gICAgem9vbUZhZGUsXG4gICAgY29vcmRpbmF0ZU9yaWdpbjogWzAsIDAsIDBdLFxuICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICBnZXRQb3NpdGlvbjogKChkOiBudW1iZXJbXSkgPT4gZCkgYXMgYW55LFxuICAgIGdldENvbG9yOiBbMCwgMCwgMF0sXG4gICAgbWVzaDogR0xPQkVfTUVTSF9PVVRFUixcbiAgICBwYXJhbWV0ZXJzOiBBVE1PU1BIRVJFX1NLWV9QQVJBTUVURVJTXG4gIH0pO1xufTtcblxuLyoqXG4gKiBMYXJnZSB1bmlmb3JtIGdsb3cgZHJhd24gaW4gYWRkaXRpb24gdG8gdGhlIHJlYWxpc3RpYyBza3kgaGFsbyB3aGVuXG4gKiBgY29uZmlnLmh1Z2VIYWxvYCBpcyBlbmFibGVkLiBSZXR1cm5zIG51bGwgd2hlbiBkaXNhYmxlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEdsb2JlSHVnZUhhbG9MYXllciA9ICh7Y29uZmlnLCB6b29tfToge2NvbmZpZzogR2xvYmVDb25maWc7IHpvb20/OiBudW1iZXJ9KSA9PiB7XG4gIGlmICghY29uZmlnLmh1Z2VIYWxvKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgem9vbUZhZGUgPSBhdG1vc3BoZXJlWm9vbUZhZGUoem9vbSA/PyAwKTtcbiAgY29uc3Qgb3V0ZXJSYWRpdXMgPSByZXNvbHZlSHVnZUhhbG9SYWRpdXMoY29uZmlnKTtcbiAgLy8gS2VlcCBtZXNoIGV4dGVudCBpbiBzeW5jIHdpdGggdGhlIGRlc2lyZWQgb3V0ZXIgcmFkaXVzIChiYXNlIG1lc2ggPSBkZWZhdWx0IG91dGVyKS5cbiAgY29uc3Qgc2l6ZVNjYWxlID0gb3V0ZXJSYWRpdXMgLyBIVUdFX0hBTE9fQkFTRV9PVVRFUl9SQURJVVM7XG4gIHJldHVybiBuZXcgQXRtb3NwaGVyZUh1Z2VIYWxvTGF5ZXIoe1xuICAgIGlkOiAnYXRtb3NwaGVyZS1odWdlLWhhbG8nLFxuICAgIGRhdGE6IFtbMCwgMCwgMF1dLFxuICAgIGNvbmZpZyxcbiAgICB6b29tRmFkZSxcbiAgICBjb29yZGluYXRlT3JpZ2luOiBbMCwgMCwgMF0sXG4gICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOLFxuICAgIGdldFBvc2l0aW9uOiAoKGQ6IG51bWJlcltdKSA9PiBkKSBhcyBhbnksXG4gICAgZ2V0Q29sb3I6IFswLCAwLCAwXSxcbiAgICBtZXNoOiBHTE9CRV9NRVNIX0hVR0VfSEFMTyxcbiAgICBzaXplU2NhbGUsXG4gICAgcGFyYW1ldGVyczogSFVHRV9IQUxPX1BBUkFNRVRFUlNcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFRQSxpQkFBaUIsUUFBTyxlQUFlO0FBQy9DLFNBQVFDLGVBQWUsUUFBTyxzQkFBc0I7QUFDcEQsU0FBUUMsY0FBYyxRQUFPLGlCQUFpQjtBQUM5QyxTQUFRQyxPQUFPLFFBQU8sZUFBZTtBQUNyQyxTQUFRQyxjQUFjLFFBQU8sY0FBYztBQUUzQyxTQUFRQyxvQkFBb0IsUUFBeUIsc0JBQXNCO0FBRTNFLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJQyxPQUFlO0VBQUEsT0FBY0EsT0FBTyxHQUFHQyxJQUFJLENBQUNDLEVBQUUsR0FBSSxHQUFHO0FBQUE7QUFFeEUsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLEtBQWEsRUFBK0I7RUFDOUQsT0FBTyxDQUFDSCxJQUFJLENBQUNJLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDLEVBQUVILElBQUksQ0FBQ0ssR0FBRyxDQUFDRixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELElBQU1HLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBSUgsS0FBYSxFQUFlO0VBQ2pELE9BQU8sSUFBSVIsT0FBTyxDQUFDTyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUNJLFNBQVMsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxJQUFNQyxnQkFBZ0IsR0FBRyxJQUFJZCxjQUFjLENBQUM7RUFDMUNlLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLElBQUksRUFBRSxHQUFHO0VBQ1RDLEtBQUssRUFBRTtBQUNULENBQUMsQ0FBQztBQUVGLElBQU1DLGdCQUFnQixHQUFHLElBQUlsQixjQUFjLENBQUM7RUFDMUNlLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLElBQUksRUFBRSxHQUFHO0VBQ1RDLEtBQUssRUFBRTtBQUNULENBQUMsQ0FBQzs7QUFFRjtBQUNBLElBQU1FLG9CQUFvQixHQUFHLElBQUluQixjQUFjLENBQUM7RUFDOUNlLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLElBQUksRUFBRSxHQUFHO0VBQ1RDLEtBQUssRUFBRTtBQUNULENBQUMsQ0FBQztBQUVGLElBQU9HLEdBQUcsR0FBVSxDQUFDO0VBQVRDLEdBQUcsR0FBUSxFQUFFO0FBQ3pCLElBQU1DLFNBQVMsR0FBR3BCLGNBQWMsQ0FBQ3FCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUgsR0FBRyxFQUFFRCxHQUFHLENBQUM7QUFDdEQsSUFBTUssV0FBVyxHQUFHYixhQUFhLENBQUNVLFNBQVMsQ0FBQ0ksT0FBTyxHQUFHcEIsSUFBSSxDQUFDQyxFQUFFLENBQUM7QUFFOUQsSUFBTW9CLGVBQWUsR0FBRyxDQUFDOztBQUV6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsMEJBQTBCLEdBQUcsR0FBRztBQUN0QyxJQUFNQyx3QkFBd0IsR0FBRyxDQUFDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNDLGtCQUFrQkEsQ0FBQ0MsSUFBWSxFQUFVO0VBQ3ZELElBQUlBLElBQUksSUFBSUgsMEJBQTBCLEVBQUUsT0FBTyxDQUFDO0VBQ2hELElBQUlHLElBQUksSUFBSUYsd0JBQXdCLEVBQUUsT0FBTyxDQUFDO0VBQzlDLElBQU1HLENBQUMsR0FDTCxDQUFDRCxJQUFJLEdBQUdILDBCQUEwQixLQUFLQyx3QkFBd0IsR0FBR0QsMEJBQTBCLENBQUM7RUFDL0Y7RUFDQSxPQUFPLENBQUMsR0FBR0ksQ0FBQyxHQUFHQSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBR0EsQ0FBQyxDQUFDO0FBQ2hDO0FBRUEsSUFBTUMsbUJBQW1CLEdBQUc7RUFDMUJDLFFBQVEsRUFBRVQsV0FBVztFQUNyQlUsUUFBUSxFQUFFLENBQUM7RUFDWEMsUUFBUSxFQUFFLENBQUM7RUFDWEMsQ0FBQyxFQUFFLENBQUMsSUFBSTtFQUNSQyxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUU7RUFDckJDLE9BQU8sRUFBRSxNQUFNLEdBQUcsRUFBRTtFQUNwQkMsTUFBTSxFQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUdsQyxJQUFJLENBQUNDLEVBQUU7RUFDN0JrQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBR25DLElBQUksQ0FBQ0MsRUFBRTtFQUM1Qm1DLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxZQUFZLEVBQUUsR0FBRztFQUNqQkMsWUFBWSxFQUFFLEdBQUc7RUFDakJDLDBCQUEwQixFQUFFLEdBQUc7RUFDL0JDLHdCQUF3QixFQUFFO0FBQzVCLENBQUM7QUFRRCxXQUFhQyx3QkFBd0IsMEJBQUFDLGdCQUFBO0VBQUEsU0FBQUQseUJBQUE7SUFBQUUsZUFBQSxPQUFBRix3QkFBQTtJQUFBLE9BQUFHLFVBQUEsT0FBQUgsd0JBQUEsRUFBQUksU0FBQTtFQUFBO0VBQUFDLFNBQUEsQ0FBQUwsd0JBQUEsRUFBQUMsZ0JBQUE7RUFBQSxPQUFBSyxZQUFBLENBQUFOLHdCQUFBO0lBQUFPLEdBQUE7SUFBQUMsS0FBQSxFQUduQyxTQUFBQyxJQUFJQSxDQUFBQyxJQUFBLEVBQXVDO01BQUEsSUFBckNDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO01BQ1osSUFBQUMsV0FBQSxHQUEyQixJQUFJLENBQUNDLEtBQUs7UUFBOUJDLE1BQU0sR0FBQUYsV0FBQSxDQUFORSxNQUFNO1FBQUVDLFFBQVEsR0FBQUgsV0FBQSxDQUFSRyxRQUFRO01BQ3ZCLElBQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsS0FBSztNQUM5QixJQUFJQSxLQUFLLEVBQUU7UUFDUkEsS0FBSyxDQUFTSCxLQUFLLENBQUNGLFFBQVEsR0FBQU8sYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDdkJGLEtBQUssQ0FBU0gsS0FBSyxDQUFDRixRQUFRLEdBQzdCekIsbUJBQW1CO1VBQ3RCYSx3QkFBd0IsRUFBRWUsTUFBTSxDQUFDSyxVQUFVLEdBQUdMLE1BQU0sQ0FBQ00saUJBQWlCLEdBQUcsQ0FBQztVQUMxRWpDLFFBQVEsRUFBRTJCLE1BQU0sQ0FBQ25DLE9BQU8sR0FBR2QsYUFBYSxDQUFDUixTQUFTLENBQUN5RCxNQUFNLENBQUNPLFlBQVksQ0FBQyxDQUFDLEdBQUczQyxXQUFXO1VBQ3RGNEMsbUJBQW1CLEVBQUVQO1FBQVEsRUFDOUI7TUFDSDtNQUNBUSxhQUFBLENBQUF2Qix3QkFBQSxvQkFBVztRQUFDVyxRQUFRLEVBQVJBO01BQVEsQ0FBQztJQUN2QjtFQUFDO0lBQUFKLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFnQixVQUFVQSxDQUFBLEVBQVE7TUFDaEIsT0FBQU4sYUFBQSxDQUFBQSxhQUFBLEtBQUFLLGFBQUEsQ0FBQXZCLHdCQUFBO1FBRUV5QixNQUFNLEVBQUU7VUFDTixVQUFVLG9rQkFBQUMsTUFBQSxDQW9CZTlDLGVBQWUsbU1BTXZDO1VBQ0QsY0FBYyx1NUdBeUViO1VBQ0Qsd0JBQXdCO1FBQzFCO01BQUM7SUFFTDtFQUFDO0FBQUEsRUE5SDJDNUIsZUFBZTtBQStINUQyRSxlQUFBLENBL0hZM0Isd0JBQXdCLGVBQ2hCLDBCQUEwQjtBQWdJL0MsV0FBYTRCLDJCQUEyQiwwQkFBQUMsaUJBQUE7RUFBQSxTQUFBRCw0QkFBQTtJQUFBMUIsZUFBQSxPQUFBMEIsMkJBQUE7SUFBQSxPQUFBekIsVUFBQSxPQUFBeUIsMkJBQUEsRUFBQXhCLFNBQUE7RUFBQTtFQUFBQyxTQUFBLENBQUF1QiwyQkFBQSxFQUFBQyxpQkFBQTtFQUFBLE9BQUF2QixZQUFBLENBQUFzQiwyQkFBQTtJQUFBckIsR0FBQTtJQUFBQyxLQUFBLEVBR3RDLFNBQUFDLElBQUlBLENBQUFxQixLQUFBLEVBQXVDO01BQUEsSUFBckNuQixRQUFRLEdBQUFtQixLQUFBLENBQVJuQixRQUFRO01BQ1osSUFBQW9CLFlBQUEsR0FBMkIsSUFBSSxDQUFDbEIsS0FBSztRQUE5QkMsTUFBTSxHQUFBaUIsWUFBQSxDQUFOakIsTUFBTTtRQUFFQyxRQUFRLEdBQUFnQixZQUFBLENBQVJoQixRQUFRO01BQ3ZCLElBQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsS0FBSztNQUM5QixJQUFJQSxLQUFLLEVBQUU7UUFDUkEsS0FBSyxDQUFTSCxLQUFLLENBQUNGLFFBQVEsR0FBQU8sYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDdkJGLEtBQUssQ0FBU0gsS0FBSyxDQUFDRixRQUFRLEdBQzdCekIsbUJBQW1CO1VBQ3RCQyxRQUFRLEVBQUUyQixNQUFNLENBQUNuQyxPQUFPLEdBQUdkLGFBQWEsQ0FBQ1IsU0FBUyxDQUFDeUQsTUFBTSxDQUFDTyxZQUFZLENBQUMsQ0FBQyxHQUFHM0MsV0FBVztVQUN0RjRDLG1CQUFtQixFQUFFUDtRQUFRLEVBQzlCO01BQ0g7TUFDQVEsYUFBQSxDQUFBSywyQkFBQSxvQkFBVztRQUFDakIsUUFBUSxFQUFSQTtNQUFRLENBQUM7SUFDdkI7RUFBQztJQUFBSixHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBZ0IsVUFBVUEsQ0FBQSxFQUFRO01BQ2hCLE9BQUFOLGFBQUEsQ0FBQUEsYUFBQSxLQUFBSyxhQUFBLENBQUFLLDJCQUFBO1FBRUVILE1BQU0sRUFBRTtVQUNOLFVBQVUsMGRBQUFDLE1BQUEsQ0FpQmU5QyxlQUFlLGlmQWN2QztVQUNELGNBQWMsc3BGQWdFYjtVQUNELHdCQUF3QjtRQUMxQjtNQUFDO0lBRUw7RUFBQztBQUFBLEVBekg4QzVCLGVBQWU7QUEwSC9EMkUsZUFBQSxDQTFIWUMsMkJBQTJCLGVBQ25CLDZCQUE2QjtBQTJIbEQsSUFBTUkscUJBQXFCLEdBQUc7RUFDNUJDLFNBQVMsRUFBRSxLQUFLO0VBQ2hCQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7RUFBRTtFQUN4Q0MsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxJQUFNQyx5QkFBeUIsR0FBRztFQUNoQ0MsUUFBUSxFQUFFLE1BQU07RUFBRTtFQUNsQkMsU0FBUyxFQUFFLEtBQUs7RUFDaEJKLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztFQUN0Q0MsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU07QUFDaEMsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUksc0JBQXNCLEdBQUcsR0FBRztBQUNsQyxJQUFNQywyQkFBMkIsR0FBRyxHQUFHO0FBQ3ZDLElBQU1DLG9CQUFvQixHQUFHRCwyQkFBMkIsR0FBR0Qsc0JBQXNCO0FBQ2pGO0FBQ0EsSUFBTUcsb0JBQW9CLEdBQUcsR0FBRztBQUVoQyxJQUFNQyxrQkFBa0IsR0FBRztFQUN6Qi9DLFlBQVksRUFBRTJDLHNCQUFzQjtFQUNwQztFQUNBSyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztFQUM5QkMsY0FBYyxFQUFFO0FBQ2xCLENBQUM7QUFFRCxJQUFNQyxvQkFBb0IsR0FBRztFQUMzQlQsUUFBUSxFQUFFLE1BQU07RUFBRTtFQUNsQkMsU0FBUyxFQUFFLEtBQUs7RUFDaEI7RUFDQUwsU0FBUyxFQUFFLEtBQUs7RUFDaEJDLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztFQUFFO0VBQ3hDQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTTtBQUNoQyxDQUFDO0FBRUQsU0FBU1kscUJBQXFCQSxDQUFDakMsTUFBbUIsRUFBVTtFQUMxRCxJQUFNa0MsVUFBVSxHQUFHQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ3BDLE1BQU0sQ0FBQ3FDLGNBQWMsQ0FBQyxHQUNwRHJDLE1BQU0sQ0FBQ3FDLGNBQWMsR0FDdEIvRixvQkFBb0IsQ0FBQytGLGNBQWM7RUFDdkM7RUFDQSxPQUNFWixzQkFBc0IsR0FDdEJFLG9CQUFvQixHQUFHbEYsSUFBSSxDQUFDNkYsR0FBRyxDQUFDN0YsSUFBSSxDQUFDOEYsR0FBRyxDQUFDTCxVQUFVLEVBQUVOLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxDQUFDO0FBRXJGO0FBRUEsU0FBU1ksc0JBQXNCQSxDQUFDeEMsTUFBbUIsRUFBVTtFQUMzRCxJQUFNeUMsT0FBTyxHQUFHTixNQUFNLENBQUNDLFFBQVEsQ0FBQ3BDLE1BQU0sQ0FBQzBDLGVBQWUsQ0FBQyxHQUNsRDFDLE1BQU0sQ0FBQzBDLGVBQWUsR0FDdkJwRyxvQkFBb0IsQ0FBQ29HLGVBQWU7RUFDeEMsT0FBT2pHLElBQUksQ0FBQzZGLEdBQUcsQ0FBQyxDQUFDLEVBQUU3RixJQUFJLENBQUM4RixHQUFHLENBQUMsQ0FBQyxFQUFFRSxPQUFPLENBQUMsQ0FBQztBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBYUUsdUJBQXVCLDBCQUFBQyxpQkFBQTtFQUFBLFNBQUFELHdCQUFBO0lBQUF2RCxlQUFBLE9BQUF1RCx1QkFBQTtJQUFBLE9BQUF0RCxVQUFBLE9BQUFzRCx1QkFBQSxFQUFBckQsU0FBQTtFQUFBO0VBQUFDLFNBQUEsQ0FBQW9ELHVCQUFBLEVBQUFDLGlCQUFBO0VBQUEsT0FBQXBELFlBQUEsQ0FBQW1ELHVCQUFBO0lBQUFsRCxHQUFBO0lBQUFDLEtBQUEsRUFHbEMsU0FBQUMsSUFBSUEsQ0FBQWtELEtBQUEsRUFBdUM7TUFBQSxJQUFyQ2hELFFBQVEsR0FBQWdELEtBQUEsQ0FBUmhELFFBQVE7TUFDWixJQUFBaUQsWUFBQSxHQUEyQixJQUFJLENBQUMvQyxLQUFLO1FBQTlCQyxNQUFNLEdBQUE4QyxZQUFBLENBQU45QyxNQUFNO1FBQUVDLFFBQVEsR0FBQTZDLFlBQUEsQ0FBUjdDLFFBQVE7TUFDdkIsSUFBTUMsS0FBSyxHQUFHLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxLQUFLO01BQzlCLElBQUlBLEtBQUssRUFBRTtRQUNSQSxLQUFLLENBQVNILEtBQUssQ0FBQ0YsUUFBUSxHQUFBTyxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxLQUN2QkYsS0FBSyxDQUFTSCxLQUFLLENBQUNGLFFBQVEsR0FDN0JnQyxrQkFBa0I7VUFDckJrQixZQUFZLEVBQUVQLHNCQUFzQixDQUFDeEMsTUFBTSxDQUFDO1VBQzVDUSxtQkFBbUIsRUFBRVA7UUFBUSxFQUM5QjtNQUNIO01BQ0FRLGFBQUEsQ0FBQWtDLHVCQUFBLG9CQUFXO1FBQUM5QyxRQUFRLEVBQVJBO01BQVEsQ0FBQztJQUN2QjtFQUFDO0lBQUFKLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFnQixVQUFVQSxDQUFBLEVBQVE7TUFDaEIsT0FBQU4sYUFBQSxDQUFBQSxhQUFBLEtBQUFLLGFBQUEsQ0FBQWtDLHVCQUFBO1FBRUVoQyxNQUFNLEVBQUU7VUFDTixVQUFVLHdOQU1UO1VBQ0QsY0FBYyw2dENBMEJiO1VBQ0Qsd0JBQXdCO1FBQzFCO01BQUM7SUFFTDtFQUFDO0FBQUEsRUExRDBDekUsZUFBZTtBQTJEM0QyRSxlQUFBLENBM0RZOEIsdUJBQXVCLGVBQ2YseUJBQXlCO0FBNEQ5QyxPQUFPLElBQU1LLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUFDLEtBQUEsRUFBNkQ7RUFBQSxJQUF4RGpELE1BQU0sR0FBQWlELEtBQUEsQ0FBTmpELE1BQU07SUFBRTlCLElBQUksR0FBQStFLEtBQUEsQ0FBSi9FLElBQUk7RUFDbkQsSUFBTStCLFFBQVEsR0FBR2hDLGtCQUFrQixDQUFDQyxJQUFJLGFBQUpBLElBQUksY0FBSkEsSUFBSSxHQUFJLENBQUMsQ0FBQztFQUM5QyxPQUFPLElBQUlnQix3QkFBd0IsQ0FBQztJQUNsQ2dFLEVBQUUsRUFBRSxZQUFZO0lBQ2hCQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakJuRCxNQUFNLEVBQU5BLE1BQU07SUFDTkMsUUFBUSxFQUFSQSxRQUFRO0lBQ1JtRCxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCQyxnQkFBZ0IsRUFBRXBILGlCQUFpQixDQUFDcUgsU0FBUztJQUM3Q0MsV0FBVyxFQUFHLFNBQUFBLENBQUNDLENBQVc7TUFBQSxPQUFLQSxDQUFDO0lBQUEsQ0FBUTtJQUN4Q0MsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkJDLElBQUksRUFBRXpHLGdCQUFnQjtJQUN0QjBHLFVBQVUsRUFBRXpDO0VBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7QUFFRDtBQUNBLE9BQU8sSUFBTTBDLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUFDLEtBQUEsRUFNakM7RUFBQSxJQUxKN0QsTUFBTSxHQUFBNkQsS0FBQSxDQUFON0QsTUFBTTtJQUNOOUIsSUFBSSxHQUFBMkYsS0FBQSxDQUFKM0YsSUFBSTtFQUtKLElBQU0rQixRQUFRLEdBQUdoQyxrQkFBa0IsQ0FBQ0MsSUFBSSxhQUFKQSxJQUFJLGNBQUpBLElBQUksR0FBSSxDQUFDLENBQUM7RUFDOUMsT0FBTyxJQUFJNEMsMkJBQTJCLENBQUM7SUFDckNvQyxFQUFFLEVBQUUsZ0JBQWdCO0lBQ3BCQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakJuRCxNQUFNLEVBQU5BLE1BQU07SUFDTkMsUUFBUSxFQUFSQSxRQUFRO0lBQ1JtRCxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCQyxnQkFBZ0IsRUFBRXBILGlCQUFpQixDQUFDcUgsU0FBUztJQUM3Q0MsV0FBVyxFQUFHLFNBQUFBLENBQUNDLENBQVc7TUFBQSxPQUFLQSxDQUFDO0lBQUEsQ0FBUTtJQUN4Q0MsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkJDLElBQUksRUFBRXJHLGdCQUFnQjtJQUN0QnNHLFVBQVUsRUFBRXJDO0VBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTXdDLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUFDLEtBQUEsRUFBNkQ7RUFBQSxJQUF4RC9ELE1BQU0sR0FBQStELEtBQUEsQ0FBTi9ELE1BQU07SUFBRTlCLElBQUksR0FBQTZGLEtBQUEsQ0FBSjdGLElBQUk7RUFDakQsSUFBSSxDQUFDOEIsTUFBTSxDQUFDZ0UsUUFBUSxFQUFFO0lBQ3BCLE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBTS9ELFFBQVEsR0FBR2hDLGtCQUFrQixDQUFDQyxJQUFJLGFBQUpBLElBQUksY0FBSkEsSUFBSSxHQUFJLENBQUMsQ0FBQztFQUM5QyxJQUFNK0YsV0FBVyxHQUFHaEMscUJBQXFCLENBQUNqQyxNQUFNLENBQUM7RUFDakQ7RUFDQSxJQUFNa0UsU0FBUyxHQUFHRCxXQUFXLEdBQUd2QywyQkFBMkI7RUFDM0QsT0FBTyxJQUFJaUIsdUJBQXVCLENBQUM7SUFDakNPLEVBQUUsRUFBRSxzQkFBc0I7SUFDMUJDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQm5ELE1BQU0sRUFBTkEsTUFBTTtJQUNOQyxRQUFRLEVBQVJBLFFBQVE7SUFDUm1ELGdCQUFnQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0JDLGdCQUFnQixFQUFFcEgsaUJBQWlCLENBQUNxSCxTQUFTO0lBQzdDQyxXQUFXLEVBQUcsU0FBQUEsQ0FBQ0MsQ0FBVztNQUFBLE9BQUtBLENBQUM7SUFBQSxDQUFRO0lBQ3hDQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQkMsSUFBSSxFQUFFcEcsb0JBQW9CO0lBQzFCNEcsU0FBUyxFQUFUQSxTQUFTO0lBQ1RQLFVBQVUsRUFBRTNCO0VBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|