@carto/kepler.gl 0.0.69-alpha.hackathon-3dtiles.8 → 0.0.69-alpha.hackathon-3dtiles.9
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/actions/map-style-actions.js +2 -1
- package/dist/components/map-container.js +13 -2
- package/dist/constants/default-settings.js +1 -1
- package/dist/reducers/map-style-updaters.js +2 -2
- package/package.json +1 -1
- package/src/actions/map-style-actions.d.ts +1 -1
- package/src/actions/map-style-actions.js +1 -0
- package/src/components/map-container.js +10 -1
- package/src/reducers/map-style-updaters.d.ts +1 -1
- package/src/reducers/map-style-updaters.js +1 -1
|
@@ -129,6 +129,7 @@ var mapStyleChange = (0, _reduxActions.createAction)(_actionTypes["default"].MAP
|
|
|
129
129
|
* @param sketchValue.inkStrength - 0.01 - 1.0
|
|
130
130
|
* @param sketchValue.hue - 0.01 - 1.0
|
|
131
131
|
* @param sketchValue.hueSaturation - 0.01 - 1.0
|
|
132
|
+
* @param sketchValue.dotScreen - true | false
|
|
132
133
|
* @type {typeof import('./map-style-actions').setTiles3dSketchValue}
|
|
133
134
|
* @public
|
|
134
135
|
*/
|
|
@@ -179,4 +180,4 @@ var set3dBuildingColor = (0, _reduxActions.createAction)(_actionTypes["default"]
|
|
|
179
180
|
exports.set3dBuildingColor = set3dBuildingColor;
|
|
180
181
|
var mapStyleActions = null;
|
|
181
182
|
/* eslint-enable no-unused-vars */
|
|
182
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zLmpzIl0sIm5hbWVzIjpbImFkZEN1c3RvbU1hcFN0eWxlIiwiQWN0aW9uVHlwZXMiLCJBRERfQ1VTVE9NX01BUF9TVFlMRSIsImlucHV0TWFwU3R5bGUiLCJJTlBVVF9NQVBfU1RZTEUiLCJpbnB1dFN0eWxlIiwibWFwU3RhdGUiLCJtYXBDb25maWdDaGFuZ2UiLCJNQVBfQ09ORklHX0NIQU5HRSIsIm1hcFN0eWxlIiwicmVxdWVzdE1hcFN0eWxlcyIsIlJFUVVFU1RfTUFQX1NUWUxFUyIsIm1hcFN0eWxlcyIsImxvYWRNYXBTdHlsZXMiLCJMT0FEX01BUF9TVFlMRVMiLCJuZXdTdHlsZXMiLCJsb2FkTWFwU3R5bGVFcnIiLCJMT0FEX01BUF9TVFlMRV9FUlIiLCJlcnJvciIsIm1hcFN0eWxlQ2hhbmdlIiwiTUFQX1NUWUxFX0NIQU5HRSIsInN0eWxlVHlwZSIsInNldFRpbGVzM2RTa2V0Y2hWYWx1ZSIsIlNFVF9USUxFU18zRF9TS0VUQ0hfVkFMVUUiLCJza2V0Y2hWYWx1ZSIsImxvYWRDdXN0b21NYXBTdHlsZSIsIkxPQURfQ1VTVE9NX01BUF9TVFlMRSIsImN1c3RvbU1hcFN0eWxlIiwic2V0M2RCdWlsZGluZ0NvbG9yIiwiU0VUXzNEX0JVSUxESU5HX0NPTE9SIiwiY29sb3IiLCJtYXBTdHlsZUFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUEsaUJBQWlCLEdBQUcsZ0NBQWFDLHdCQUFZQyxvQkFBekIsQ0FBMUI7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFGLHdCQUFZRyxlQUF6QixFQUEwQyxVQUFDQyxVQUFELEVBQWFDLFFBQWI7QUFBQSxTQUEyQjtBQUNoR0QsSUFBQUEsVUFBVSxFQUFWQSxVQURnRztBQUVoR0MsSUFBQUEsUUFBUSxFQUFSQTtBQUZnRyxHQUEzQjtBQUFBLENBQTFDLENBQXRCO0FBS1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYU4sd0JBQVlPLGlCQUF6QixFQUE0QyxVQUFBQyxRQUFRO0FBQUEsU0FBSUEsUUFBSjtBQUFBLENBQXBELENBQXhCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxnQ0FDOUJULHdCQUFZVSxrQkFEa0IsRUFFOUIsVUFBQUMsU0FBUztBQUFBLFNBQUlBLFNBQUo7QUFBQSxDQUZxQixDQUF6QjtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFaLHdCQUFZYSxlQUF6QixFQUEwQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQW5ELENBQXRCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYWYsd0JBQVlnQixrQkFBekIsRUFBNkMsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUo7QUFBQSxDQUFsRCxDQUF4QjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsZ0NBQWFsQix3QkFBWW1CLGdCQUF6QixFQUEyQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQXBELENBQXZCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLHFCQUFxQixHQUFHLGdDQUNuQ3JCLHdCQUFZc0IseUJBRHVCLEVBRW5DLFVBQUFDLFdBQVc7QUFBQSxTQUFJQSxXQUFKO0FBQUEsQ0FGd0IsQ0FBOUI7QUFLUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsa0JBQWtCLEdBQUcsZ0NBQ2hDeEIsd0JBQVl5QixxQkFEb0IsRUFFaEMsVUFBQUMsY0FBYztBQUFBLFNBQUlBLGNBQUo7QUFBQSxDQUZrQixDQUEzQixDLENBS1A7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGtCQUFrQixHQUFHLGdDQUFhM0Isd0JBQVk0QixxQkFBekIsRUFBZ0QsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUo7QUFBQSxDQUFyRCxDQUEzQjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7OztBQUNBLElBQU1DLGVBQWUsR0FBRyxJQUF4QjtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtjcmVhdGVBY3Rpb259IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuaW1wb3J0IEFjdGlvblR5cGVzIGZyb20gJ2NvbnN0YW50cy9hY3Rpb24tdHlwZXMnO1xuXG4vKipcbiAqIEFkZCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIgYW5kIHNldCBpdCB0byBjdXJyZW50IHN0eWxlXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrIGNvbmZpcm0gYWZ0ZXIgcHV0dGluZyBpbiBhIHZhbGlkIHN0eWxlIHVybCBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIHBhcmFtIHt2b2lkfVxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5hZGRDdXN0b21NYXBTdHlsZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEN1c3RvbU1hcFN0eWxlID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkFERF9DVVNUT01fTUFQX1NUWUxFKTtcblxuLyoqXG4gKiBJbnB1dCBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5wdXRTdHlsZVxuICogQHBhcmFtIGlucHV0U3R5bGUudXJsIC0gc3R5bGUgdXJsIGUuZy4gYCdtYXBib3g6Ly9zdHlsZXMvaGVzaGFuL3h4eHh4eXl5eXp6eidgXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5pZCAtIHN0eWxlIGlkIGUuZy4gYCdjdXN0b21fc3R5bGVfMSdgXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5zdHlsZSAtIGFjdHVhbCBtYXBib3ggc3R5bGUganNvblxuICogQHBhcmFtIGlucHV0U3R5bGUubGFiZWwgLSBzdHlsZSBuYW1lXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5hY2Nlc3NUb2tlbiAtIG1hcGJveCBhY2Nlc3MgdG9rZW5cbiAqIEBwYXJhbSBpbnB1dFN0eWxlLmljb24gLSBpY29uIGltYWdlIGRhdGEgdXJsXG4gKiBAcGFyYW0gW21hcFN0YXRlXSAtIG1hcFN0YXRlIGlzIG9wdGlvbmFsXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmlucHV0TWFwU3R5bGV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBpbnB1dE1hcFN0eWxlID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLklOUFVUX01BUF9TVFlMRSwgKGlucHV0U3R5bGUsIG1hcFN0YXRlKSA9PiAoe1xuICBpbnB1dFN0eWxlLFxuICBtYXBTdGF0ZVxufSkpO1xuXG4vKipcbiAqIFVwZGF0ZSBgdmlzaWJsZUxheWVyR3JvdXBzYHRvIGNoYW5nZSBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gbWFwU3R5bGUgbmV3IGNvbmZpZyBge3Zpc2libGVMYXllckdyb3Vwczoge2xhYmVsOiBmYWxzZSwgcm9hZDogdHJ1ZSwgYmFja2dyb3VuZDogdHJ1ZX19YFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5tYXBDb25maWdDaGFuZ2V9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBDb25maWdDaGFuZ2UgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuTUFQX0NPTkZJR19DSEFOR0UsIG1hcFN0eWxlID0+IG1hcFN0eWxlKTtcblxuLyoqXG4gKiBSZXF1ZXN0IG1hcCBzdHlsZSBzdHlsZSBvYmplY3QgYmFzZWQgb24gc3R5bGUudXJsLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5yZXF1ZXN0TWFwU3R5bGVzfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlcyA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuUkVRVUVTVF9NQVBfU1RZTEVTLFxuICBtYXBTdHlsZXMgPT4gbWFwU3R5bGVzXG4pO1xuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGxvYWQgbWFwIHN0eWxlIHN1Y2Nlc3NcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBuZXdTdHlsZXMgYSBge1tpZF06IHN0eWxlfWAgbWFwcGluZ1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5sb2FkTWFwU3R5bGVzfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlcyA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5MT0FEX01BUF9TVFlMRVMsIG5ld1N0eWxlcyA9PiBuZXdTdHlsZXMpO1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgZXJyb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBlcnJvclxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5sb2FkTWFwU3R5bGVFcnJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVFcnIgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuTE9BRF9NQVBfU1RZTEVfRVJSLCBlcnJvciA9PiBlcnJvcik7XG5cbi8qKlxuICogQ2hhbmdlIHRvIGFub3RoZXIgbWFwIHN0eWxlLiBUaGUgc2VsZWN0ZWQgc3R5bGUgc2hvdWxkIGFscmVhZHkgYmVlbiBsb2FkZWQgaW50byBgbWFwU3R5bGUubWFwU3R5bGVzYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIHN0eWxlVHlwZSB0aGUgc3R5bGUgdG8gY2hhbmdlIHRvXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLm1hcFN0eWxlQ2hhbmdlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwU3R5bGVDaGFuZ2UgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuTUFQX1NUWUxFX0NIQU5HRSwgc3R5bGVUeXBlID0+IHN0eWxlVHlwZSk7XG5cbi8qKlxuICogU2V0IFRpbGVzM0Qgc2tldGNoIHZhbHVlXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gc2tldGNoVmFsdWVcbiAqIEBwYXJhbSBza2V0Y2hWYWx1ZS5pbmtTdHJlbmd0aCAtIDAuMDEgLSAxLjBcbiAqIEBwYXJhbSBza2V0Y2hWYWx1ZS5odWUgLSAwLjAxIC0gMS4wXG4gKiBAcGFyYW0gc2tldGNoVmFsdWUuaHVlU2F0dXJhdGlvbiAtIDAuMDEgLSAxLjBcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykuc2V0VGlsZXMzZFNrZXRjaFZhbHVlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VGlsZXMzZFNrZXRjaFZhbHVlID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfVElMRVNfM0RfU0tFVENIX1ZBTFVFLFxuICBza2V0Y2hWYWx1ZSA9PiBza2V0Y2hWYWx1ZVxuKTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3QgaXMgcmVjZWl2ZWRcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBjdXN0b21NYXBTdHlsZVxuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlLmljb25cbiAqIEBwYXJhbSBjdXN0b21NYXBTdHlsZS5zdHlsZVxuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlLmVycm9yXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmxvYWRDdXN0b21NYXBTdHlsZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDdXN0b21NYXBTdHlsZSA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuTE9BRF9DVVNUT01fTUFQX1NUWUxFLFxuICBjdXN0b21NYXBTdHlsZSA9PiBjdXN0b21NYXBTdHlsZVxuKTtcblxuLy8gU0VUXzNEX0JVSUxESU5HX0NPTE9SXG4vKipcbiAqIFNldCAzZCBidWlsZGluZyBsYXllciBncm91cCBjb2xvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIGNvbG9yIC0gW3IsIGcsIGJdXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLnNldDNkQnVpbGRpbmdDb2xvcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldDNkQnVpbGRpbmdDb2xvciA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5TRVRfM0RfQlVJTERJTkdfQ09MT1IsIGNvbG9yID0+IGNvbG9yKTtcblxuLyoqXG4gKiBBY3Rpb25zIGhhbmRsZWQgbW9zdGx5IGJ5ICBgbWFwU3R5bGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSB0aGUgZGlzcGxheSBvZiBiYXNlIG1hcCwgc3VjaCBhcyBsb2FkaW5nIGFuZCByZWNlaXZpbmcgYmFzZSBtYXAgc3R5bGVzLFxuICogaGlkaW5nIGFuZCBzaG93aW5nIG1hcCBsYXllcnMsIHVzZXIgaW5wdXQgb2YgY3VzdG9tIG1hcCBzdHlsZSB1cmwuXG4gKlxuICogQHB1YmxpY1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3R5bGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdfQ==
|
|
183
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zLmpzIl0sIm5hbWVzIjpbImFkZEN1c3RvbU1hcFN0eWxlIiwiQWN0aW9uVHlwZXMiLCJBRERfQ1VTVE9NX01BUF9TVFlMRSIsImlucHV0TWFwU3R5bGUiLCJJTlBVVF9NQVBfU1RZTEUiLCJpbnB1dFN0eWxlIiwibWFwU3RhdGUiLCJtYXBDb25maWdDaGFuZ2UiLCJNQVBfQ09ORklHX0NIQU5HRSIsIm1hcFN0eWxlIiwicmVxdWVzdE1hcFN0eWxlcyIsIlJFUVVFU1RfTUFQX1NUWUxFUyIsIm1hcFN0eWxlcyIsImxvYWRNYXBTdHlsZXMiLCJMT0FEX01BUF9TVFlMRVMiLCJuZXdTdHlsZXMiLCJsb2FkTWFwU3R5bGVFcnIiLCJMT0FEX01BUF9TVFlMRV9FUlIiLCJlcnJvciIsIm1hcFN0eWxlQ2hhbmdlIiwiTUFQX1NUWUxFX0NIQU5HRSIsInN0eWxlVHlwZSIsInNldFRpbGVzM2RTa2V0Y2hWYWx1ZSIsIlNFVF9USUxFU18zRF9TS0VUQ0hfVkFMVUUiLCJza2V0Y2hWYWx1ZSIsImxvYWRDdXN0b21NYXBTdHlsZSIsIkxPQURfQ1VTVE9NX01BUF9TVFlMRSIsImN1c3RvbU1hcFN0eWxlIiwic2V0M2RCdWlsZGluZ0NvbG9yIiwiU0VUXzNEX0JVSUxESU5HX0NPTE9SIiwiY29sb3IiLCJtYXBTdHlsZUFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUEsaUJBQWlCLEdBQUcsZ0NBQWFDLHdCQUFZQyxvQkFBekIsQ0FBMUI7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFGLHdCQUFZRyxlQUF6QixFQUEwQyxVQUFDQyxVQUFELEVBQWFDLFFBQWI7QUFBQSxTQUEyQjtBQUNoR0QsSUFBQUEsVUFBVSxFQUFWQSxVQURnRztBQUVoR0MsSUFBQUEsUUFBUSxFQUFSQTtBQUZnRyxHQUEzQjtBQUFBLENBQTFDLENBQXRCO0FBS1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYU4sd0JBQVlPLGlCQUF6QixFQUE0QyxVQUFBQyxRQUFRO0FBQUEsU0FBSUEsUUFBSjtBQUFBLENBQXBELENBQXhCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxnQ0FDOUJULHdCQUFZVSxrQkFEa0IsRUFFOUIsVUFBQUMsU0FBUztBQUFBLFNBQUlBLFNBQUo7QUFBQSxDQUZxQixDQUF6QjtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFaLHdCQUFZYSxlQUF6QixFQUEwQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQW5ELENBQXRCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYWYsd0JBQVlnQixrQkFBekIsRUFBNkMsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUo7QUFBQSxDQUFsRCxDQUF4QjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsZ0NBQWFsQix3QkFBWW1CLGdCQUF6QixFQUEyQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQXBELENBQXZCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMscUJBQXFCLEdBQUcsZ0NBQ25DckIsd0JBQVlzQix5QkFEdUIsRUFFbkMsVUFBQUMsV0FBVztBQUFBLFNBQUlBLFdBQUo7QUFBQSxDQUZ3QixDQUE5QjtBQUtQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxrQkFBa0IsR0FBRyxnQ0FDaEN4Qix3QkFBWXlCLHFCQURvQixFQUVoQyxVQUFBQyxjQUFjO0FBQUEsU0FBSUEsY0FBSjtBQUFBLENBRmtCLENBQTNCLEMsQ0FLUDs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsa0JBQWtCLEdBQUcsZ0NBQWEzQix3QkFBWTRCLHFCQUF6QixFQUFnRCxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSjtBQUFBLENBQXJELENBQTNCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7O0FBQ0EsSUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge2NyZWF0ZUFjdGlvbn0gZnJvbSAncmVkdXgtYWN0aW9ucyc7XG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG5cbi8qKlxuICogQWRkIG1hcCBzdHlsZSBmcm9tIHVzZXIgaW5wdXQgdG8gcmVkdWNlciBhbmQgc2V0IGl0IHRvIGN1cnJlbnQgc3R5bGVcbiAqIFRoaXMgYWN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgY2xpY2sgY29uZmlybSBhZnRlciBwdXR0aW5nIGluIGEgdmFsaWQgc3R5bGUgdXJsIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogcGFyYW0ge3ZvaWR9XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmFkZEN1c3RvbU1hcFN0eWxlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkQ3VzdG9tTWFwU3R5bGUgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuQUREX0NVU1RPTV9NQVBfU1RZTEUpO1xuXG4vKipcbiAqIElucHV0IGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3RcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBpbnB1dFN0eWxlXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS51cmwgLSBzdHlsZSB1cmwgZS5nLiBgJ21hcGJveDovL3N0eWxlcy9oZXNoYW4veHh4eHh5eXl5enp6J2BcbiAqIEBwYXJhbSBpbnB1dFN0eWxlLmlkIC0gc3R5bGUgaWQgZS5nLiBgJ2N1c3RvbV9zdHlsZV8xJ2BcbiAqIEBwYXJhbSBpbnB1dFN0eWxlLnN0eWxlIC0gYWN0dWFsIG1hcGJveCBzdHlsZSBqc29uXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5sYWJlbCAtIHN0eWxlIG5hbWVcbiAqIEBwYXJhbSBpbnB1dFN0eWxlLmFjY2Vzc1Rva2VuIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHBhcmFtIGlucHV0U3R5bGUuaWNvbiAtIGljb24gaW1hZ2UgZGF0YSB1cmxcbiAqIEBwYXJhbSBbbWFwU3RhdGVdIC0gbWFwU3RhdGUgaXMgb3B0aW9uYWxcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykuaW5wdXRNYXBTdHlsZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0TWFwU3R5bGUgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuSU5QVVRfTUFQX1NUWUxFLCAoaW5wdXRTdHlsZSwgbWFwU3RhdGUpID0+ICh7XG4gIGlucHV0U3R5bGUsXG4gIG1hcFN0YXRlXG59KSk7XG5cbi8qKlxuICogVXBkYXRlIGB2aXNpYmxlTGF5ZXJHcm91cHNgdG8gY2hhbmdlIGxheWVyIGdyb3VwIHZpc2liaWxpdHlcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBtYXBTdHlsZSBuZXcgY29uZmlnIGB7dmlzaWJsZUxheWVyR3JvdXBzOiB7bGFiZWw6IGZhbHNlLCByb2FkOiB0cnVlLCBiYWNrZ3JvdW5kOiB0cnVlfX1gXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLm1hcENvbmZpZ0NoYW5nZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcENvbmZpZ0NoYW5nZSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5NQVBfQ09ORklHX0NIQU5HRSwgbWFwU3R5bGUgPT4gbWFwU3R5bGUpO1xuXG4vKipcbiAqIFJlcXVlc3QgbWFwIHN0eWxlIHN0eWxlIG9iamVjdCBiYXNlZCBvbiBzdHlsZS51cmwuXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLnJlcXVlc3RNYXBTdHlsZXN9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXF1ZXN0TWFwU3R5bGVzID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5SRVFVRVNUX01BUF9TVFlMRVMsXG4gIG1hcFN0eWxlcyA9PiBtYXBTdHlsZXNcbik7XG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgc3VjY2Vzc1xuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIG5ld1N0eWxlcyBhIGB7W2lkXTogc3R5bGV9YCBtYXBwaW5nXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmxvYWRNYXBTdHlsZXN9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVzID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkxPQURfTUFQX1NUWUxFUywgbmV3U3R5bGVzID0+IG5ld1N0eWxlcyk7XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBlcnJvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIGVycm9yXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmxvYWRNYXBTdHlsZUVycn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZUVyciA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5MT0FEX01BUF9TVFlMRV9FUlIsIGVycm9yID0+IGVycm9yKTtcblxuLyoqXG4gKiBDaGFuZ2UgdG8gYW5vdGhlciBtYXAgc3R5bGUuIFRoZSBzZWxlY3RlZCBzdHlsZSBzaG91bGQgYWxyZWFkeSBiZWVuIGxvYWRlZCBpbnRvIGBtYXBTdHlsZS5tYXBTdHlsZXNgXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gc3R5bGVUeXBlIHRoZSBzdHlsZSB0byBjaGFuZ2UgdG9cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykubWFwU3R5bGVDaGFuZ2V9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBTdHlsZUNoYW5nZSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5NQVBfU1RZTEVfQ0hBTkdFLCBzdHlsZVR5cGUgPT4gc3R5bGVUeXBlKTtcblxuLyoqXG4gKiBTZXQgVGlsZXMzRCBza2V0Y2ggdmFsdWVcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBza2V0Y2hWYWx1ZVxuICogQHBhcmFtIHNrZXRjaFZhbHVlLmlua1N0cmVuZ3RoIC0gMC4wMSAtIDEuMFxuICogQHBhcmFtIHNrZXRjaFZhbHVlLmh1ZSAtIDAuMDEgLSAxLjBcbiAqIEBwYXJhbSBza2V0Y2hWYWx1ZS5odWVTYXR1cmF0aW9uIC0gMC4wMSAtIDEuMFxuICogQHBhcmFtIHNrZXRjaFZhbHVlLmRvdFNjcmVlbiAtIHRydWUgfCBmYWxzZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5zZXRUaWxlczNkU2tldGNoVmFsdWV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRUaWxlczNkU2tldGNoVmFsdWUgPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9USUxFU18zRF9TS0VUQ0hfVkFMVUUsXG4gIHNrZXRjaFZhbHVlID0+IHNrZXRjaFZhbHVlXG4pO1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdCBpcyByZWNlaXZlZFxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlXG4gKiBAcGFyYW0gY3VzdG9tTWFwU3R5bGUuaWNvblxuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlLnN0eWxlXG4gKiBAcGFyYW0gY3VzdG9tTWFwU3R5bGUuZXJyb3JcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykubG9hZEN1c3RvbU1hcFN0eWxlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEN1c3RvbU1hcFN0eWxlID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5MT0FEX0NVU1RPTV9NQVBfU1RZTEUsXG4gIGN1c3RvbU1hcFN0eWxlID0+IGN1c3RvbU1hcFN0eWxlXG4pO1xuXG4vLyBTRVRfM0RfQlVJTERJTkdfQ09MT1Jcbi8qKlxuICogU2V0IDNkIGJ1aWxkaW5nIGxheWVyIGdyb3VwIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gY29sb3IgLSBbciwgZywgYl1cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykuc2V0M2RCdWlsZGluZ0NvbG9yfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0M2RCdWlsZGluZ0NvbG9yID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNFVF8zRF9CVUlMRElOR19DT0xPUiwgY29sb3IgPT4gY29sb3IpO1xuXG4vKipcbiAqIEFjdGlvbnMgaGFuZGxlZCBtb3N0bHkgYnkgIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIFRoZXkgbWFuYWdlIHRoZSBkaXNwbGF5IG9mIGJhc2UgbWFwLCBzdWNoIGFzIGxvYWRpbmcgYW5kIHJlY2VpdmluZyBiYXNlIG1hcCBzdHlsZXMsXG4gKiBoaWRpbmcgYW5kIHNob3dpbmcgbWFwIGxheWVycywgdXNlciBpbnB1dCBvZiBjdXN0b20gbWFwIHN0eWxlIHVybC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdHlsZUFjdGlvbnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuIl19
|
|
@@ -492,7 +492,7 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
492
492
|
}, {
|
|
493
493
|
key: "_getEffectsValues",
|
|
494
494
|
value: function _getEffectsValues(mapStyle) {
|
|
495
|
-
var _mapStyle$sketchValue, _mapStyle$sketchValue2, _mapStyle$sketchValue3;
|
|
495
|
+
var _mapStyle$sketchValue, _mapStyle$sketchValue2, _mapStyle$sketchValue3, _mapStyle$sketchValue4;
|
|
496
496
|
|
|
497
497
|
var inkStrength = ((_mapStyle$sketchValue = mapStyle.sketchValue) === null || _mapStyle$sketchValue === void 0 ? void 0 : _mapStyle$sketchValue.inkStrength) || 0.2;
|
|
498
498
|
var hue = ((_mapStyle$sketchValue2 = mapStyle.sketchValue) === null || _mapStyle$sketchValue2 === void 0 ? void 0 : _mapStyle$sketchValue2.hue) || 0;
|
|
@@ -505,6 +505,17 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
505
505
|
saturation: hueValueSaturation
|
|
506
506
|
});
|
|
507
507
|
var allEffects = [lightingEffect, hueSaturationEffect, brightnessContrastEffect, vibranceEffect, inkEffect];
|
|
508
|
+
var dotScreenValue = ((_mapStyle$sketchValue4 = mapStyle.sketchValue) === null || _mapStyle$sketchValue4 === void 0 ? void 0 : _mapStyle$sketchValue4.dotScreen) || false;
|
|
509
|
+
|
|
510
|
+
if (dotScreenValue) {
|
|
511
|
+
var dotScreenEffect = new _core.PostProcessEffect(_shadertools.dotScreen, {
|
|
512
|
+
center: [0.5, 0.5],
|
|
513
|
+
angle: Math.PI * 0.5,
|
|
514
|
+
size: 1
|
|
515
|
+
});
|
|
516
|
+
allEffects.push(dotScreenEffect);
|
|
517
|
+
}
|
|
518
|
+
|
|
508
519
|
return allEffects;
|
|
509
520
|
}
|
|
510
521
|
}, {
|
|
@@ -846,4 +857,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
846
857
|
MapContainer.displayName = 'MapContainer';
|
|
847
858
|
return MapContainer;
|
|
848
859
|
}
|
|
849
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJtYXBMYXllcnMiLCJsYXllck9yZGVyIiwicG9wdXBTZXR0aW5ncyIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInBvcHVwU2V0dGluZ3NTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsIm1lc3NhZ2UiLCJzZXRTdGF0ZSIsImNvbnRleHRMb3N0IiwiZXJyb3JNZXNzYWdlIiwibm90aWZpY2F0aW9uSWQiLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsImxhc3RTaG93biIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwidmlld1N0YXRlIiwiaW50ZXJhY3Rpb25TdGF0ZSIsImluY3JlbWVudCIsInJlc3RWaWV3U3RhdGUiLCJuZXh0IiwiaW5UcmFuc2l0aW9uIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJwYW5lbElkIiwidG9nZ2xlTWFwQ29udHJvbCIsIl9kZWNrIiwiX3JlZiIsIl9oYXNSZW5kZXJlZCIsIl9tb3VzZVBvc2l0aW9uIiwiY3VycmVudCIsIl9oYW5kbGVSZXNpemUiLCJzdGF0ZSIsIm9mZiIsIm9uRGVja0luaXRpYWxpemVkIiwibGF5ZXJzVG9SZW5kZXIiLCJsbmdMYXQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsIm1hcFN0eWxlIiwiaW5rU3RyZW5ndGgiLCJza2V0Y2hWYWx1ZSIsImh1ZSIsImh1ZVZhbHVlU2F0dXJhdGlvbiIsImh1ZVNhdHVyYXRpb24iLCJpbmtFZmZlY3QiLCJpbmsiLCJzdHJlbmd0aCIsImh1ZVNhdHVyYXRpb25FZmZlY3QiLCJzYXR1cmF0aW9uIiwiYWxsRWZmZWN0cyIsImxheWVyc0ZvckRlY2siLCJtYXBTdGF0ZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwibWFza1BvbHlnb24iLCJkZWNrR2xMYXllcnMiLCJkZWNrR2xQcm9wcyIsImRhdGFMYXllcnMiLCJzbGljZSIsInJldmVyc2UiLCJvdmVybGF5cyIsImxheWVyQ2FsbGJhY2tzIiwib25TZXRMYXllckRvbWFpbiIsInZhbCIsIl9vbkxheWVyU2V0RG9tYWluIiwibGF5ZXJPdmVybGF5IiwiY29uY2F0IiwibGF5ZXJzT25Ub3AiLCJwdXNoIiwiU29saWRQb2x5Z29uTGF5ZXIiLCJNQVNLX0xBWUVSX0lEIiwiT1BFUkFUSU9OIiwiTUFTSyIsImRhdGFDb21wYXJhdG9yIiwib2xkRGF0YSIsImdldFBvbHlnb24iLCJkIiwiZ2V0RmlsbENvbG9yIiwidmlzaWJsZUxheWVyR3JvdXBzIiwiVGhyZWVEQnVpbGRpbmdMYXllciIsInRocmVlREJ1aWxkaW5nQ29sb3IiLCJ1cGRhdGVUcmlnZ2VycyIsImVmZmVjdHMiLCJib3R0b21NYXBTdHlsZSIsImwiLCJCb29sZWFuIiwiY2xvbmUiLCJleHRlbnNpb25zIiwic3R5bGVUeXBlIiwiX2dldEVmZmVjdHNWYWx1ZXMiLCJoYXNSZW5kZXJlZCIsInJlc2V0SGFzUmVuZGVyZWQiLCJfb25WaWV3cG9ydENoYW5nZSIsIm9wdHMiLCJfb25CZWZvcmVSZW5kZXIiLCJvbkxheWVySG92ZXIiLCJlIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJfb25EZWNrSW5pdGlhbGl6ZWQiLCJpc05hTiIsInZpc2liaWxpdHlCeVpvb20iLCJtaW4iLCJtYXgiLCJjdXJyZW50Wm9vbVJhbmdlIiwicm91bmQiLCJtYXBib3hMYXllcnMiLCJtYXBib3hMYXllcnNTZWxlY3RvciIsIk9iamVjdCIsImtleXMiLCJpc1N0eWxlTG9hZGVkIiwiTWFwQ29tcG9uZW50IiwiZGF0YXNldHMiLCJtYXBDb250cm9scyIsImxvY2FsZSIsImludGVyYWN0aW9uQ29uZmlnIiwiZWRpdG9yIiwibGF5ZXJzRm9yRGVja1NlbGVjdG9yIiwibWFwUHJvcHMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaXNFZGl0IiwibWFwRHJhdyIsImFjdGl2ZSIsImhhc0dlb2NvZGVyTGF5ZXIiLCJmaW5kIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJpc1NwbGl0IiwibW91c2VQb3NpdGlvbiIsIm5lZWRzQmFzZW1hcCIsIkxPQ0FMRV9DT0RFUyIsImRyYWdSb3RhdGUiLCJyZWFkT25seSIsInNjYWxlIiwiZ2VvY29kZXIiLCJlbmFibGVkIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJ0b2dnbGVTcGxpdE1hcCIsIl9oYW5kbGVNYXBUb2dnbGVMYXllciIsIl90b2dnbGVNYXBDb250cm9sIiwic2V0RWRpdG9yTW9kZSIsInNldExvY2FsZSIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJfc2V0TWFwYm94TWFwIiwiaG92ZXJJbmZvIiwidW5kZWZpbmVkIiwiZXZ0IiwicG9pbnQiLCJfcmVuZGVyRGVja092ZXJsYXkiLCJfcmVuZGVyTWFwYm94T3ZlcmxheXMiLCJwb2x5Z29uRmlsdGVycyIsImRlbGV0ZUZlYXR1cmUiLCJzZXRTZWxlY3RlZEZlYXR1cmUiLCJzZXRGZWF0dXJlcyIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsInZpc2libGUiLCJ0b3BNYXBTdHlsZSIsIl9yZW5kZXJNYXBQb3BvdmVyIiwiZ2xvYmUiLCJfcmVuZGVyTWFwIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsInN0cmluZyIsImFycmF5T2YiLCJhbnkiLCJib29sIiwiY2xpY2tlZCIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJmdW5jIiwibnVtYmVyIiwiTWFwYm94R0xNYXAiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBT0E7O0FBQ0E7O0FBR0E7O0FBbUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFoRUEsSUFBTUEsbUJBQW1CLEdBQUcseUNBQTVCOztJQUVNQyxpQjs7Ozs7Ozs7Ozs7O1dB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aUJDLFVBaEJqQjtBQWlCakJ4SixJQUFBQSxjQUFjLEVBQUVzSixzQkFBVUMsTUFBVixDQUFpQkMsVUFqQmhCO0FBbUJqQjtBQUNBaE4sSUFBQUEsT0FBTyxFQUFFOE0sc0JBQVVNLElBcEJGO0FBb0JRO0FBQ3pCbkMsSUFBQUEsUUFBUSxFQUFFNkIsc0JBQVVNLElBckJIO0FBc0JqQm5OLElBQUFBLFFBQVEsRUFBRTZNLHNCQUFVTSxJQXRCSDtBQXVCakJDLElBQUFBLE9BQU8sRUFBRVAsc0JBQVVDLE1BdkJGO0FBd0JqQmxCLElBQUFBLFNBQVMsRUFBRWlCLHNCQUFVQyxNQXhCSjtBQXlCakJ6TSxJQUFBQSxTQUFTLEVBQUV3TSxzQkFBVUMsTUF6Qko7QUEwQmpCTyxJQUFBQSxnQkFBZ0IsRUFBRVIsc0JBQVVTLElBMUJYO0FBMkJqQnBMLElBQUFBLGdCQUFnQixFQUFFMkssc0JBQVVTLElBM0JYO0FBNEJqQjlLLElBQUFBLFdBQVcsRUFBRXFLLHNCQUFVUyxJQTVCTjtBQTZCakI3SyxJQUFBQSxZQUFZLEVBQUVvSyxzQkFBVVMsSUE3QlA7QUE4QmpCekwsSUFBQUEsS0FBSyxFQUFFZ0wsc0JBQVVVLE1BOUJBO0FBK0JqQmhOLElBQUFBLGFBQWEsRUFBRXNNLHNCQUFVQztBQS9CUixHQUZxRDtBQUFBLG1DQUNwRWpOLFlBRG9FLGtCQW9DbEQ7QUFDcEI4SixJQUFBQSxZQUFZLEVBQUU2RCxzQkFETTtBQUVwQnJILElBQUFBLFdBQVcsRUFBRSxFQUZPO0FBR3BCdEUsSUFBQUEsS0FBSyxFQUFFLENBSGE7QUFJcEI5QixJQUFBQSxPQUFPLEVBQUU7QUFKVyxHQXBDa0Q7QUFtakIxRUYsRUFBQUEsWUFBWSxDQUFDNE4sV0FBYixHQUEyQixjQUEzQjtBQUVBLFNBQU81TixZQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4vLyBsaWJyYXJpZXNcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IE1hcGJveEdMTWFwIGZyb20gJ3JlYWN0LW1hcC1nbCc7XG5pbXBvcnQgRGVja0dMIGZyb20gJ0BkZWNrLmdsL3JlYWN0JztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7XG4gIE9QRVJBVElPTixcbiAgTGF5ZXIsXG4gIEFtYmllbnRMaWdodCxcbiAgTGlnaHRpbmdFZmZlY3QsXG4gIFBvc3RQcm9jZXNzRWZmZWN0LFxuICBfU3VuTGlnaHRcbn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge2JyaWdodG5lc3NDb250cmFzdCwgaHVlU2F0dXJhdGlvbiwgaW5rLCB2aWJyYW5jZX0gZnJvbSAnQGx1bWEuZ2wvc2hhZGVydG9vbHMnO1xuaW1wb3J0IHtTb2xpZFBvbHlnb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7VGlsZUxheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcbmltcG9ydCB7ZXJyb3JOb3RpZmljYXRpb259IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgTWFwUG9wb3ZlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9tYXAvbWFwLXBvcG92ZXInO1xuaW1wb3J0IE1hcENvbnRyb2xGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1jb250cm9sJztcbmltcG9ydCB7U3R5bGVkTWFwQ29udGFpbmVyLCBTdHlsZWRBdHRyYnV0aW9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge2dlbmVyYXRlTWFwYm94TGF5ZXJzLCB1cGRhdGVNYXBib3hMYXllcnN9IGZyb20gJ2xheWVycy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtzZXRMYXllckJsZW5kaW5nfSBmcm9tICd1dGlscy9nbC11dGlscyc7XG5pbXBvcnQge3RyYW5zZm9ybVJlcXVlc3R9IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtyZW5kZXJEZWNrR2xMYXllciwgcHJlcGFyZUxheWVyc1RvUmVuZGVyLCBwcmVwYXJlTGF5ZXJzRm9yRGVja30gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuXG4vLyBkZWZhdWx0LXNldHRpbmdzXG5pbXBvcnQgVGhyZWVEQnVpbGRpbmdMYXllciBmcm9tICdkZWNrZ2wtbGF5ZXJzLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLWxheWVyJztcbmltcG9ydCB7XG4gIEZJTFRFUl9UWVBFUyxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIE1BU0tfTEFZRVJfSUQsXG4gIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuaW1wb3J0IHtvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnLi4vdXRpbHMvb2JzZXJ2ZS1kaW1lbnNpb25zJztcbmltcG9ydCB7TE9DQUxFX0NPREVTfSBmcm9tICdsb2NhbGl6YXRpb24vbG9jYWxlcyc7XG5cbi8vIDNEIHRpbGVzXG5pbXBvcnQge19UZXJyYWluRXh0ZW5zaW9uIGFzIFRlcnJhaW5FeHRlbnNpb259IGZyb20gJ0BkZWNrLmdsL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHtUaWxlM0RMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmNvbnN0IEdPT0dMRV9NQVBTX0FQSV9LRVkgPSAnQUl6YVN5Q3B2UXltYzV3alNZSXN4eTNSVjF3aWRNM3AzaDc4Q0FrJztcblxuY2xhc3MgQ3VzdG9tVGlsZTNETGF5ZXIgZXh0ZW5kcyBUaWxlM0RMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQ3VzdG9tVGlsZTNETGF5ZXInO1xuXG4gIGZpbHRlclN1YkxheWVyKHtsYXllciwgdmlld3BvcnR9KSB7XG4gICAgLy8gRG8gbm90IHNob3cgdGlsZXMgd2hpY2ggYXJlIG1hbnkgbGF5ZXJzIHRvbyBsb3cgaW4gcmVzb2x1dGlvbiAoYXZvaWRzIGFydGlmYWN0cylcbiAgICBjb25zdCBsb2Rab29tID0gMjIgLSBNYXRoLmxvZzIobGF5ZXIucHJvcHMudGlsZS5sb2RNZXRyaWNWYWx1ZSk7XG4gICAgcmV0dXJuIGxvZFpvb20gPiB2aWV3cG9ydD8uem9vbTtcbiAgfVxufVxuXG5sZXQgaCA9IDA7XG5jb25zdCB0aWxlczNkID0gbmV3IEN1c3RvbVRpbGUzRExheWVyKHtcbiAgaWQ6ICdnb29nbGUtM2QtdGlsZXMnLFxuICBkYXRhOiAnaHR0cHM6Ly90aWxlLmdvb2dsZWFwaXMuY29tL3YxLzNkdGlsZXMvcm9vdC5qc29uJyxcbiAgb25UaWxlc2V0TG9hZDogdGlsZXNldDNkID0+IHtcbiAgICB0aWxlc2V0M2Qub3B0aW9ucy5tYXhpbXVtU2NyZWVuU3BhY2VFcnJvciA9IDU7XG4gICAgdGlsZXNldDNkLl9vblRpbGVMb2FkRXJyb3IgPSAoKSA9PiB7fTtcbiAgICB0aWxlc2V0M2Qub3B0aW9ucy5vblRyYXZlcnNhbENvbXBsZXRlID0gc2VsZWN0ZWRUaWxlcyA9PiB7XG4gICAgICBsZXQgbWluTG9kID0gSW5maW5pdHk7XG4gICAgICBmb3IgKGNvbnN0IHtsb2RNZXRyaWNWYWx1ZX0gb2Ygc2VsZWN0ZWRUaWxlcykge1xuICAgICAgICBpZiAobG9kTWV0cmljVmFsdWUgPCBtaW5Mb2QpIG1pbkxvZCA9IGxvZE1ldHJpY1ZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyZWQgPSBzZWxlY3RlZFRpbGVzLmZpbHRlcih0ID0+IHQubG9kTWV0cmljVmFsdWUgPCA0ICogbWluTG9kKTtcblxuICAgICAgLy8gSGFja3kgd2F5IHRvIG9idGFpbiBoZWlnaHQgYWJvdmUgc2VhIGxldmVsIHRvIGltcHJvdmUgY29udHJvbHNcbiAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgaCA9IGZpbHRlcmVkLm1hcCh0ID0+IHQuYm91bmRpbmdCb3hbMF1bMl0pLnJlZHVjZSgoYSwgbikgPT4gYSArIG4pIC8gZmlsdGVyZWQubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZWN0ZWRUaWxlcztcbiAgICB9O1xuICB9LFxuICBsb2FkT3B0aW9uczoge1xuICAgIGZldGNoOiB7aGVhZGVyczogeydYLUdPT0ctQVBJLUtFWSc6IEdPT0dMRV9NQVBTX0FQSV9LRVl9fVxuICB9LFxuICAvLyBAdHMtaWdub3JlXG4gIG9wZXJhdGlvbjogJ3RlcnJhaW4rZHJhdycgLy8gUmVxdWlyZWQgdG8gZW5hYmxlIGRyYXBpbmcgb2Ygb3RoZXIgbGF5ZXJzXG59KTtcbmNvbnN0IHRlcnJhaW5FeHRlbnNpb24gPSBuZXcgVGVycmFpbkV4dGVuc2lvbigpO1xuXG4vLyBFZmZlY3RzXG5jb25zdCBhbWJpZW50TGlnaHQgPSBuZXcgQW1iaWVudExpZ2h0KHtjb2xvcjogWzI1NSwgMjU1LCAyNTVdLCBpbnRlbnNpdHk6IDF9KTtcbmNvbnN0IHN1bkxpZ2h0ID0gbmV3IF9TdW5MaWdodCh7XG4gIHRpbWVzdGFtcDogMTY4Mzg2OTkxNTc3NyxcbiAgY29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcbiAgaW50ZW5zaXR5OiAxLFxuICBfc2hhZG93OiB0cnVlXG59KTtcbmNvbnN0IGxpZ2h0aW5nRWZmZWN0ID0gbmV3IExpZ2h0aW5nRWZmZWN0KHtcbiAgYW1iaWVudExpZ2h0LFxuICBzdW5MaWdodFxufSk7XG5saWdodGluZ0VmZmVjdC5zaGFkb3dDb2xvciA9IFswLCAwLCAwLCAwXTtcblxuY29uc3QgYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGJyaWdodG5lc3NDb250cmFzdCwge1xuICBjb250cmFzdDogMCxcbiAgYnJpZ2h0bmVzczogMC4yXG59KTtcblxuY29uc3QgdmlicmFuY2VFZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QodmlicmFuY2UsIHthbW91bnQ6IDF9KTtcblxuLy8gUGVyZm9ybWFuY2UgZGVidWdnaW5nXG5pbXBvcnQge2NyZWF0ZVRyYWNrZXIsIGNyZWF0ZUxheWVyVXBkYXRlVHJhY2tlciwgcmVuZGVyUGVyZm9ybWFuY2VTdGF0c30gZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5jb25zdCB0cmFja2VycyA9IHt9O1xuY29uc3QgUEVSRl9ERUJVRyA9IHdpbmRvdz8ubG9jYXRpb24/LnNlYXJjaD8uaW5jbHVkZXMoJ1BFUkZfREVCVUcnKTtcbmlmIChQRVJGX0RFQlVHKSB7XG4gIHRyYWNrZXJzLmRyYXdDb3VudCA9IGNyZWF0ZVRyYWNrZXIoJ2RyYXdzJyk7XG4gIHRyYWNrZXJzLnZpZXdwb3J0Q2hhbmdlQ291bnQgPSBjcmVhdGVUcmFja2VyKCd2aWV3cG9ydCBjaGFuZ2VzJyk7XG4gIGNyZWF0ZUxheWVyVXBkYXRlVHJhY2tlcignc3RhdGUgdXBkYXRlcycsIFtMYXllciwgVGlsZUxheWVyXSk7XG59XG5cbi8qKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IFJlYWN0LkNTU1Byb3BlcnRpZXN9fSAqL1xuY29uc3QgTUFQX1NUWUxFID0ge1xuICBjb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH0sXG4gIHRvcDoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJzBweCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfVxufTtcblxuY29uc3QgTUFQQk9YR0xfU1RZTEVfVVBEQVRFID0gJ3N0eWxlLmxvYWQnO1xuY29uc3QgTUFQQk9YR0xfUkVOREVSID0gJ3JlbmRlcic7XG5jb25zdCBUUkFOU0lUSU9OX0RVUkFUSU9OID0gMDtcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uID0gKCkgPT4gKFxuICA8U3R5bGVkQXR0cmJ1dGlvbj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1sb2dvXCI+XG4gICAgICBCYXNlbWFwIGJ5OlxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPVwibWFwYm94Z2wtY3RybC1sb2dvXCJcbiAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJNYXBib3ggbG9nb1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL2tlcGxlci5nbC9wb2xpY3kvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBrZXBsZXIuZ2wgfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgTWFwYm94IHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBPcGVuU3RyZWV0TWFwIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vbWFwLWZlZWRiYWNrL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgPHN0cm9uZz5JbXByb3ZlIHRoaXMgbWFwPC9zdHJvbmc+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkQXR0cmJ1dGlvbj5cbik7XG5cbk1hcENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBQb3BvdmVyRmFjdG9yeSwgTWFwQ29udHJvbEZhY3RvcnksIEVkaXRvckZhY3RvcnldO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXBDb250YWluZXJGYWN0b3J5KE1hcFBvcG92ZXIsIE1hcENvbnRyb2wsIEVkaXRvcikge1xuICBjbGFzcyBNYXBDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAvLyByZXF1aXJlZFxuICAgICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBpbnRlcmFjdGlvbkNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJCbGVuZGluZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJPcmRlcjogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyRGF0YTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGZpbHRlcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdGF0ZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwQ29udHJvbHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBza2V0Y2hWYWx1ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBtYXBib3hBcGlVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB2aXNTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgdWlTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAgICAgLy8gb3B0aW9uYWxcbiAgICAgIHByaW1hcnk6IFByb3BUeXBlcy5ib29sLCAvLyBwcmltYXJ5IG9uZSB3aWxsIGJlIHJlcG9ydGluZyBpdHMgc2l6ZSB0byBhcHBTdGF0ZVxuICAgICAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAgICAgaXNFeHBvcnQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgY2xpY2tlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGhvdmVySW5mbzogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG1hcExheWVyczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG9uTWFwVG9nZ2xlTGF5ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25NYXBTdHlsZUxvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFJlbmRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBnZXRNYXBib3hSZWY6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBwb3B1cFNldHRpbmdzOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBNYXBDb21wb25lbnQ6IE1hcGJveEdMTWFwLFxuICAgICAgZGVja0dsUHJvcHM6IHt9LFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBwcmltYXJ5OiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7XG4gICAgICAgIC8vIFtsYXllcnMuaWRdOiBtYXBib3hMYXllckNvbmZpZ1xuICAgICAgfTtcblxuICAgICAgdGhpcy5fZGVjayA9IG51bGw7XG4gICAgICB0aGlzLl9yZWYgPSBjcmVhdGVSZWYoKTtcblxuICAgICAgLy8gUmVuZGVyIGxpbWl0aW5nIG1lY2hhbmlzbVxuICAgICAgdGhpcy5faGFzUmVuZGVyZWQgPSBjcmVhdGVSZWYoKTtcbiAgICAgIHRoaXMuX21vdXNlUG9zaXRpb24gPSBjcmVhdGVSZWYoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRMb3N0ID0gdGhpcy5zdGF0ZT8uY29udGV4dExvc3Q7XG5cbiAgICAgIGlmIChjb250ZXh0TG9zdCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tZGlkLXVwZGF0ZS1zZXQtc3RhdGVcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAvLyB1bmJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgIGlmICh0aGlzLl9tYXApIHtcbiAgICAgICAgdGhpcy5fbWFwLm9mZihNQVBCT1hHTF9TVFlMRV9VUERBVEUpO1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1JFTkRFUik7XG4gICAgICB9XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmIChwcmltYXJ5KSB7XG4gICAgICAgIGNvbnN0IHttYXBTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCFpc0V4cG9ydCAmJiBkaW1lbnNpb25zICYmIGRpbWVuc2lvbnMud2lkdGggPiAwICYmIGRpbWVuc2lvbnMuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgIG1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAoZGltZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllcnM7XG4gICAgbGF5ZXJEYXRhU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllckRhdGE7XG4gICAgbWFwTGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBMYXllcnM7XG4gICAgbGF5ZXJPcmRlclNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJPcmRlcjtcbiAgICBwb3B1cFNldHRpbmdzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5wb3B1cFNldHRpbmdzO1xuXG4gICAgbGF5ZXJzVG9SZW5kZXJTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLm1hcExheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5wb3B1cFNldHRpbmdzU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXJcbiAgICApO1xuICAgIGxheWVyc0ZvckRlY2tTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzRm9yRGVja1xuICAgICk7XG4gICAgZmlsdGVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuZmlsdGVycztcbiAgICBwb2x5Z29uRmlsdGVycyA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZmlsdGVyc1NlbGVjdG9yLCBmaWx0ZXJzID0+XG4gICAgICBmaWx0ZXJzLmZpbHRlcihmID0+IGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnBvbHlnb24pXG4gICAgKTtcblxuICAgIG1hcGJveExheWVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJPcmRlclNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yLFxuICAgICAgZ2VuZXJhdGVNYXBib3hMYXllcnNcbiAgICApO1xuXG4gICAgLyogY29tcG9uZW50IHByaXZhdGUgZnVuY3Rpb25zICovXG4gICAgX29uQ2xvc2VNYXBQb3BvdmVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKG51bGwpO1xuICAgIH07XG5cbiAgICBfb25MYXllclNldERvbWFpbiA9IChpZHgsIGNvbG9yRG9tYWluKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5sYXllckNvbmZpZ0NoYW5nZSh0aGlzLnByb3BzLmxheWVyc1tpZHhdLCB7XG4gICAgICAgIGNvbG9yRG9tYWluXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX2hhbmRsZU1hcFRvZ2dsZUxheWVyID0gbGF5ZXJJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXg6IG1hcEluZGV4ID0gMCwgdmlzU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAobWFwSW5kZXgsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICBfb25NYXBib3hTdHlsZVVwZGF0ZSA9ICgpID0+IHtcbiAgICAgIC8vIGZvcmNlIHJlZnJlc2ggbWFwYm94Z2wgbGF5ZXJzXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0ge307XG4gICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkKHRoaXMuX21hcCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9zZXRNYXBib3hNYXAgPSBtYXBib3ggPT4ge1xuICAgICAgaWYgKCF0aGlzLl9tYXAgJiYgbWFwYm94KSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG1hcGJveC5nZXRNYXAoKTtcbiAgICAgICAgLy8gaSBub3RpY2VkIGluIGNlcnRhaW4gY29udGV4dCB3ZSBkb24ndCBhY2Nlc3MgdGhlIGFjdHVhbCBtYXAgZWxlbWVudFxuICAgICAgICBpZiAoIXRoaXMuX21hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBiaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9TVFlMRV9VUERBVEUsIHRoaXMuX29uTWFwYm94U3R5bGVVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9SRU5ERVIsICgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25NYXBSZW5kZXIodGhpcy5fbWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5nZXRNYXBib3hSZWYpIHtcbiAgICAgICAgLy8gVGhlIHBhcmVudCBjb21wb25lbnQgY2FuIGdhaW4gYWNjZXNzIHRvIG91ciBNYXBib3hHbE1hcCBieVxuICAgICAgICAvLyBwcm92aWRpbmcgdGhpcyBjYWxsYmFjay4gTm90ZSB0aGF0ICdtYXBib3gnIHdpbGwgYmUgbnVsbCB3aGVuIHRoZVxuICAgICAgICAvLyByZWYgaXMgdW5zZXQgKGUuZy4gd2hlbiBhIHNwbGl0IG1hcCBpcyBjbG9zZWQpLlxuICAgICAgICB0aGlzLnByb3BzLmdldE1hcGJveFJlZihtYXBib3gsIHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25EZWNrSW5pdGlhbGl6ZWQoZ2wpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQodGhpcy5fZGVjaywgZ2wpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vbkJlZm9yZVJlbmRlciA9ICh7Z2x9KSA9PiB7XG4gICAgICBzZXRMYXllckJsZW5kaW5nKGdsLCB0aGlzLnByb3BzLmxheWVyQmxlbmRpbmcpO1xuICAgIH07XG5cbiAgICBfb25EZWNrRXJyb3IgPSAoZXJyb3IsIGxheWVyKSA9PiB7XG4gICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2UgPT09ICdXZWJHTCBjb250ZXh0IGlzIGxvc3QnKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NvbnRleHRMb3N0OiB0cnVlfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEFuIGVycm9yIGluIGRlY2suZ2w6ICR7ZXJyb3I/Lm1lc3NhZ2V9IGluICR7bGF5ZXI/LmlkfWA7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25JZCA9IGAke2xheWVyPy5pZH0tJHtlcnJvcj8ubWVzc2FnZX1gO1xuXG4gICAgICAvLyBUaHJvdHRsZSBlcnJvciBub3RpZmljYXRpb25zLCBhcyBSZWFjdCBkb2Vzbid0IGxpa2UgdG9vIG1hbnkgc3RhdGUgY2hhbmdlcyBmcm9tIGhlcmUuXG4gICAgICB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZCB8fCB7fTtcbiAgICAgIGNvbnN0IGxhc3RTaG93biA9IHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbbm90aWZpY2F0aW9uSWRdO1xuICAgICAgaWYgKCFsYXN0U2hvd24gfHwgbGFzdFNob3duIDwgRGF0ZS5ub3coKSAtIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FKSB7XG4gICAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbbm90aWZpY2F0aW9uSWRdID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvLyBDcmVhdGUgbmV3IGVycm9yIG5vdGlmaWNhdGlvbiBvciB1cGRhdGUgZXhpc3Rpbmcgb25lIHdpdGggc2FtZSBpZC5cbiAgICAgICAgLy8gVXBkYXRlIGlzIHJlcXVpcmVkIHRvIHByZXNlcnZlIHRoZSBvcmRlciBvZiBub3RpZmljYXRpb25zIGFzIHRoZXkgcHJvYmFibHkgYXJlIGdvaW5nIHRvIFwianVtcFwiIGJhc2VkIG9uIG9yZGVyIG9mIGVycm9ycy5cbiAgICAgICAgY29uc3Qge3VpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLmFkZE5vdGlmaWNhdGlvbihcbiAgICAgICAgICBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBpZDogbm90aWZpY2F0aW9uSWRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKiBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9ucyAqL1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKSB7XG4gICAgICAvLyBPdmVycmlkZW4gaW4gQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbiAgICBfZ2V0SG92ZXJYWSh2aWV3cG9ydCwgbG5nTGF0KSB7XG4gICAgICBjb25zdCBzY3JlZW5Db29yZCA9ICF2aWV3cG9ydCB8fCAhbG5nTGF0ID8gbnVsbCA6IHZpZXdwb3J0LnByb2plY3QobG5nTGF0KTtcbiAgICAgIHJldHVybiBzY3JlZW5Db29yZCAmJiB7eDogc2NyZWVuQ29vcmRbMF0sIHk6IHNjcmVlbkNvb3JkWzFdfTtcbiAgICB9XG5cbiAgICBfZ2V0RWZmZWN0c1ZhbHVlcyhtYXBTdHlsZSkge1xuICAgICAgY29uc3QgaW5rU3RyZW5ndGggPSBtYXBTdHlsZS5za2V0Y2hWYWx1ZT8uaW5rU3RyZW5ndGggfHwgMC4yO1xuICAgICAgY29uc3QgaHVlID0gbWFwU3R5bGUuc2tldGNoVmFsdWU/Lmh1ZSB8fCAwO1xuICAgICAgY29uc3QgaHVlVmFsdWVTYXR1cmF0aW9uID0gbWFwU3R5bGUuc2tldGNoVmFsdWU/Lmh1ZVNhdHVyYXRpb24gfHwgMC4zO1xuICAgICAgY29uc3QgaW5rRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGluaywge3N0cmVuZ3RoOiBpbmtTdHJlbmd0aH0pO1xuICAgICAgY29uc3QgaHVlU2F0dXJhdGlvbkVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChodWVTYXR1cmF0aW9uLCB7XG4gICAgICAgIGh1ZSxcbiAgICAgICAgc2F0dXJhdGlvbjogaHVlVmFsdWVTYXR1cmF0aW9uXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGFsbEVmZmVjdHMgPSBbXG4gICAgICAgIGxpZ2h0aW5nRWZmZWN0LFxuICAgICAgICBodWVTYXR1cmF0aW9uRWZmZWN0LFxuICAgICAgICBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QsXG4gICAgICAgIHZpYnJhbmNlRWZmZWN0LFxuICAgICAgICBpbmtFZmZlY3RcbiAgICAgIF07XG5cbiAgICAgIHJldHVybiBhbGxFZmZlY3RzO1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdHJhY2tlcnMuZHJhd0NvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hc2tQb2x5Z29uKSB7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgICBpZDogTUFTS19MQVlFUl9JRCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogT1BFUkFUSU9OLk1BU0ssXG4gICAgICAgICAgICBkYXRhOiBbbWFza1BvbHlnb25dLFxuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkYXRhLCBvbGREYXRhKSA9PiBkYXRhWzBdID09PSBvbGREYXRhWzBdLFxuICAgICAgICAgICAgZ2V0UG9seWdvbjogZCA9PiBkLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGVmZmVjdHMgPSBbXTtcbiAgICAgIGlmIChtYXBTdHlsZS5ib3R0b21NYXBTdHlsZT8udHlwZSA9PT0gJ2dtYXBzXzNkJykge1xuICAgICAgICAvLyBJbmplY3QgM0QgdGlsZXMgd2hlbiBtYXAgc3R5bGUgaXMgVm95YWdlciB3aXRob3V0IGxheWVyc1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnNcbiAgICAgICAgICAuZmlsdGVyKGwgPT4gQm9vbGVhbihsICYmIGwuY2xvbmUpKVxuICAgICAgICAgIC5tYXAobCA9PiBsLmNsb25lKHtleHRlbnNpb25zOiBbLi4ubC5wcm9wcy5leHRlbnNpb25zLCB0ZXJyYWluRXh0ZW5zaW9uXX0pKTtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2godGlsZXMzZC5jbG9uZSgpKTtcblxuICAgICAgICBpZiAobWFwU3R5bGUuc3R5bGVUeXBlID09PSAnZ29vZ2xlLTNkLXNrZXRjaCcpIHtcbiAgICAgICAgICBlZmZlY3RzID0gdGhpcy5fZ2V0RWZmZWN0c1ZhbHVlcyhtYXBTdHlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGltaXQgcmVuZGVyc1xuICAgICAgY29uc3QgaGFzUmVuZGVyZWQgPSB0aGlzLl9oYXNSZW5kZXJlZDtcbiAgICAgIGNvbnN0IHJlc2V0SGFzUmVuZGVyZWQgPSAoKSA9PiAoaGFzUmVuZGVyZWQuY3VycmVudCA9IGZhbHNlKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxEZWNrR0xcbiAgICAgICAgICBjb250cm9sbGVyPXt0cnVlfVxuICAgICAgICAgIHsuLi50aGlzLnByb3BzLmRlY2tHbFByb3BzfVxuICAgICAgICAgIHZpZXdTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgb25WaWV3U3RhdGVDaGFuZ2U9eyh7dmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlfSkgPT4ge1xuICAgICAgICAgICAgLy8gTGltaXQgdXBkYXRlcyAocHJldmVudHMgZnJlZXplcyB3aGVuIGRldiB0b29scyBvcGVuKVxuICAgICAgICAgICAgaWYgKCFoYXNSZW5kZXJlZC5jdXJyZW50ICYmIHZpZXdTdGF0ZS53aWR0aCA+IDEgJiYgdmlld1N0YXRlLmhlaWdodCA+IDEpIHtcbiAgICAgICAgICAgICAgaGFzUmVuZGVyZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuX29uVmlld3BvcnRDaGFuZ2Uodmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGlkPVwiZGVmYXVsdC1kZWNrZ2wtb3ZlcmxheVwiXG4gICAgICAgICAgbGF5ZXJzPXtkZWNrR2xMYXllcnN9XG4gICAgICAgICAgZWZmZWN0cz17ZWZmZWN0c31cbiAgICAgICAgICBvbkJlZm9yZVJlbmRlcj17b3B0cyA9PiB7XG4gICAgICAgICAgICByZXNldEhhc1JlbmRlcmVkKCk7XG4gICAgICAgICAgICB0aGlzLl9vbkJlZm9yZVJlbmRlcihvcHRzKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uSG92ZXI9e3Zpc1N0YXRlQWN0aW9ucy5vbkxheWVySG92ZXJ9XG4gICAgICAgICAgb25DbGljaz17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGlja31cbiAgICAgICAgICBvbkVycm9yPXtlID0+IHtcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgdGhpcy5fb25EZWNrRXJyb3IoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e2NvbXAgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXAgJiYgY29tcC5kZWNrICYmIGNvbXAuZGVjayAhPT0gdGhpcy5fZGVjaykge1xuICAgICAgICAgICAgICB0aGlzLl9kZWNrID0gY29tcC5kZWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25XZWJHTEluaXRpYWxpemVkPXtnbCA9PiB0aGlzLl9vbkRlY2tJbml0aWFsaXplZChnbCl9XG4gICAgICAgICAgbGF5ZXJGaWx0ZXI9eyh7bGF5ZXIsIHZpZXdwb3J0fSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpc05hTihsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tPy5taW4pIHx8XG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1heClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRab29tUmFuZ2UgPSBNYXRoLnJvdW5kKG1hcFN0YXRlLnpvb20pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tLm1pbiA8PSBjdXJyZW50Wm9vbVJhbmdlICYmXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWF4ID49IGN1cnJlbnRab29tUmFuZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25WaWV3cG9ydENoYW5nZSA9ICh2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGUpID0+IHtcbiAgICAgIHRyYWNrZXJzLnZpZXdwb3J0Q2hhbmdlQ291bnQ/LmluY3JlbWVudCgpO1xuXG4gICAgICBjb25zdCB7d2lkdGgsIGhlaWdodCwgLi4ucmVzdFZpZXdTdGF0ZX0gPSB2aWV3U3RhdGU7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIHJlYWN0LW1hcC1nbCBzZW5kcyAwLDAgZGltZW5zaW9ucyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICAgIC8vIGFmdGVyIHdlIGhhdmUgcmVjZWl2ZWQgcHJvcGVyIGRpbWVuc2lvbnMgZnJvbSBvYnNlcnZlRGltZW5zaW9uc1xuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgLi4uKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gdmlld1N0YXRlIDogcmVzdFZpZXdTdGF0ZSksXG5cbiAgICAgICAgLy8gQXV0by11cGRhdGUgdGhlIGNhbWVyYSBoZWlnaHQgYWNjb3JkaW5nIHRvIDNEIHRpbGVzLCBleGNlcHQgd2hlbiB0cmFuc2l0aW9uaW5nXG4gICAgICAgIC4uLihpbnRlcmFjdGlvblN0YXRlICYmICFpbnRlcmFjdGlvblN0YXRlLmluVHJhbnNpdGlvbiAmJiB7cG9zaXRpb246IFswLCAwLCBoXX0pXG4gICAgICAgIC8vIGVuYWJsaW5nIHRyYW5zaXRpb24gaW4gdHdvIG1hcHMgbWF5IGxlYWQgdG8gZW5kbGVzcyB1cGRhdGUgbG9vcHNcbiAgICAgICAgLy8gdHJhbnNpdGlvbkR1cmF0aW9uOiBwcmltYXJ5ID8gVFJBTlNJVElPTl9EVVJBVElPTiA6IDAgLy8gRGlzYWJsZSBmb3IgM0QgdGlsZXMgdHJhbnNpdGlvbnNcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZShuZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0V4cG9ydCkge1xuICAgICAgICB0aGlzLnByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAobmV4dCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90b2dnbGVNYXBDb250cm9sID0gcGFuZWxJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXgsIHVpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1hcENvbnRyb2wocGFuZWxJZCwgaW5kZXgpO1xuICAgIH07XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcCgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICAgIHNrZXRjaFZhbHVlLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIE1hcENvbXBvbmVudCxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzRWRpdCA9IChtYXBDb250cm9scy5tYXBEcmF3IHx8IHt9KS5hY3RpdmU7XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHRoaXMuX21vdXNlUG9zaXRpb247XG5cbiAgICAgIGNvbnN0IG5lZWRzQmFzZW1hcCA9IG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLnR5cGUgIT09ICdnbWFwc18zZCc7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7bmVlZHNCYXNlbWFwID8gKFxuICAgICAgICAgICAgPE1hcENvbXBvbmVudFxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIGtleT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5fc2V0TWFwYm94TWFwfVxuICAgICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICAgIHNrZXRjaFZhbHVlPXtza2V0Y2hWYWx1ZX1cbiAgICAgICAgICAgICAgZ2V0Q3Vyc29yPXt0aGlzLnByb3BzLmhvdmVySW5mbyA/ICgpID0+ICdwb2ludGVyJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgb25Nb3VzZU1vdmU9e2V2dCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gU2VuZGluZyBtb3VzZSBtb3ZlIHVwZGF0ZXMgdmlhIFJlZHV4IGlzIGV4cGVuc2l2ZS4gU3RvcmVcbiAgICAgICAgICAgICAgICAvLyBsb2NhbGx5IGFuZCByZWx5IG9uIGRlY2suZ2wgdG8gZHJpdmUgcmVuZGVyIHVwZGF0ZXNcbiAgICAgICAgICAgICAgICAvLyBTZWUgQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY3VycmVudCA9IHttb3VzZVBvc2l0aW9uOiBldnQucG9pbnR9O1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7UEVSRl9ERUJVRyAmJiByZW5kZXJQZXJmb3JtYW5jZVN0YXRzKCl9XG4gICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlck1hcGJveE92ZXJsYXlzKCl9XG4gICAgICAgICAgICAgIDxFZGl0b3JcbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgIGZpbHRlcnM9e3RoaXMucG9seWdvbkZpbHRlcnModGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgaXNFbmFibGVkPXtpc0VkaXR9XG4gICAgICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dmlzU3RhdGVBY3Rpb25zLmRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3Zpc1N0YXRlQWN0aW9ucy5zZXRTZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgICAgICAgb25VcGRhdGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGZWF0dXJlc31cbiAgICAgICAgICAgICAgICBvblRvZ2dsZVBvbHlnb25GaWx0ZXI9e3Zpc1N0YXRlQWN0aW9ucy5zZXRQb2x5Z29uRmlsdGVyTGF5ZXJ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzRWRpdCA/ICdhbGwnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBlZGl0b3IudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHtQRVJGX0RFQlVHICYmIHJlbmRlclBlcmZvcm1hbmNlU3RhdHMoKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7bWFwU3R5bGUudG9wTWFwU3R5bGUgfHwgaGFzR2VvY29kZXJMYXllciA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e01BUF9TVFlMRS50b3B9PlxuICAgICAgICAgICAgICA8TWFwQ29tcG9uZW50IHsuLi5tYXBQcm9wc30ga2V5PVwidG9wXCIgbWFwU3R5bGU9e21hcFN0eWxlLnRvcE1hcFN0eWxlfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkoe1tHRU9DT0RFUl9MQVlFUl9JRF06IHRydWV9KX1cbiAgICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwUG9wb3ZlcihsYXllcnNUb1JlbmRlcil9XG4gICAgICAgICAgeyFpc1NwbGl0IHx8IGluZGV4ID09PSAxID8gPEF0dHJpYnV0aW9uIC8+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHttYXBTdGF0ZSwgbWFwU3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGNvbnRleHRMb3N0ID0gdGhpcy5zdGF0ZT8uY29udGV4dExvc3Q7XG5cbiAgICAgIGlmIChjb250ZXh0TG9zdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZE1hcENvbnRhaW5lciByZWY9e3RoaXMuX3JlZn0gc3R5bGU9e01BUF9TVFlMRS5jb250YWluZXJ9IGdsb2JlPXttYXBTdGF0ZS5nbG9iZX0+XG4gICAgICAgICAge21hcFN0eWxlLmJvdHRvbU1hcFN0eWxlICYmIHRoaXMuX3JlbmRlck1hcCgpfVxuICAgICAgICA8L1N0eWxlZE1hcENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgTWFwQ29udGFpbmVyLmRpc3BsYXlOYW1lID0gJ01hcENvbnRhaW5lcic7XG5cbiAgcmV0dXJuIE1hcENvbnRhaW5lcjtcbn1cbiJdfQ==
|
|
860
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJtYXBMYXllcnMiLCJsYXllck9yZGVyIiwicG9wdXBTZXR0aW5ncyIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInBvcHVwU2V0dGluZ3NTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsIm1lc3NhZ2UiLCJzZXRTdGF0ZSIsImNvbnRleHRMb3N0IiwiZXJyb3JNZXNzYWdlIiwibm90aWZpY2F0aW9uSWQiLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsImxhc3RTaG93biIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwidmlld1N0YXRlIiwiaW50ZXJhY3Rpb25TdGF0ZSIsImluY3JlbWVudCIsInJlc3RWaWV3U3RhdGUiLCJuZXh0IiwiaW5UcmFuc2l0aW9uIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJwYW5lbElkIiwidG9nZ2xlTWFwQ29udHJvbCIsIl9kZWNrIiwiX3JlZiIsIl9oYXNSZW5kZXJlZCIsIl9tb3VzZVBvc2l0aW9uIiwiY3VycmVudCIsIl9oYW5kbGVSZXNpemUiLCJzdGF0ZSIsIm9mZiIsIm9uRGVja0luaXRpYWxpemVkIiwibGF5ZXJzVG9SZW5kZXIiLCJsbmdMYXQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsIm1hcFN0eWxlIiwiaW5rU3RyZW5ndGgiLCJza2V0Y2hWYWx1ZSIsImh1ZSIsImh1ZVZhbHVlU2F0dXJhdGlvbiIsImh1ZVNhdHVyYXRpb24iLCJpbmtFZmZlY3QiLCJpbmsiLCJzdHJlbmd0aCIsImh1ZVNhdHVyYXRpb25FZmZlY3QiLCJzYXR1cmF0aW9uIiwiYWxsRWZmZWN0cyIsImRvdFNjcmVlblZhbHVlIiwiZG90U2NyZWVuIiwiZG90U2NyZWVuRWZmZWN0IiwiY2VudGVyIiwiYW5nbGUiLCJQSSIsInNpemUiLCJwdXNoIiwibGF5ZXJzRm9yRGVjayIsIm1hcFN0YXRlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJtYXNrUG9seWdvbiIsImRlY2tHbExheWVycyIsImRlY2tHbFByb3BzIiwiZGF0YUxheWVycyIsInNsaWNlIiwicmV2ZXJzZSIsIm92ZXJsYXlzIiwibGF5ZXJDYWxsYmFja3MiLCJvblNldExheWVyRG9tYWluIiwidmFsIiwiX29uTGF5ZXJTZXREb21haW4iLCJsYXllck92ZXJsYXkiLCJjb25jYXQiLCJsYXllcnNPblRvcCIsIlNvbGlkUG9seWdvbkxheWVyIiwiTUFTS19MQVlFUl9JRCIsIk9QRVJBVElPTiIsIk1BU0siLCJkYXRhQ29tcGFyYXRvciIsIm9sZERhdGEiLCJnZXRQb2x5Z29uIiwiZCIsImdldEZpbGxDb2xvciIsInZpc2libGVMYXllckdyb3VwcyIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJlZmZlY3RzIiwiYm90dG9tTWFwU3R5bGUiLCJsIiwiQm9vbGVhbiIsImNsb25lIiwiZXh0ZW5zaW9ucyIsInN0eWxlVHlwZSIsIl9nZXRFZmZlY3RzVmFsdWVzIiwiaGFzUmVuZGVyZWQiLCJyZXNldEhhc1JlbmRlcmVkIiwiX29uVmlld3BvcnRDaGFuZ2UiLCJvcHRzIiwiX29uQmVmb3JlUmVuZGVyIiwib25MYXllckhvdmVyIiwiZSIsIl9vbkRlY2tFcnJvciIsImNvbXAiLCJkZWNrIiwiX29uRGVja0luaXRpYWxpemVkIiwiaXNOYU4iLCJ2aXNpYmlsaXR5Qnlab29tIiwibWluIiwibWF4IiwiY3VycmVudFpvb21SYW5nZSIsInJvdW5kIiwibWFwYm94TGF5ZXJzIiwibWFwYm94TGF5ZXJzU2VsZWN0b3IiLCJPYmplY3QiLCJrZXlzIiwiaXNTdHlsZUxvYWRlZCIsIk1hcENvbXBvbmVudCIsImRhdGFzZXRzIiwibWFwQ29udHJvbHMiLCJsb2NhbGUiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImVkaXRvciIsImxheWVyc0ZvckRlY2tTZWxlY3RvciIsIm1hcFByb3BzIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwidHJhbnNmb3JtUmVxdWVzdCIsImlzRWRpdCIsIm1hcERyYXciLCJhY3RpdmUiLCJoYXNHZW9jb2RlckxheWVyIiwiZmluZCIsIkdFT0NPREVSX0xBWUVSX0lEIiwiaXNTcGxpdCIsIm1vdXNlUG9zaXRpb24iLCJuZWVkc0Jhc2VtYXAiLCJMT0NBTEVfQ09ERVMiLCJkcmFnUm90YXRlIiwicmVhZE9ubHkiLCJzY2FsZSIsImdlb2NvZGVyIiwiZW5hYmxlZCIsInRvZ2dsZVBlcnNwZWN0aXZlIiwidG9nZ2xlU3BsaXRNYXAiLCJfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIiLCJfdG9nZ2xlTWFwQ29udHJvbCIsInNldEVkaXRvck1vZGUiLCJzZXRMb2NhbGUiLCJ0b2dnbGVFZGl0b3JWaXNpYmlsaXR5IiwiX3NldE1hcGJveE1hcCIsImhvdmVySW5mbyIsInVuZGVmaW5lZCIsImV2dCIsInBvaW50IiwiX3JlbmRlckRlY2tPdmVybGF5IiwiX3JlbmRlck1hcGJveE92ZXJsYXlzIiwicG9seWdvbkZpbHRlcnMiLCJkZWxldGVGZWF0dXJlIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwic2V0RmVhdHVyZXMiLCJzZXRQb2x5Z29uRmlsdGVyTGF5ZXIiLCJ2aXNpYmxlIiwidG9wTWFwU3R5bGUiLCJfcmVuZGVyTWFwUG9wb3ZlciIsImdsb2JlIiwiX3JlbmRlck1hcCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJhcnJheU9mIiwiYW55IiwiYm9vbCIsImNsaWNrZWQiLCJvbk1hcFRvZ2dsZUxheWVyIiwiZnVuYyIsIm51bWJlciIsIk1hcGJveEdMTWFwIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQU9BOztBQUNBOztBQUdBOztB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QmhNLElBQUFBLEtBQUssRUFBRXVMLHNCQUFVVSxNQTlCQTtBQStCakJ2TixJQUFBQSxhQUFhLEVBQUU2TSxzQkFBVUM7QUEvQlIsR0FGcUQ7QUFBQSxtQ0FDcEV4TixZQURvRSxrQkFvQ2xEO0FBQ3BCcUssSUFBQUEsWUFBWSxFQUFFNkQsc0JBRE07QUFFcEJwSCxJQUFBQSxXQUFXLEVBQUUsRUFGTztBQUdwQjlFLElBQUFBLEtBQUssRUFBRSxDQUhhO0FBSXBCOUIsSUFBQUEsT0FBTyxFQUFFO0FBSlcsR0FwQ2tEO0FBNGpCMUVGLEVBQUFBLFlBQVksQ0FBQ21PLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPbk8sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1xuICBPUEVSQVRJT04sXG4gIExheWVyLFxuICBBbWJpZW50TGlnaHQsXG4gIExpZ2h0aW5nRWZmZWN0LFxuICBQb3N0UHJvY2Vzc0VmZmVjdCxcbiAgX1N1bkxpZ2h0XG59IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHticmlnaHRuZXNzQ29udHJhc3QsIGh1ZVNhdHVyYXRpb24sIGluaywgZG90U2NyZWVuLCB2aWJyYW5jZX0gZnJvbSAnQGx1bWEuZ2wvc2hhZGVydG9vbHMnO1xuaW1wb3J0IHtTb2xpZFBvbHlnb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7VGlsZUxheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcbmltcG9ydCB7ZXJyb3JOb3RpZmljYXRpb259IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgTWFwUG9wb3ZlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9tYXAvbWFwLXBvcG92ZXInO1xuaW1wb3J0IE1hcENvbnRyb2xGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1jb250cm9sJztcbmltcG9ydCB7U3R5bGVkTWFwQ29udGFpbmVyLCBTdHlsZWRBdHRyYnV0aW9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge2dlbmVyYXRlTWFwYm94TGF5ZXJzLCB1cGRhdGVNYXBib3hMYXllcnN9IGZyb20gJ2xheWVycy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtzZXRMYXllckJsZW5kaW5nfSBmcm9tICd1dGlscy9nbC11dGlscyc7XG5pbXBvcnQge3RyYW5zZm9ybVJlcXVlc3R9IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtyZW5kZXJEZWNrR2xMYXllciwgcHJlcGFyZUxheWVyc1RvUmVuZGVyLCBwcmVwYXJlTGF5ZXJzRm9yRGVja30gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuXG4vLyBkZWZhdWx0LXNldHRpbmdzXG5pbXBvcnQgVGhyZWVEQnVpbGRpbmdMYXllciBmcm9tICdkZWNrZ2wtbGF5ZXJzLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLWxheWVyJztcbmltcG9ydCB7XG4gIEZJTFRFUl9UWVBFUyxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIE1BU0tfTEFZRVJfSUQsXG4gIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuaW1wb3J0IHtvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnLi4vdXRpbHMvb2JzZXJ2ZS1kaW1lbnNpb25zJztcbmltcG9ydCB7TE9DQUxFX0NPREVTfSBmcm9tICdsb2NhbGl6YXRpb24vbG9jYWxlcyc7XG5cbi8vIDNEIHRpbGVzXG5pbXBvcnQge19UZXJyYWluRXh0ZW5zaW9uIGFzIFRlcnJhaW5FeHRlbnNpb259IGZyb20gJ0BkZWNrLmdsL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHtUaWxlM0RMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmNvbnN0IEdPT0dMRV9NQVBTX0FQSV9LRVkgPSAnQUl6YVN5Q3B2UXltYzV3alNZSXN4eTNSVjF3aWRNM3AzaDc4Q0FrJztcblxuY2xhc3MgQ3VzdG9tVGlsZTNETGF5ZXIgZXh0ZW5kcyBUaWxlM0RMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQ3VzdG9tVGlsZTNETGF5ZXInO1xuXG4gIGZpbHRlclN1YkxheWVyKHtsYXllciwgdmlld3BvcnR9KSB7XG4gICAgLy8gRG8gbm90IHNob3cgdGlsZXMgd2hpY2ggYXJlIG1hbnkgbGF5ZXJzIHRvbyBsb3cgaW4gcmVzb2x1dGlvbiAoYXZvaWRzIGFydGlmYWN0cylcbiAgICBjb25zdCBsb2Rab29tID0gMjIgLSBNYXRoLmxvZzIobGF5ZXIucHJvcHMudGlsZS5sb2RNZXRyaWNWYWx1ZSk7XG4gICAgcmV0dXJuIGxvZFpvb20gPiB2aWV3cG9ydD8uem9vbTtcbiAgfVxufVxuXG5sZXQgaCA9IDA7XG5jb25zdCB0aWxlczNkID0gbmV3IEN1c3RvbVRpbGUzRExheWVyKHtcbiAgaWQ6ICdnb29nbGUtM2QtdGlsZXMnLFxuICBkYXRhOiAnaHR0cHM6Ly90aWxlLmdvb2dsZWFwaXMuY29tL3YxLzNkdGlsZXMvcm9vdC5qc29uJyxcbiAgb25UaWxlc2V0TG9hZDogdGlsZXNldDNkID0+IHtcbiAgICB0aWxlc2V0M2Qub3B0aW9ucy5tYXhpbXVtU2NyZWVuU3BhY2VFcnJvciA9IDU7XG4gICAgdGlsZXNldDNkLl9vblRpbGVMb2FkRXJyb3IgPSAoKSA9PiB7fTtcbiAgICB0aWxlc2V0M2Qub3B0aW9ucy5vblRyYXZlcnNhbENvbXBsZXRlID0gc2VsZWN0ZWRUaWxlcyA9PiB7XG4gICAgICBsZXQgbWluTG9kID0gSW5maW5pdHk7XG4gICAgICBmb3IgKGNvbnN0IHtsb2RNZXRyaWNWYWx1ZX0gb2Ygc2VsZWN0ZWRUaWxlcykge1xuICAgICAgICBpZiAobG9kTWV0cmljVmFsdWUgPCBtaW5Mb2QpIG1pbkxvZCA9IGxvZE1ldHJpY1ZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyZWQgPSBzZWxlY3RlZFRpbGVzLmZpbHRlcih0ID0+IHQubG9kTWV0cmljVmFsdWUgPCA0ICogbWluTG9kKTtcblxuICAgICAgLy8gSGFja3kgd2F5IHRvIG9idGFpbiBoZWlnaHQgYWJvdmUgc2VhIGxldmVsIHRvIGltcHJvdmUgY29udHJvbHNcbiAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgaCA9IGZpbHRlcmVkLm1hcCh0ID0+IHQuYm91bmRpbmdCb3hbMF1bMl0pLnJlZHVjZSgoYSwgbikgPT4gYSArIG4pIC8gZmlsdGVyZWQubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZWN0ZWRUaWxlcztcbiAgICB9O1xuICB9LFxuICBsb2FkT3B0aW9uczoge1xuICAgIGZldGNoOiB7aGVhZGVyczogeydYLUdPT0ctQVBJLUtFWSc6IEdPT0dMRV9NQVBTX0FQSV9LRVl9fVxuICB9LFxuICAvLyBAdHMtaWdub3JlXG4gIG9wZXJhdGlvbjogJ3RlcnJhaW4rZHJhdycgLy8gUmVxdWlyZWQgdG8gZW5hYmxlIGRyYXBpbmcgb2Ygb3RoZXIgbGF5ZXJzXG59KTtcbmNvbnN0IHRlcnJhaW5FeHRlbnNpb24gPSBuZXcgVGVycmFpbkV4dGVuc2lvbigpO1xuXG4vLyBFZmZlY3RzXG5jb25zdCBhbWJpZW50TGlnaHQgPSBuZXcgQW1iaWVudExpZ2h0KHtjb2xvcjogWzI1NSwgMjU1LCAyNTVdLCBpbnRlbnNpdHk6IDF9KTtcbmNvbnN0IHN1bkxpZ2h0ID0gbmV3IF9TdW5MaWdodCh7XG4gIHRpbWVzdGFtcDogMTY4Mzg2OTkxNTc3NyxcbiAgY29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcbiAgaW50ZW5zaXR5OiAxLFxuICBfc2hhZG93OiB0cnVlXG59KTtcbmNvbnN0IGxpZ2h0aW5nRWZmZWN0ID0gbmV3IExpZ2h0aW5nRWZmZWN0KHtcbiAgYW1iaWVudExpZ2h0LFxuICBzdW5MaWdodFxufSk7XG5saWdodGluZ0VmZmVjdC5zaGFkb3dDb2xvciA9IFswLCAwLCAwLCAwXTtcblxuY29uc3QgYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGJyaWdodG5lc3NDb250cmFzdCwge1xuICBjb250cmFzdDogMCxcbiAgYnJpZ2h0bmVzczogMC4yXG59KTtcblxuY29uc3QgdmlicmFuY2VFZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QodmlicmFuY2UsIHthbW91bnQ6IDF9KTtcblxuLy8gUGVyZm9ybWFuY2UgZGVidWdnaW5nXG5pbXBvcnQge2NyZWF0ZVRyYWNrZXIsIGNyZWF0ZUxheWVyVXBkYXRlVHJhY2tlciwgcmVuZGVyUGVyZm9ybWFuY2VTdGF0c30gZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5jb25zdCB0cmFja2VycyA9IHt9O1xuY29uc3QgUEVSRl9ERUJVRyA9IHdpbmRvdz8ubG9jYXRpb24/LnNlYXJjaD8uaW5jbHVkZXMoJ1BFUkZfREVCVUcnKTtcbmlmIChQRVJGX0RFQlVHKSB7XG4gIHRyYWNrZXJzLmRyYXdDb3VudCA9IGNyZWF0ZVRyYWNrZXIoJ2RyYXdzJyk7XG4gIHRyYWNrZXJzLnZpZXdwb3J0Q2hhbmdlQ291bnQgPSBjcmVhdGVUcmFja2VyKCd2aWV3cG9ydCBjaGFuZ2VzJyk7XG4gIGNyZWF0ZUxheWVyVXBkYXRlVHJhY2tlcignc3RhdGUgdXBkYXRlcycsIFtMYXllciwgVGlsZUxheWVyXSk7XG59XG5cbi8qKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IFJlYWN0LkNTU1Byb3BlcnRpZXN9fSAqL1xuY29uc3QgTUFQX1NUWUxFID0ge1xuICBjb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH0sXG4gIHRvcDoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJzBweCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfVxufTtcblxuY29uc3QgTUFQQk9YR0xfU1RZTEVfVVBEQVRFID0gJ3N0eWxlLmxvYWQnO1xuY29uc3QgTUFQQk9YR0xfUkVOREVSID0gJ3JlbmRlcic7XG5jb25zdCBUUkFOU0lUSU9OX0RVUkFUSU9OID0gMDtcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uID0gKCkgPT4gKFxuICA8U3R5bGVkQXR0cmJ1dGlvbj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1sb2dvXCI+XG4gICAgICBCYXNlbWFwIGJ5OlxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPVwibWFwYm94Z2wtY3RybC1sb2dvXCJcbiAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJNYXBib3ggbG9nb1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL2tlcGxlci5nbC9wb2xpY3kvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBrZXBsZXIuZ2wgfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgTWFwYm94IHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBPcGVuU3RyZWV0TWFwIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vbWFwLWZlZWRiYWNrL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgPHN0cm9uZz5JbXByb3ZlIHRoaXMgbWFwPC9zdHJvbmc+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkQXR0cmJ1dGlvbj5cbik7XG5cbk1hcENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBQb3BvdmVyRmFjdG9yeSwgTWFwQ29udHJvbEZhY3RvcnksIEVkaXRvckZhY3RvcnldO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXBDb250YWluZXJGYWN0b3J5KE1hcFBvcG92ZXIsIE1hcENvbnRyb2wsIEVkaXRvcikge1xuICBjbGFzcyBNYXBDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAvLyByZXF1aXJlZFxuICAgICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBpbnRlcmFjdGlvbkNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJCbGVuZGluZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJPcmRlcjogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyRGF0YTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGZpbHRlcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdGF0ZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwQ29udHJvbHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBza2V0Y2hWYWx1ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBtYXBib3hBcGlVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB2aXNTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgdWlTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAgICAgLy8gb3B0aW9uYWxcbiAgICAgIHByaW1hcnk6IFByb3BUeXBlcy5ib29sLCAvLyBwcmltYXJ5IG9uZSB3aWxsIGJlIHJlcG9ydGluZyBpdHMgc2l6ZSB0byBhcHBTdGF0ZVxuICAgICAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAgICAgaXNFeHBvcnQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgY2xpY2tlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGhvdmVySW5mbzogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG1hcExheWVyczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG9uTWFwVG9nZ2xlTGF5ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25NYXBTdHlsZUxvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFJlbmRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBnZXRNYXBib3hSZWY6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBwb3B1cFNldHRpbmdzOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBNYXBDb21wb25lbnQ6IE1hcGJveEdMTWFwLFxuICAgICAgZGVja0dsUHJvcHM6IHt9LFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBwcmltYXJ5OiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7XG4gICAgICAgIC8vIFtsYXllcnMuaWRdOiBtYXBib3hMYXllckNvbmZpZ1xuICAgICAgfTtcblxuICAgICAgdGhpcy5fZGVjayA9IG51bGw7XG4gICAgICB0aGlzLl9yZWYgPSBjcmVhdGVSZWYoKTtcblxuICAgICAgLy8gUmVuZGVyIGxpbWl0aW5nIG1lY2hhbmlzbVxuICAgICAgdGhpcy5faGFzUmVuZGVyZWQgPSBjcmVhdGVSZWYoKTtcbiAgICAgIHRoaXMuX21vdXNlUG9zaXRpb24gPSBjcmVhdGVSZWYoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRMb3N0ID0gdGhpcy5zdGF0ZT8uY29udGV4dExvc3Q7XG5cbiAgICAgIGlmIChjb250ZXh0TG9zdCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tZGlkLXVwZGF0ZS1zZXQtc3RhdGVcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAvLyB1bmJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgIGlmICh0aGlzLl9tYXApIHtcbiAgICAgICAgdGhpcy5fbWFwLm9mZihNQVBCT1hHTF9TVFlMRV9VUERBVEUpO1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1JFTkRFUik7XG4gICAgICB9XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmIChwcmltYXJ5KSB7XG4gICAgICAgIGNvbnN0IHttYXBTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCFpc0V4cG9ydCAmJiBkaW1lbnNpb25zICYmIGRpbWVuc2lvbnMud2lkdGggPiAwICYmIGRpbWVuc2lvbnMuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgIG1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAoZGltZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllcnM7XG4gICAgbGF5ZXJEYXRhU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllckRhdGE7XG4gICAgbWFwTGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBMYXllcnM7XG4gICAgbGF5ZXJPcmRlclNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJPcmRlcjtcbiAgICBwb3B1cFNldHRpbmdzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5wb3B1cFNldHRpbmdzO1xuXG4gICAgbGF5ZXJzVG9SZW5kZXJTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLm1hcExheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5wb3B1cFNldHRpbmdzU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXJcbiAgICApO1xuICAgIGxheWVyc0ZvckRlY2tTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzRm9yRGVja1xuICAgICk7XG4gICAgZmlsdGVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuZmlsdGVycztcbiAgICBwb2x5Z29uRmlsdGVycyA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZmlsdGVyc1NlbGVjdG9yLCBmaWx0ZXJzID0+XG4gICAgICBmaWx0ZXJzLmZpbHRlcihmID0+IGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnBvbHlnb24pXG4gICAgKTtcblxuICAgIG1hcGJveExheWVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJPcmRlclNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yLFxuICAgICAgZ2VuZXJhdGVNYXBib3hMYXllcnNcbiAgICApO1xuXG4gICAgLyogY29tcG9uZW50IHByaXZhdGUgZnVuY3Rpb25zICovXG4gICAgX29uQ2xvc2VNYXBQb3BvdmVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKG51bGwpO1xuICAgIH07XG5cbiAgICBfb25MYXllclNldERvbWFpbiA9IChpZHgsIGNvbG9yRG9tYWluKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5sYXllckNvbmZpZ0NoYW5nZSh0aGlzLnByb3BzLmxheWVyc1tpZHhdLCB7XG4gICAgICAgIGNvbG9yRG9tYWluXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX2hhbmRsZU1hcFRvZ2dsZUxheWVyID0gbGF5ZXJJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXg6IG1hcEluZGV4ID0gMCwgdmlzU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAobWFwSW5kZXgsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICBfb25NYXBib3hTdHlsZVVwZGF0ZSA9ICgpID0+IHtcbiAgICAgIC8vIGZvcmNlIHJlZnJlc2ggbWFwYm94Z2wgbGF5ZXJzXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0ge307XG4gICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkKHRoaXMuX21hcCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9zZXRNYXBib3hNYXAgPSBtYXBib3ggPT4ge1xuICAgICAgaWYgKCF0aGlzLl9tYXAgJiYgbWFwYm94KSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG1hcGJveC5nZXRNYXAoKTtcbiAgICAgICAgLy8gaSBub3RpY2VkIGluIGNlcnRhaW4gY29udGV4dCB3ZSBkb24ndCBhY2Nlc3MgdGhlIGFjdHVhbCBtYXAgZWxlbWVudFxuICAgICAgICBpZiAoIXRoaXMuX21hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBiaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9TVFlMRV9VUERBVEUsIHRoaXMuX29uTWFwYm94U3R5bGVVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9SRU5ERVIsICgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25NYXBSZW5kZXIodGhpcy5fbWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5nZXRNYXBib3hSZWYpIHtcbiAgICAgICAgLy8gVGhlIHBhcmVudCBjb21wb25lbnQgY2FuIGdhaW4gYWNjZXNzIHRvIG91ciBNYXBib3hHbE1hcCBieVxuICAgICAgICAvLyBwcm92aWRpbmcgdGhpcyBjYWxsYmFjay4gTm90ZSB0aGF0ICdtYXBib3gnIHdpbGwgYmUgbnVsbCB3aGVuIHRoZVxuICAgICAgICAvLyByZWYgaXMgdW5zZXQgKGUuZy4gd2hlbiBhIHNwbGl0IG1hcCBpcyBjbG9zZWQpLlxuICAgICAgICB0aGlzLnByb3BzLmdldE1hcGJveFJlZihtYXBib3gsIHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25EZWNrSW5pdGlhbGl6ZWQoZ2wpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQodGhpcy5fZGVjaywgZ2wpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vbkJlZm9yZVJlbmRlciA9ICh7Z2x9KSA9PiB7XG4gICAgICBzZXRMYXllckJsZW5kaW5nKGdsLCB0aGlzLnByb3BzLmxheWVyQmxlbmRpbmcpO1xuICAgIH07XG5cbiAgICBfb25EZWNrRXJyb3IgPSAoZXJyb3IsIGxheWVyKSA9PiB7XG4gICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2UgPT09ICdXZWJHTCBjb250ZXh0IGlzIGxvc3QnKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NvbnRleHRMb3N0OiB0cnVlfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEFuIGVycm9yIGluIGRlY2suZ2w6ICR7ZXJyb3I/Lm1lc3NhZ2V9IGluICR7bGF5ZXI/LmlkfWA7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25JZCA9IGAke2xheWVyPy5pZH0tJHtlcnJvcj8ubWVzc2FnZX1gO1xuXG4gICAgICAvLyBUaHJvdHRsZSBlcnJvciBub3RpZmljYXRpb25zLCBhcyBSZWFjdCBkb2Vzbid0IGxpa2UgdG9vIG1hbnkgc3RhdGUgY2hhbmdlcyBmcm9tIGhlcmUuXG4gICAgICB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZCB8fCB7fTtcbiAgICAgIGNvbnN0IGxhc3RTaG93biA9IHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbbm90aWZpY2F0aW9uSWRdO1xuICAgICAgaWYgKCFsYXN0U2hvd24gfHwgbGFzdFNob3duIDwgRGF0ZS5ub3coKSAtIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FKSB7XG4gICAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbbm90aWZpY2F0aW9uSWRdID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvLyBDcmVhdGUgbmV3IGVycm9yIG5vdGlmaWNhdGlvbiBvciB1cGRhdGUgZXhpc3Rpbmcgb25lIHdpdGggc2FtZSBpZC5cbiAgICAgICAgLy8gVXBkYXRlIGlzIHJlcXVpcmVkIHRvIHByZXNlcnZlIHRoZSBvcmRlciBvZiBub3RpZmljYXRpb25zIGFzIHRoZXkgcHJvYmFibHkgYXJlIGdvaW5nIHRvIFwianVtcFwiIGJhc2VkIG9uIG9yZGVyIG9mIGVycm9ycy5cbiAgICAgICAgY29uc3Qge3VpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLmFkZE5vdGlmaWNhdGlvbihcbiAgICAgICAgICBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBpZDogbm90aWZpY2F0aW9uSWRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKiBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9ucyAqL1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKSB7XG4gICAgICAvLyBPdmVycmlkZW4gaW4gQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbiAgICBfZ2V0SG92ZXJYWSh2aWV3cG9ydCwgbG5nTGF0KSB7XG4gICAgICBjb25zdCBzY3JlZW5Db29yZCA9ICF2aWV3cG9ydCB8fCAhbG5nTGF0ID8gbnVsbCA6IHZpZXdwb3J0LnByb2plY3QobG5nTGF0KTtcbiAgICAgIHJldHVybiBzY3JlZW5Db29yZCAmJiB7eDogc2NyZWVuQ29vcmRbMF0sIHk6IHNjcmVlbkNvb3JkWzFdfTtcbiAgICB9XG5cbiAgICBfZ2V0RWZmZWN0c1ZhbHVlcyhtYXBTdHlsZSkge1xuICAgICAgY29uc3QgaW5rU3RyZW5ndGggPSBtYXBTdHlsZS5za2V0Y2hWYWx1ZT8uaW5rU3RyZW5ndGggfHwgMC4yO1xuICAgICAgY29uc3QgaHVlID0gbWFwU3R5bGUuc2tldGNoVmFsdWU/Lmh1ZSB8fCAwO1xuICAgICAgY29uc3QgaHVlVmFsdWVTYXR1cmF0aW9uID0gbWFwU3R5bGUuc2tldGNoVmFsdWU/Lmh1ZVNhdHVyYXRpb24gfHwgMC4zO1xuICAgICAgY29uc3QgaW5rRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGluaywge3N0cmVuZ3RoOiBpbmtTdHJlbmd0aH0pO1xuICAgICAgY29uc3QgaHVlU2F0dXJhdGlvbkVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChodWVTYXR1cmF0aW9uLCB7XG4gICAgICAgIGh1ZSxcbiAgICAgICAgc2F0dXJhdGlvbjogaHVlVmFsdWVTYXR1cmF0aW9uXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGFsbEVmZmVjdHMgPSBbXG4gICAgICAgIGxpZ2h0aW5nRWZmZWN0LFxuICAgICAgICBodWVTYXR1cmF0aW9uRWZmZWN0LFxuICAgICAgICBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QsXG4gICAgICAgIHZpYnJhbmNlRWZmZWN0LFxuICAgICAgICBpbmtFZmZlY3RcbiAgICAgIF07XG4gICAgICBjb25zdCBkb3RTY3JlZW5WYWx1ZSA9IG1hcFN0eWxlLnNrZXRjaFZhbHVlPy5kb3RTY3JlZW4gfHwgZmFsc2U7XG4gICAgICBpZiAoZG90U2NyZWVuVmFsdWUpIHtcbiAgICAgICAgY29uc3QgZG90U2NyZWVuRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGRvdFNjcmVlbiwge1xuICAgICAgICAgIGNlbnRlcjogWzAuNSwgMC41XSxcbiAgICAgICAgICBhbmdsZTogTWF0aC5QSSAqIDAuNSxcbiAgICAgICAgICBzaXplOiAxXG4gICAgICAgIH0pO1xuICAgICAgICBhbGxFZmZlY3RzLnB1c2goZG90U2NyZWVuRWZmZWN0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFsbEVmZmVjdHM7XG4gICAgfVxuXG4gICAgX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBsYXllckRhdGEsXG4gICAgICAgIGxheWVyT3JkZXIsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXNrUG9seWdvblxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICB0cmFja2Vycy5kcmF3Q291bnQ/LmluY3JlbWVudCgpO1xuXG4gICAgICAvLyBpbml0aWFsaXNlIGxheWVycyBmcm9tIHByb3BzIGlmIGV4aXN0c1xuICAgICAgbGV0IGRlY2tHbExheWVycyA9IHRoaXMucHJvcHMuZGVja0dsUHJvcHM/LmxheWVycyB8fCBbXTtcblxuICAgICAgLy8gd2FpdCB1bnRpbCBkYXRhIGlzIHJlYWR5IGJlZm9yZSByZW5kZXIgZGF0YSBsYXllcnNcbiAgICAgIGlmIChsYXllckRhdGEgJiYgbGF5ZXJEYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBsYXN0IGxheWVyIHJlbmRlciBmaXJzdFxuICAgICAgICBjb25zdCBkYXRhTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgICAgIC5zbGljZSgpXG4gICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgIC5maWx0ZXIoaWR4ID0+IGxheWVyc0ZvckRlY2tbbGF5ZXJzW2lkeF0uaWRdKVxuICAgICAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyQ2FsbGJhY2tzID0ge1xuICAgICAgICAgICAgICBvblNldExheWVyRG9tYWluOiB2YWwgPT4gdGhpcy5fb25MYXllclNldERvbWFpbihpZHgsIHZhbClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBsYXllck92ZXJsYXkgPSByZW5kZXJEZWNrR2xMYXllcih0aGlzLnByb3BzLCBsYXllckNhbGxiYWNrcywgaWR4KTtcbiAgICAgICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQobGF5ZXJPdmVybGF5IHx8IFtdKTtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVycy5jb25jYXQoZGF0YUxheWVycyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnNPblRvcCkge1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KHRoaXMucHJvcHMuZGVja0dsUHJvcHMubGF5ZXJzT25Ub3ApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFza1BvbHlnb24pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgICAgIGlkOiBNQVNLX0xBWUVSX0lELFxuICAgICAgICAgICAgb3BlcmF0aW9uOiBPUEVSQVRJT04uTUFTSyxcbiAgICAgICAgICAgIGRhdGE6IFttYXNrUG9seWdvbl0sXG4gICAgICAgICAgICBkYXRhQ29tcGFyYXRvcjogKGRhdGEsIG9sZERhdGEpID0+IGRhdGFbMF0gPT09IG9sZERhdGFbMF0sXG4gICAgICAgICAgICBnZXRQb2x5Z29uOiBkID0+IGQsXG4gICAgICAgICAgICBnZXRGaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1LCAyNTVdXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hcFN0eWxlLnZpc2libGVMYXllckdyb3Vwc1snM2QgYnVpbGRpbmcnXSkge1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaChcbiAgICAgICAgICBuZXcgVGhyZWVEQnVpbGRpbmdMYXllcih7XG4gICAgICAgICAgICBpZDogJ19rZXBsZXJnbF8zZC1idWlsZGluZycsXG4gICAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgZWZmZWN0cyA9IFtdO1xuICAgICAgaWYgKG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlPy50eXBlID09PSAnZ21hcHNfM2QnKSB7XG4gICAgICAgIC8vIEluamVjdCAzRCB0aWxlcyB3aGVuIG1hcCBzdHlsZSBpcyBWb3lhZ2VyIHdpdGhvdXQgbGF5ZXJzXG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVyc1xuICAgICAgICAgIC5maWx0ZXIobCA9PiBCb29sZWFuKGwgJiYgbC5jbG9uZSkpXG4gICAgICAgICAgLm1hcChsID0+IGwuY2xvbmUoe2V4dGVuc2lvbnM6IFsuLi5sLnByb3BzLmV4dGVuc2lvbnMsIHRlcnJhaW5FeHRlbnNpb25dfSkpO1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaCh0aWxlczNkLmNsb25lKCkpO1xuXG4gICAgICAgIGlmIChtYXBTdHlsZS5zdHlsZVR5cGUgPT09ICdnb29nbGUtM2Qtc2tldGNoJykge1xuICAgICAgICAgIGVmZmVjdHMgPSB0aGlzLl9nZXRFZmZlY3RzVmFsdWVzKG1hcFN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMaW1pdCByZW5kZXJzXG4gICAgICBjb25zdCBoYXNSZW5kZXJlZCA9IHRoaXMuX2hhc1JlbmRlcmVkO1xuICAgICAgY29uc3QgcmVzZXRIYXNSZW5kZXJlZCA9ICgpID0+IChoYXNSZW5kZXJlZC5jdXJyZW50ID0gZmFsc2UpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERlY2tHTFxuICAgICAgICAgIGNvbnRyb2xsZXI9e3RydWV9XG4gICAgICAgICAgey4uLnRoaXMucHJvcHMuZGVja0dsUHJvcHN9XG4gICAgICAgICAgdmlld1N0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICBvblZpZXdTdGF0ZUNoYW5nZT17KHt2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGV9KSA9PiB7XG4gICAgICAgICAgICAvLyBMaW1pdCB1cGRhdGVzIChwcmV2ZW50cyBmcmVlemVzIHdoZW4gZGV2IHRvb2xzIG9wZW4pXG4gICAgICAgICAgICBpZiAoIWhhc1JlbmRlcmVkLmN1cnJlbnQgJiYgdmlld1N0YXRlLndpZHRoID4gMSAmJiB2aWV3U3RhdGUuaGVpZ2h0ID4gMSkge1xuICAgICAgICAgICAgICBoYXNSZW5kZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5fb25WaWV3cG9ydENoYW5nZSh2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICBsYXllcnM9e2RlY2tHbExheWVyc31cbiAgICAgICAgICBlZmZlY3RzPXtlZmZlY3RzfVxuICAgICAgICAgIG9uQmVmb3JlUmVuZGVyPXtvcHRzID0+IHtcbiAgICAgICAgICAgIHJlc2V0SGFzUmVuZGVyZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX29uQmVmb3JlUmVuZGVyKG9wdHMpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ib3Zlcj17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3Zlcn1cbiAgICAgICAgICBvbkNsaWNrPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrfVxuICAgICAgICAgIG9uRXJyb3I9e2UgPT4ge1xuICAgICAgICAgICAgZGVidWdnZXI7XG4gICAgICAgICAgICB0aGlzLl9vbkRlY2tFcnJvcihlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlZj17Y29tcCA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgY29tcC5kZWNrICE9PSB0aGlzLl9kZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2RlY2sgPSBjb21wLmRlY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbldlYkdMSW5pdGlhbGl6ZWQ9e2dsID0+IHRoaXMuX29uRGVja0luaXRpYWxpemVkKGdsKX1cbiAgICAgICAgICBsYXllckZpbHRlcj17KHtsYXllciwgdmlld3BvcnR9KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1pbikgfHxcbiAgICAgICAgICAgICAgaXNOYU4obGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbT8ubWF4KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudFpvb21SYW5nZSA9IE1hdGgucm91bmQobWFwU3RhdGUuem9vbSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWluIDw9IGN1cnJlbnRab29tUmFuZ2UgJiZcbiAgICAgICAgICAgICAgbGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbS5tYXggPj0gY3VycmVudFpvb21SYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlTWFwYm94TGF5ZXJzKCkge1xuICAgICAgY29uc3QgbWFwYm94TGF5ZXJzID0gdGhpcy5tYXBib3hMYXllcnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGlmICghT2JqZWN0LmtleXMobWFwYm94TGF5ZXJzKS5sZW5ndGggJiYgIU9iamVjdC5rZXlzKHRoaXMucHJldmlvdXNMYXllcnMpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZU1hcGJveExheWVycyh0aGlzLl9tYXAsIG1hcGJveExheWVycywgdGhpcy5wcmV2aW91c0xheWVycyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSBtYXBib3hMYXllcnM7XG4gICAgfVxuXG4gICAgX3JlbmRlck1hcGJveE92ZXJsYXlzKCkge1xuICAgICAgaWYgKHRoaXMuX21hcCAmJiB0aGlzLl9tYXAuaXNTdHlsZUxvYWRlZCgpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vblZpZXdwb3J0Q2hhbmdlID0gKHZpZXdTdGF0ZSwgaW50ZXJhY3Rpb25TdGF0ZSkgPT4ge1xuICAgICAgdHJhY2tlcnMudmlld3BvcnRDaGFuZ2VDb3VudD8uaW5jcmVtZW50KCk7XG5cbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCAuLi5yZXN0Vmlld1N0YXRlfSA9IHZpZXdTdGF0ZTtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgLy8gcmVhY3QtbWFwLWdsIHNlbmRzIDAsMCBkaW1lbnNpb25zIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgICAgLy8gYWZ0ZXIgd2UgaGF2ZSByZWNlaXZlZCBwcm9wZXIgZGltZW5zaW9ucyBmcm9tIG9ic2VydmVEaW1lbnNpb25zXG4gICAgICBjb25zdCBuZXh0ID0ge1xuICAgICAgICAuLi4od2lkdGggPiAwICYmIGhlaWdodCA+IDAgPyB2aWV3U3RhdGUgOiByZXN0Vmlld1N0YXRlKSxcblxuICAgICAgICAvLyBBdXRvLXVwZGF0ZSB0aGUgY2FtZXJhIGhlaWdodCBhY2NvcmRpbmcgdG8gM0QgdGlsZXMsIGV4Y2VwdCB3aGVuIHRyYW5zaXRpb25pbmdcbiAgICAgICAgLi4uKGludGVyYWN0aW9uU3RhdGUgJiYgIWludGVyYWN0aW9uU3RhdGUuaW5UcmFuc2l0aW9uICYmIHtwb3NpdGlvbjogWzAsIDAsIGhdfSlcbiAgICAgICAgLy8gZW5hYmxpbmcgdHJhbnNpdGlvbiBpbiB0d28gbWFwcyBtYXkgbGVhZCB0byBlbmRsZXNzIHVwZGF0ZSBsb29wc1xuICAgICAgICAvLyB0cmFuc2l0aW9uRHVyYXRpb246IHByaW1hcnkgPyBUUkFOU0lUSU9OX0RVUkFUSU9OIDogMCAvLyBEaXNhYmxlIGZvciAzRCB0aWxlcyB0cmFuc2l0aW9uc1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlKG5leHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXhwb3J0KSB7XG4gICAgICAgIHRoaXMucHJvcHMubWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChuZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RvZ2dsZU1hcENvbnRyb2wgPSBwYW5lbElkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleCwgdWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcblxuICAgICAgdWlTdGF0ZUFjdGlvbnMudG9nZ2xlTWFwQ29udHJvbChwYW5lbElkLCBpbmRleCk7XG4gICAgfTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICBfcmVuZGVyTWFwKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIG1hcFN0YXRlQWN0aW9ucyxcbiAgICAgICAgc2tldGNoVmFsdWUsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgTWFwQ29tcG9uZW50LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFwQ29udHJvbHMsXG4gICAgICAgIGlzRXhwb3J0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcmltYXJ5XG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgbGF5ZXJzVG9SZW5kZXIgPSB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllcnNGb3JEZWNrID0gdGhpcy5sYXllcnNGb3JEZWNrU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdHJhbnNmb3JtUmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNFZGl0ID0gKG1hcENvbnRyb2xzLm1hcERyYXcgfHwge30pLmFjdGl2ZTtcblxuICAgICAgY29uc3QgaGFzR2VvY29kZXJMYXllciA9IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gR0VPQ09ERVJfTEFZRVJfSUQpO1xuICAgICAgY29uc3QgaXNTcGxpdCA9IEJvb2xlYW4obWFwU3RhdGUuaXNTcGxpdCk7XG4gICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0gdGhpcy5fbW91c2VQb3NpdGlvbjtcblxuICAgICAgY29uc3QgbmVlZHNCYXNlbWFwID0gbWFwU3R5bGUuYm90dG9tTWFwU3R5bGUudHlwZSAhPT0gJ2dtYXBzXzNkJztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TWFwQ29udHJvbFxuICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcz17T2JqZWN0LmtleXMoTE9DQUxFX0NPREVTKX1cbiAgICAgICAgICAgIGRyYWdSb3RhdGU9e21hcFN0YXRlLmRyYWdSb3RhdGV9XG4gICAgICAgICAgICBpc1NwbGl0PXtpc1NwbGl0fVxuICAgICAgICAgICAgcHJpbWFyeT17cHJpbWFyeX1cbiAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgbWFwSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgbWFwQ29udHJvbHM9e21hcENvbnRyb2xzfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9XG4gICAgICAgICAgICBzY2FsZT17bWFwU3RhdGUuc2NhbGUgfHwgMX1cbiAgICAgICAgICAgIHRvcD17aW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIgJiYgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCA/IDUyIDogMH1cbiAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICBvblRvZ2dsZVBlcnNwZWN0aXZlPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlUGVyc3BlY3RpdmV9XG4gICAgICAgICAgICBvblRvZ2dsZVNwbGl0TWFwPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlU3BsaXRNYXB9XG4gICAgICAgICAgICBvbk1hcFRvZ2dsZUxheWVyPXt0aGlzLl9oYW5kbGVNYXBUb2dnbGVMYXllcn1cbiAgICAgICAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbD17dGhpcy5fdG9nZ2xlTWFwQ29udHJvbH1cbiAgICAgICAgICAgIG9uU2V0RWRpdG9yTW9kZT17dmlzU3RhdGVBY3Rpb25zLnNldEVkaXRvck1vZGV9XG4gICAgICAgICAgICBvblNldExvY2FsZT17dWlTdGF0ZUFjdGlvbnMuc2V0TG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5PXt2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlRWRpdG9yVmlzaWJpbGl0eX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtuZWVkc0Jhc2VtYXAgPyAoXG4gICAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICAgIHsuLi5tYXBQcm9wc31cbiAgICAgICAgICAgICAga2V5PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBib3hNYXB9XG4gICAgICAgICAgICAgIG1hcFN0eWxlPXttYXBTdHlsZS5ib3R0b21NYXBTdHlsZX1cbiAgICAgICAgICAgICAgc2tldGNoVmFsdWU9e3NrZXRjaFZhbHVlfVxuICAgICAgICAgICAgICBnZXRDdXJzb3I9e3RoaXMucHJvcHMuaG92ZXJJbmZvID8gKCkgPT4gJ3BvaW50ZXInIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICBvbk1vdXNlTW92ZT17ZXZ0ID0+IHtcbiAgICAgICAgICAgICAgICAvLyBTZW5kaW5nIG1vdXNlIG1vdmUgdXBkYXRlcyB2aWEgUmVkdXggaXMgZXhwZW5zaXZlLiBTdG9yZVxuICAgICAgICAgICAgICAgIC8vIGxvY2FsbHkgYW5kIHJlbHkgb24gZGVjay5nbCB0byBkcml2ZSByZW5kZXIgdXBkYXRlc1xuICAgICAgICAgICAgICAgIC8vIFNlZSBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jdXJyZW50ID0ge21vdXNlUG9zaXRpb246IGV2dC5wb2ludH07XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtQRVJGX0RFQlVHICYmIHJlbmRlclBlcmZvcm1hbmNlU3RhdHMoKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwYm94T3ZlcmxheXMoKX1cbiAgICAgICAgICAgICAgPEVkaXRvclxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgZmlsdGVycz17dGhpcy5wb2x5Z29uRmlsdGVycyh0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgICBpc0VuYWJsZWQ9e2lzRWRpdH1cbiAgICAgICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgICAgICBsYXllcnNUb1JlbmRlcj17bGF5ZXJzVG9SZW5kZXJ9XG4gICAgICAgICAgICAgICAgb25EZWxldGVGZWF0dXJlPXt2aXNTdGF0ZUFjdGlvbnMuZGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZT17dmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICAgIG9uVG9nZ2xlUG9seWdvbkZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLnNldFBvbHlnb25GaWx0ZXJMYXllcn1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogaXNFZGl0ID8gJ2FsbCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGVkaXRvci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge1BFUkZfREVCVUcgJiYgcmVuZGVyUGVyZm9ybWFuY2VTdGF0cygpfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjayl9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHttYXBTdHlsZS50b3BNYXBTdHlsZSB8fCBoYXNHZW9jb2RlckxheWVyID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17TUFQX1NUWUxFLnRvcH0+XG4gICAgICAgICAgICAgIDxNYXBDb21wb25lbnQgey4uLm1hcFByb3BzfSBrZXk9XCJ0b3BcIiBtYXBTdHlsZT17bWFwU3R5bGUudG9wTWFwU3R5bGV9PlxuICAgICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheSh7W0dFT0NPREVSX0xBWUVSX0lEXTogdHJ1ZX0pfVxuICAgICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKX1cbiAgICAgICAgICB7IWlzU3BsaXQgfHwgaW5kZXggPT09IDEgPyA8QXR0cmlidXRpb24gLz4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge21hcFN0YXRlLCBtYXBTdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTWFwQ29udGFpbmVyIHJlZj17dGhpcy5fcmVmfSBzdHlsZT17TUFQX1NUWUxFLmNvbnRhaW5lcn0gZ2xvYmU9e21hcFN0YXRlLmdsb2JlfT5cbiAgICAgICAgICB7bWFwU3R5bGUuYm90dG9tTWFwU3R5bGUgJiYgdGhpcy5fcmVuZGVyTWFwKCl9XG4gICAgICAgIDwvU3R5bGVkTWFwQ29udGFpbmVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBNYXBDb250YWluZXIuZGlzcGxheU5hbWUgPSAnTWFwQ29udGFpbmVyJztcblxuICByZXR1cm4gTWFwQ29udGFpbmVyO1xufVxuIl19
|
|
@@ -134,7 +134,7 @@ var KEPLER_GL_NAME = 'kepler.gl'; // __PACKAGE_VERSION__ is automatically inject
|
|
|
134
134
|
// an empty string which will allow us to retrieve the latest umd version
|
|
135
135
|
|
|
136
136
|
exports.KEPLER_GL_NAME = KEPLER_GL_NAME;
|
|
137
|
-
var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.
|
|
137
|
+
var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.9";
|
|
138
138
|
exports.KEPLER_GL_VERSION = KEPLER_GL_VERSION;
|
|
139
139
|
var KEPLER_GL_WEBSITE = 'http://kepler.gl/';
|
|
140
140
|
exports.KEPLER_GL_WEBSITE = KEPLER_GL_WEBSITE;
|
|
@@ -108,7 +108,7 @@ var mapStyleUpdaters = null;
|
|
|
108
108
|
* @memberof mapStyleUpdaters
|
|
109
109
|
* @constant
|
|
110
110
|
* @property styleType - Default: `'dark'`
|
|
111
|
-
* @property sketchValue - Default: {inkStrength: 0.2; hue: 0; hueSaturation: 0.3};
|
|
111
|
+
* @property sketchValue - Default: {inkStrength: 0.2; hue: 0; hueSaturation: 0.3; dotScreen: false};
|
|
112
112
|
* @property visibleLayerGroups - Default: `{}`
|
|
113
113
|
* @property topLayerGroups - Default: `{}`
|
|
114
114
|
* @property mapStyles - mapping from style key to style object
|
|
@@ -555,4 +555,4 @@ function getInitialInputStyle() {
|
|
|
555
555
|
custom: true
|
|
556
556
|
};
|
|
557
557
|
}
|
|
558
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9tYXAtc3R5bGUtdXBkYXRlcnMuanMiXSwibmFtZXMiOlsiREVGQVVMVF9CTERHX0NPTE9SIiwiZ2V0RGVmYXVsdFN0YXRlIiwidmlzaWJsZUxheWVyR3JvdXBzIiwic3R5bGVUeXBlIiwidG9wTGF5ZXJHcm91cHMiLCJtYXBTdHlsZXMiLCJERUZBVUxUX01BUF9TVFlMRVMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImlkIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbnB1dFN0eWxlIiwiZ2V0SW5pdGlhbElucHV0U3R5bGUiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwiY3VzdG9tM0RCdWlsZGluZ0NvbG9yIiwibWFwU3R5bGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUWUxFIiwiZ2V0TWFwU3R5bGVzIiwic2tldGNoVmFsdWUiLCJtYXBTdHlsZSIsInN0eWxlIiwiZWRpdGFibGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYm90dG9tTWFwU3R5bGUiLCJoYXNUb3BMYXllciIsInZhbHVlcyIsInNvbWUiLCJ2IiwidG9wTGF5ZXJzIiwia2V5IiwidG9wTWFwU3R5bGUiLCJmaW5kTGF5ZXJGaWxsQ29sb3IiLCJsYXllciIsInBhaW50IiwiZ2V0M0RCdWlsZGluZ0NvbG9yIiwiYmFja2dyb3VuZExheWVyIiwibGF5ZXJzIiwiZmluZCIsImJ1aWxkaW5nTGF5ZXIiLCJtYXRjaCIsImJ1aWxkaW5nQ29sb3IiLCJvcGVyYXRpb24iLCJhbHBoYSIsInJnYk9iaiIsInIiLCJnIiwiYiIsImdldExheWVyR3JvdXBzRnJvbVN0eWxlIiwiQXJyYXkiLCJpc0FycmF5IiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJmaWx0ZXIiLCJsZyIsImluaXRNYXBTdHlsZVVwZGF0ZXIiLCJzdGF0ZSIsInBheWxvYWQiLCJtYXBDb25maWdDaGFuZ2VVcGRhdGVyIiwiYWN0aW9uIiwic2V0VGlsZXMzZFNrZXRjaFZhbHVlVXBkYXRlciIsIm5ld1N0YXRlIiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiZGVmYXVsdExHVmlzaWJpbGl0eSIsImxvYWRNYXBTdHlsZXNVcGRhdGVyIiwibmV3U3R5bGVzIiwiYWRkTGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsImxvYWRNYXBTdHlsZUVyclVwZGF0ZXIiLCJyZXF1ZXN0TWFwU3R5bGVzVXBkYXRlciIsImxvYWRNYXBTdHlsZVRhc2tzIiwiZ2V0TG9hZE1hcFN0eWxlVGFza3MiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsImNvbmZpZyIsIm1lcmdlZCIsIkJvb2xlYW4iLCJUYXNrIiwiYWxsIiwibWFwIiwidXJsIiwiYWNjZXNzVG9rZW4iLCJMT0FEX01BUF9TVFlMRV9UQVNLIiwiYmltYXAiLCJyZXN1bHRzIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJpY29uIiwiZXJyb3IiLCJsYWJlbCIsIm5hbWUiLCJ1bmRlZmluZWQiLCJpbnB1dE1hcFN0eWxlVXBkYXRlciIsIm1hcFN0YXRlIiwidXBkYXRlZCIsImlzVmFsaWQiLCJzdHlsZVVybCIsImFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsInN0eWxlSWQiLCJzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyIiwiY29sb3IiLCJjdXN0b20iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFHQTs7QUFTQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsa0JBQWtCLEdBQUcsU0FBM0I7QUFFQTtBQUNBO0FBQ0E7O0FBQ0EsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixHQUFNO0FBQzVCLE1BQU1DLGtCQUFrQixH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RUFBVztBQUFDSixJQUFBQSxPQUFPLEVBQUUyQztBQUFWLEdBQVgsQ0FBNUI7QUFDRCxDQWJNO0FBZVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNQyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQTRCLENBQUM3QyxLQUFEO0FBQUEsTUFBa0I4QyxLQUFsQixVQUFTN0MsT0FBVDtBQUFBLHlDQUNwQ0QsS0FEb0M7QUFFdkMzQyxJQUFBQSxtQkFBbUIsRUFBRXlGLEtBRmtCO0FBR3ZDeEYsSUFBQUEscUJBQXFCLEVBQUU7QUFIZ0I7QUFBQSxDQUFsQztBQU1QO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLFNBQVNGLG9CQUFULEdBQWdDO0FBQ3JDLFNBQU87QUFDTG9FLElBQUFBLFdBQVcsRUFBRSxJQURSO0FBRUxVLElBQUFBLEtBQUssRUFBRSxLQUZGO0FBR0xPLElBQUFBLE9BQU8sRUFBRSxLQUhKO0FBSUxOLElBQUFBLEtBQUssRUFBRSxJQUpGO0FBS0x2RSxJQUFBQSxLQUFLLEVBQUUsSUFMRjtBQU1MMkQsSUFBQUEsR0FBRyxFQUFFLElBTkE7QUFPTFUsSUFBQUEsSUFBSSxFQUFFLElBUEQ7QUFRTGMsSUFBQUEsTUFBTSxFQUFFO0FBUkgsR0FBUDtBQVVEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCBUYXNrLCB7d2l0aFRhc2t9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2guY2xvbmVkZWVwJztcblxuLy8gVXRpbHNcbmltcG9ydCB7XG4gIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgaXNWYWxpZFN0eWxlVXJsLFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBlZGl0VG9wTWFwU3R5bGUsXG4gIGVkaXRCb3R0b21NYXBTdHlsZSxcbiAgZ2V0U3R5bGVJbWFnZUljb25cbn0gZnJvbSAndXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3InO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9NQVBfU1RZTEVTLFxuICBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge0xPQURfTUFQX1NUWUxFX1RBU0t9IGZyb20gJ3Rhc2tzL3Rhc2tzJztcbmltcG9ydCB7bG9hZE1hcFN0eWxlcywgbG9hZE1hcFN0eWxlRXJyfSBmcm9tICdhY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zJztcbmltcG9ydCB7cmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge2hleFRvUmdifSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5cbmNvbnN0IERFRkFVTFRfQkxER19DT0xPUiA9ICcjRDFDRUM3JztcblxuLyoqXG4gKiBAcmV0dXJuIHtpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuTWFwU3R5bGV9XG4gKi9cbmNvbnN0IGdldERlZmF1bHRTdGF0ZSA9ICgpID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHN0eWxlVHlwZSA9ICdkYXJrJztcbiAgY29uc3QgdG9wTGF5ZXJHcm91cHMgPSB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlVHlwZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgdG9wTGF5ZXJHcm91cHMsXG4gICAgbWFwU3R5bGVzOiBERUZBVUxUX01BUF9TVFlMRVMucmVkdWNlKFxuICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtjdXJyLmlkXTogY3VyclxuICAgICAgfSksXG4gICAgICB7fVxuICAgICksXG4gICAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG51bGwsXG4gICAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUiksXG4gICAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBmYWxzZVxuICB9O1xufTtcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0eWxlYC4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHttYXBTdHlsZVVwZGF0ZXJzfSBmcm9tICdrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGhpZGUgbGFiZWwgZnJvbSBiYWNrZ3JvdW5kIG1hcFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0eWxlOiBtYXBTdHlsZVVwZGF0ZXJzLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0eWxlLFxuICogICAgICAgICAgICAgICB7cGF5bG9hZDoge3Zpc2libGVMYXllckdyb3Vwczoge2xhYmVsOiBmYWxzZSwgcm9hZDogdHJ1ZSwgYmFja2dyb3VuZDogdHJ1ZX19fVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5jb25zdCBtYXBTdHlsZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdHlsZWBcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzdHlsZVR5cGUgLSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IHNrZXRjaFZhbHVlIC0gRGVmYXVsdDoge2lua1N0cmVuZ3RoOiAwLjI7IGh1ZTogMDsgaHVlU2F0dXJhdGlvbjogMC4zfTtcbiAqIEBwcm9wZXJ0eSB2aXNpYmxlTGF5ZXJHcm91cHMgLSBEZWZhdWx0OiBge31gXG4gKiBAcHJvcGVydHkgdG9wTGF5ZXJHcm91cHMgLSBEZWZhdWx0OiBge31gXG4gKiBAcHJvcGVydHkgbWFwU3R5bGVzIC0gbWFwcGluZyBmcm9tIHN0eWxlIGtleSB0byBzdHlsZSBvYmplY3RcbiAqIEBwcm9wZXJ0eSBtYXBib3hBcGlBY2Nlc3NUb2tlbiAtIERlZmF1bHQ6IGBudWxsYFxuICogQFByb3BlcnR5IG1hcGJveEFwaVVybCAtIERlZmF1bHQgbnVsbFxuICogQFByb3BlcnR5IG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IC0gRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGlucHV0U3R5bGUgLSBEZWZhdWx0OiBge31gXG4gKiBAcHJvcGVydHkgdGhyZWVEQnVpbGRpbmdDb2xvciAtIERlZmF1bHQ6IGBbciwgZywgYl1gXG4gKiBAdHlwZSB7aW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLk1hcFN0eWxlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RZTEUgPSBnZXREZWZhdWx0U3RhdGUoKTtcblxuLyoqXG4gKiBDcmVhdGUgdHdvIG1hcCBzdHlsZXMgZnJvbSBwcmVzZXQgbWFwIHN0eWxlLCBvbmUgZm9yIHRvcCBtYXAgb25lIGZvciBib3R0b21cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVUeXBlIC0gY3VycmVudCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiBib3R0b20gbWFwXG4gKiBAcGFyYW0ge09iamVjdH0gdG9wTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiB0b3AgbWFwXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwU3R5bGVzIC0gYSBkaWN0aW9uYXJ5IG9mIGFsbCBtYXAgc3R5bGVzXG4gKiBAcGFyYW0ge09iamVjdH0gc2tldGNoVmFsdWUgLSBjdXJyZW50IHNrZXRjaCB2YWx1ZVxuICogQHJldHVybnMge09iamVjdH0gYm90dG9tTWFwU3R5bGUgfCB0b3BNYXBTdHlsZSB8IGlzUmFzdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXBTdHlsZXMoe1xuICBzdHlsZVR5cGUsXG4gIHZpc2libGVMYXllckdyb3VwcyxcbiAgdG9wTGF5ZXJHcm91cHMsXG4gIG1hcFN0eWxlcyxcbiAgc2tldGNoVmFsdWVcbn0pIHtcbiAgY29uc3QgbWFwU3R5bGUgPSBtYXBTdHlsZXNbc3R5bGVUeXBlXTtcblxuICAvLyBzdHlsZSBtaWdodCBub3QgYmUgbG9hZGVkIHlldFxuICBpZiAoIW1hcFN0eWxlIHx8ICFtYXBTdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGVkaXRhYmxlID0gT2JqZWN0LmtleXModmlzaWJsZUxheWVyR3JvdXBzKS5sZW5ndGg7XG5cbiAgY29uc3QgYm90dG9tTWFwU3R5bGUgPSAhZWRpdGFibGVcbiAgICA/IG1hcFN0eWxlLnN0eWxlXG4gICAgOiBlZGl0Qm90dG9tTWFwU3R5bGUoe1xuICAgICAgICBpZDogc3R5bGVUeXBlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgICAgICBza2V0Y2hWYWx1ZVxuICAgICAgfSk7XG5cbiAgY29uc3QgaGFzVG9wTGF5ZXIgPSBlZGl0YWJsZSAmJiBPYmplY3QudmFsdWVzKHRvcExheWVyR3JvdXBzKS5zb21lKHYgPT4gdik7XG5cbiAgLy8gbXV0ZSB0b3AgbGF5ZXIgaWYgbm90IHZpc2libGUgaW4gYm90dG9tIGxheWVyXG4gIGNvbnN0IHRvcExheWVycyA9XG4gICAgaGFzVG9wTGF5ZXIgJiZcbiAgICBPYmplY3Qua2V5cyh0b3BMYXllckdyb3VwcykucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IHRvcExheWVyR3JvdXBzW2tleV0gJiYgdmlzaWJsZUxheWVyR3JvdXBzW2tleV1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gIGNvbnN0IHRvcE1hcFN0eWxlID0gaGFzVG9wTGF5ZXJcbiAgICA/IGVkaXRUb3BNYXBTdHlsZSh7XG4gICAgICAgIGlkOiBzdHlsZVR5cGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICB2aXNpYmxlTGF5ZXJHcm91cHM6IHRvcExheWVyc1xuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcmV0dXJuIHtib3R0b21NYXBTdHlsZSwgdG9wTWFwU3R5bGUsIGVkaXRhYmxlfTtcbn1cblxuZnVuY3Rpb24gZmluZExheWVyRmlsbENvbG9yKGxheWVyKSB7XG4gIHJldHVybiBsYXllciAmJiBsYXllci5wYWludCAmJiBsYXllci5wYWludFsnYmFja2dyb3VuZC1jb2xvciddO1xufVxuXG5mdW5jdGlvbiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3R5bGUpIHtcbiAgLy8gc2V0IGJ1aWxkaW5nIGNvbG9yIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUik7XG4gIH1cblxuICBjb25zdCBiYWNrZ3JvdW5kTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZCA9PT0gJ2JhY2tncm91bmQnKTtcblxuICBjb25zdCBidWlsZGluZ0xheWVyID0gKHN0eWxlLnN0eWxlLmxheWVycyB8fCBbXSkuZmluZCgoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLykpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nQ29sb3IgPVxuICAgIGZpbmRMYXllckZpbGxDb2xvcihidWlsZGluZ0xheWVyKSB8fCBmaW5kTGF5ZXJGaWxsQ29sb3IoYmFja2dyb3VuZExheWVyKSB8fCBERUZBVUxUX0JMREdfQ09MT1I7XG5cbiAgLy8gYnJpZ2h0ZW4gb3IgZGFya2VuIGJ1aWxkaW5nIGJhc2VkIG9uIHN0eWxlXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHN0eWxlLmlkLm1hdGNoKC8oPz0oZGFya3xuaWdodCkpLykgPyAnYnJpZ2h0ZXInIDogJ2Rhcmtlcic7XG5cbiAgY29uc3QgYWxwaGEgPSAwLjI7XG4gIGNvbnN0IHJnYk9iaiA9IHJnYihidWlsZGluZ0NvbG9yKVtvcGVyYXRpb25dKFthbHBoYV0pO1xuICByZXR1cm4gW3JnYk9iai5yLCByZ2JPYmouZywgcmdiT2JqLmJdO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdHlsZS5sYXllcnMpXG4gICAgPyBERUZBVUxUX0xBWUVSX0dST1VQUy5maWx0ZXIobGcgPT4gc3R5bGUubGF5ZXJzLmZpbHRlcihsZy5maWx0ZXIpLmxlbmd0aClcbiAgICA6IFtdO1xufVxuXG4vLyBVcGRhdGVyc1xuLyoqXG4gKiBQcm9wYWdhdGUgYG1hcFN0eWxlYCByZWR1Y2VyIHdpdGggYG1hcGJveEFwaUFjY2Vzc1Rva2VuYCBhbmQgYG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0YC5cbiAqIGlmIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IGlzIHRydWUgbWFwU3R5bGVzIGlzIGVtcHRpZWQ7IGxvYWRNYXBTdHlsZXNVcGRhdGVyKCkgd2lsbFxuICogcG9wdWxhdGUgbWFwU3R5bGVzLlxuICpcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5pbml0TWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5pdE1hcFN0eWxlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQgPSB7fX0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBzYXZlIG1hcGJveCBhY2Nlc3MgdG9rZW4gdG8gbWFwIHN0eWxlIHN0YXRlXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwYXlsb2FkLm1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8IHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHBheWxvYWQubWFwYm94QXBpVXJsIHx8IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgbWFwU3R5bGVzOiAhcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCA/IHN0YXRlLm1hcFN0eWxlcyA6IHt9LFxuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB8fCBmYWxzZVxufSk7XG4vLyB9KTtcblxuLyoqXG4gKiBVcGRhdGUgYHZpc2libGVMYXllckdyb3Vwc2B0byBjaGFuZ2UgbGF5ZXIgZ3JvdXAgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBDb25maWdDaGFuZ2VVcGRhdGVyID0gKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5hY3Rpb24ucGF5bG9hZCxcbiAgLi4uZ2V0TWFwU3R5bGVzKHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5hY3Rpb24ucGF5bG9hZFxuICB9KVxufSk7XG5cbi8qKlxuICogVXBkYXRlcyBUaWxlcyAzRCBTa2V0Y2ggdmFsdWVcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5zZXRUaWxlczNkU2tldGNoVmFsdWVVcGRhdGVyfVxuICovXG5leHBvcnQgY29uc3Qgc2V0VGlsZXMzZFNrZXRjaFZhbHVlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHNrZXRjaFZhbHVlfSkgPT4ge1xuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBza2V0Y2hWYWx1ZVxuICB9O1xuICByZXR1cm4ge1xuICAgIC4uLm5ld1N0YXRlLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNrZXRjaFZhbHVlXG4gICAgfSlcbiAgfTtcbn07XG5cbi8qKlxuICogQ2hhbmdlIHRvIGFub3RoZXIgbWFwIHN0eWxlLiBUaGUgc2VsZWN0ZWQgc3R5bGUgc2hvdWxkIGFscmVhZHkgYmVlbiBsb2FkZWQgaW50byBgbWFwU3R5bGUubWFwU3R5bGVzYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLm1hcFN0eWxlQ2hhbmdlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHN0eWxlVHlwZSwgc2tldGNoVmFsdWV9KSA9PiB7XG4gIGlmICghc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pIHtcbiAgICAvLyB3ZSBtaWdodCBub3QgaGF2ZSByZWNlaXZlZCB0aGUgc3R5bGUgeWV0XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IGRlZmF1bHRMR1Zpc2liaWxpdHkgPSBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkoc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIGNvbnN0IHZpc2libGVMYXllckdyb3VwcyA9IG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkoXG4gICAgZGVmYXVsdExHVmlzaWJpbGl0eSxcbiAgICBzdGF0ZS52aXNpYmxlTGF5ZXJHcm91cHNcbiAgKTtcblxuICBjb25zdCB0aHJlZURCdWlsZGluZ0NvbG9yID0gc3RhdGUuY3VzdG9tM0RCdWlsZGluZ0NvbG9yXG4gICAgPyBzdGF0ZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgOiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3R5bGVUeXBlLFxuICAgIHNrZXRjaFZhbHVlLFxuICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICB0aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICAgIHN0eWxlVHlwZSxcbiAgICAgIHNrZXRjaFZhbHVlXG4gICAgfSlcbiAgfTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBzdWNjZXNzXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubG9hZE1hcFN0eWxlc1VwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVzVXBkYXRlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gIGNvbnN0IG5ld1N0eWxlcyA9IGFjdGlvbi5wYXlsb2FkIHx8IHt9O1xuICBjb25zdCBhZGRMYXllckdyb3VwcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykucmVkdWNlKFxuICAgIChhY2N1LCBpZCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbaWRdOiB7XG4gICAgICAgIC4uLm5ld1N0eWxlc1tpZF0sXG4gICAgICAgIGxheWVyR3JvdXBzOiBuZXdTdHlsZXNbaWRdLmxheWVyR3JvdXBzIHx8IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKG5ld1N0eWxlc1tpZF0uc3R5bGUpXG4gICAgICB9XG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICAvLyBhZGQgbmV3IHN0eWxlcyB0byBzdGF0ZVxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcFN0eWxlcyxcbiAgICAgIC4uLmFkZExheWVyR3JvdXBzXG4gICAgfVxuICB9O1xuICByZXR1cm4gbmV3U3R5bGVzW3N0YXRlLnN0eWxlVHlwZV1cbiAgICA/IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHN0YXRlLnN0eWxlVHlwZX0pXG4gICAgOiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBlcnJvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmxvYWRNYXBTdHlsZUVyclVwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbi8vIGRvIG5vdGhpbmcgZm9yIG5vdywgaWYgZGlkbid0IGxvYWQsIHNraXAgaXRcbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVFcnJVcGRhdGVyID0gc3RhdGUgPT4gc3RhdGU7XG5cbi8qKlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLnJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiBtYXBTdHlsZXN9KSA9PiB7XG4gIGNvbnN0IGxvYWRNYXBTdHlsZVRhc2tzID0gZ2V0TG9hZE1hcFN0eWxlVGFza3MoXG4gICAgbWFwU3R5bGVzLFxuICAgIHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIHN0YXRlLm1hcGJveEFwaVVybFxuICApO1xuICByZXR1cm4gd2l0aFRhc2soc3RhdGUsIGxvYWRNYXBTdHlsZVRhc2tzKTtcbn07XG5cbi8qKlxuICogTG9hZCBtYXAgc3R5bGUgb2JqZWN0IHdoZW4gcGFzcyBpbiBzYXZlZCBtYXAgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGBtYXBTdHlsZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBzYXZlZCBtYXAgY29uZmlnIGB7bWFwU3R5bGUsIHZpc1N0YXRlLCBtYXBTdGF0ZX1gXG4gKiBAcmV0dXJucyBuZXh0U3RhdGUgb3IgYHJlYWN0LXBhbWAgdGFza3MgdG8gbG9hZCBtYXAgc3R5bGUgb2JqZWN0XG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5yZWNlaXZlTWFwQ29uZmlnVXBkYXRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDoge2NvbmZpZyA9IHt9fX0pID0+IHtcbiAgY29uc3Qge21hcFN0eWxlfSA9IGNvbmZpZyB8fCB7fTtcblxuICBpZiAoIW1hcFN0eWxlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gaWYgc2F2ZWQgY3VzdG9tIG1hcFN0eWxlcyBsb2FkIHRoZSBzdHlsZSBvYmplY3RcbiAgY29uc3QgbG9hZE1hcFN0eWxlVGFza3MgPSBtYXBTdHlsZS5tYXBTdHlsZXNcbiAgICA/IGdldExvYWRNYXBTdHlsZVRhc2tzKG1hcFN0eWxlLm1hcFN0eWxlcywgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sIHN0YXRlLm1hcGJveEFwaVVybClcbiAgICA6IG51bGw7XG5cbiAgLy8gbWVyZ2UgZGVmYXVsdCBtYXBTdHlsZXNcbiAgY29uc3QgbWVyZ2VkID0gbWFwU3R5bGUubWFwU3R5bGVzXG4gICAgPyB7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAuLi5tYXBTdHlsZS5tYXBTdHlsZXMsXG4gICAgICAgICAgLi4uc3RhdGUubWFwU3R5bGVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA6IG1hcFN0eWxlO1xuXG4gIC8vIHNldCBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IHRydWUgaWYgbWFwU3R5bGUgY29udGFpbnMgdGhyZWVEQnVpbGRpbmdDb2xvclxuICBtZXJnZWQuY3VzdG9tM0RCdWlsZGluZ0NvbG9yID1cbiAgICBCb29sZWFuKG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IpIHx8IG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3I7XG4gIGNvbnN0IG5ld1N0YXRlID0gbWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IG1lcmdlZH0pO1xuXG4gIHJldHVybiBsb2FkTWFwU3R5bGVUYXNrcyA/IHdpdGhUYXNrKG5ld1N0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcykgOiBuZXdTdGF0ZTtcbn07XG5cbmZ1bmN0aW9uIGdldExvYWRNYXBTdHlsZVRhc2tzKG1hcFN0eWxlcywgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCkge1xuICByZXR1cm4gW1xuICAgIFRhc2suYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhtYXBTdHlsZXMpXG4gICAgICAgIC5tYXAoKHtpZCwgdXJsLCBhY2Nlc3NUb2tlbn0pID0+ICh7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgdXJsOiBpc1ZhbGlkU3R5bGVVcmwodXJsKVxuICAgICAgICAgICAgPyBnZXRTdHlsZURvd25sb2FkVXJsKHVybCwgYWNjZXNzVG9rZW4gfHwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybClcbiAgICAgICAgICAgIDogdXJsXG4gICAgICAgIH0pKVxuICAgICAgICAubWFwKExPQURfTUFQX1NUWUxFX1RBU0spXG4gICAgKS5iaW1hcChcbiAgICAgIC8vIHN1Y2Nlc3NcbiAgICAgIHJlc3VsdHMgPT5cbiAgICAgICAgbG9hZE1hcFN0eWxlcyhcbiAgICAgICAgICByZXN1bHRzLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCB7aWQsIHN0eWxlfSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgICAgW2lkXToge1xuICAgICAgICAgICAgICAgIC4uLm1hcFN0eWxlc1tpZF0sXG4gICAgICAgICAgICAgICAgc3R5bGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIC8vIGVycm9yXG4gICAgICBsb2FkTWFwU3R5bGVFcnJcbiAgICApXG4gIF07XG59XG4vKipcbiAqIFJlc2V0IG1hcCBzdHlsZSBjb25maWcgdG8gaW5pdGlhbCBzdGF0ZVxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgbWFwU3R5bGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLnJlc2V0TWFwQ29uZmlnTWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIgPSBzdGF0ZSA9PiB7XG4gIGNvbnN0IGVtcHR5Q29uZmlnID0ge1xuICAgIC4uLklOSVRJQUxfTUFQX1NUWUxFLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmw6IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogc3RhdGUubWFwU3R5bGVzUmVwbGFjZURlZmF1bHQsXG4gICAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICAgIG1hcFN0eWxlczogc3RhdGUubWFwU3R5bGVzLFxuICAgIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG4gIH07XG5cbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihlbXB0eUNvbmZpZywge3BheWxvYWQ6IGVtcHR5Q29uZmlnLnN0eWxlVHlwZX0pO1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3QgaXMgcmVjZWl2ZWRcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5sb2FkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHtpY29uLCBzdHlsZSwgZXJyb3J9fSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlucHV0U3R5bGU6IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC8vIHN0eWxlIGpzb24gYW5kIGljb24gd2lsbCBsb2FkIGFzeW5jaHJvbm91c2x5XG4gICAgLi4uKHN0eWxlXG4gICAgICA/IHtcbiAgICAgICAgICBpZDogc3R5bGUuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKSxcbiAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgc3R5bGUgb2JqZWN0XG4gICAgICAgICAgc3R5bGU6IGNsb25lRGVlcChzdHlsZSksXG4gICAgICAgICAgbGFiZWw6IHN0eWxlLm5hbWUsXG4gICAgICAgICAgLy8gZ2F0aGVyaW5nIGxheWVyIGdyb3VwIGluZm8gZnJvbSBzdHlsZSBqc29uXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKVxuICAgICAgICB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4oaWNvbiA/IHtpY29ufSA6IHt9KSxcbiAgICAuLi4oZXJyb3IgIT09IHVuZGVmaW5lZCA/IHtlcnJvcn0gOiB7fSlcbiAgfVxufSk7XG5cbi8qKlxuICogSW5wdXQgYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmlucHV0TWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5wdXRNYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiB7aW5wdXRTdHlsZSwgbWFwU3RhdGV9fSkgPT4ge1xuICBjb25zdCB1cGRhdGVkID0ge1xuICAgIC4uLnN0YXRlLmlucHV0U3R5bGUsXG4gICAgLi4uaW5wdXRTdHlsZVxuICB9O1xuXG4gIGNvbnN0IGlzVmFsaWQgPSBpc1ZhbGlkU3R5bGVVcmwodXBkYXRlZC51cmwpO1xuICBjb25zdCBpY29uID0gaXNWYWxpZFxuICAgID8gZ2V0U3R5bGVJbWFnZUljb24oe1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgc3R5bGVVcmw6IHVwZGF0ZWQudXJsLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogdXBkYXRlZC5hY2Nlc3NUb2tlbiB8fCBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwgfHwgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuICAgICAgfSlcbiAgICA6IHN0YXRlLmlucHV0U3R5bGUuaWNvbjtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlucHV0U3R5bGU6IHtcbiAgICAgIC4uLnVwZGF0ZWQsXG4gICAgICBpc1ZhbGlkLFxuICAgICAgaWNvblxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIG1hcCBzdHlsZSBmcm9tIHVzZXIgaW5wdXQgdG8gcmVkdWNlciBhbmQgc2V0IGl0IHRvIGN1cnJlbnQgc3R5bGVcbiAqIFRoaXMgYWN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgY2xpY2sgY29uZmlybSBhZnRlciBwdXR0aW5nIGluIGEgdmFsaWQgc3R5bGUgdXJsIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IHN0YXRlID0+IHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0YXRlLmlucHV0U3R5bGUuaWQ7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgW3N0eWxlSWRdOiBzdGF0ZS5pbnB1dFN0eWxlXG4gICAgfSxcbiAgICAvLyBzZXQgdG8gZGVmYXVsdFxuICAgIGlucHV0U3R5bGU6IGdldEluaXRpYWxJbnB1dFN0eWxlKClcbiAgfTtcbiAgLy8gc2V0IG5ldyBzdHlsZVxuICByZXR1cm4gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDogc3R5bGVJZH0pO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIDNkIGJ1aWxkaW5nIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuc2V0M2RCdWlsZGluZ0NvbG9yVXBkYXRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IHNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiBjb2xvcn0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aHJlZURCdWlsZGluZ0NvbG9yOiBjb2xvcixcbiAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiB0cnVlXG59KTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGluaXRpYWwgaW5wdXQgc3R5bGVcbiAqIEByZXR1cm4gT2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpIHtcbiAgcmV0dXJuIHtcbiAgICBhY2Nlc3NUb2tlbjogbnVsbCxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaXNWYWxpZDogZmFsc2UsXG4gICAgbGFiZWw6IG51bGwsXG4gICAgc3R5bGU6IG51bGwsXG4gICAgdXJsOiBudWxsLFxuICAgIGljb246IG51bGwsXG4gICAgY3VzdG9tOiB0cnVlXG4gIH07XG59XG4iXX0=
|
|
558
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9tYXAtc3R5bGUtdXBkYXRlcnMuanMiXSwibmFtZXMiOlsiREVGQVVMVF9CTERHX0NPTE9SIiwiZ2V0RGVmYXVsdFN0YXRlIiwidmlzaWJsZUxheWVyR3JvdXBzIiwic3R5bGVUeXBlIiwidG9wTGF5ZXJHcm91cHMiLCJtYXBTdHlsZXMiLCJERUZBVUxUX01BUF9TVFlMRVMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImlkIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbnB1dFN0eWxlIiwiZ2V0SW5pdGlhbElucHV0U3R5bGUiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwiY3VzdG9tM0RCdWlsZGluZ0NvbG9yIiwibWFwU3R5bGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUWUxFIiwiZ2V0TWFwU3R5bGVzIiwic2tldGNoVmFsdWUiLCJtYXBTdHlsZSIsInN0eWxlIiwiZWRpdGFibGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYm90dG9tTWFwU3R5bGUiLCJoYXNUb3BMYXllciIsInZhbHVlcyIsInNvbWUiLCJ2IiwidG9wTGF5ZXJzIiwia2V5IiwidG9wTWFwU3R5bGUiLCJmaW5kTGF5ZXJGaWxsQ29sb3IiLCJsYXllciIsInBhaW50IiwiZ2V0M0RCdWlsZGluZ0NvbG9yIiwiYmFja2dyb3VuZExheWVyIiwibGF5ZXJzIiwiZmluZCIsImJ1aWxkaW5nTGF5ZXIiLCJtYXRjaCIsImJ1aWxkaW5nQ29sb3IiLCJvcGVyYXRpb24iLCJhbHBoYSIsInJnYk9iaiIsInIiLCJnIiwiYiIsImdldExheWVyR3JvdXBzRnJvbVN0eWxlIiwiQXJyYXkiLCJpc0FycmF5IiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJmaWx0ZXIiLCJsZyIsImluaXRNYXBTdHlsZVVwZGF0ZXIiLCJzdGF0ZSIsInBheWxvYWQiLCJtYXBDb25maWdDaGFuZ2VVcGRhdGVyIiwiYWN0aW9uIiwic2V0VGlsZXMzZFNrZXRjaFZhbHVlVXBkYXRlciIsIm5ld1N0YXRlIiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiZGVmYXVsdExHVmlzaWJpbGl0eSIsImxvYWRNYXBTdHlsZXNVcGRhdGVyIiwibmV3U3R5bGVzIiwiYWRkTGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsImxvYWRNYXBTdHlsZUVyclVwZGF0ZXIiLCJyZXF1ZXN0TWFwU3R5bGVzVXBkYXRlciIsImxvYWRNYXBTdHlsZVRhc2tzIiwiZ2V0TG9hZE1hcFN0eWxlVGFza3MiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsImNvbmZpZyIsIm1lcmdlZCIsIkJvb2xlYW4iLCJUYXNrIiwiYWxsIiwibWFwIiwidXJsIiwiYWNjZXNzVG9rZW4iLCJMT0FEX01BUF9TVFlMRV9UQVNLIiwiYmltYXAiLCJyZXN1bHRzIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJpY29uIiwiZXJyb3IiLCJsYWJlbCIsIm5hbWUiLCJ1bmRlZmluZWQiLCJpbnB1dE1hcFN0eWxlVXBkYXRlciIsIm1hcFN0YXRlIiwidXBkYXRlZCIsImlzVmFsaWQiLCJzdHlsZVVybCIsImFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlciIsInN0eWxlSWQiLCJzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyIiwiY29sb3IiLCJjdXN0b20iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFHQTs7QUFTQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsa0JBQWtCLEdBQUcsU0FBM0I7QUFFQTtBQUNBO0FBQ0E7O0FBQ0EsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixHQUFNO0FBQzVCLE1BQU1DLGtCQUFrQixHQUFHLEVBQTNCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLE1BQWxCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLEVBQXZCO0FBRUEsU0FBTztBQUNMRCxJQUFBQSxTQUFTLEVBQVRBLFNBREs7QUFFTEQsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFGSztBQUdMRSxJQUFBQSxjQUFjLEVBQWRBLGNBSEs7QUFJTEMsSUFBQUEsU0FBUyxFQUFFQyxvQ0FBbUJDLE1BQW5CLENBQ1QsVUFBQ0MsSUFBRCxFQUFPQyxJQUFQO0FBQUEsNkNBQ0tELElBREwsNENBRUdDLElBQUksQ0FBQ0MsRUFGUixFQUVhRCxJQUZiO0FBQUEsS0FEUyxFQUtULEVBTFMsQ0FKTjtBQVdMO0FBQ0FFLElBQUFBLG9CQUFvQixFQUFFLElBWmpCO0FBYUxDLElBQUFBLFlBQVksRUFBRUMsdUNBYlQ7QUFjTEMsSUFBQUEsdUJBQXVCLEVBQUUsS0FkcEI7QUFlTEMsSUFBQUEsVUFBVSxFQUFFQyxvQkFBb0IsRUFmM0I7QUFnQkxDLElBQUFBLG1CQUFtQixFQUFFLDBCQUFTakIsa0JBQVQsQ0FoQmhCO0FBaUJMa0IsSUFBQUEscUJBQXFCLEVBQUU7QUFqQmxCLEdBQVA7QUFtQkQsQ0F4QkQ7QUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOzs7QUFDQSxJQUFNQyxnQkFBZ0IsR0FBRyxJQUF6QjtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ08sSUFBTUMsaUJBQWlCLEdBQUduQixlQUFlLEVBQXpDO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFDTyxTQUFTb0IsWUFBVCxPQU1KO0FBQUEsTUFMRGxCLFNBS0MsUUFMREEsU0FLQztBQUFBLE1BSkRELGtCQUlDLFFBSkRBLGtCQUlDO0FBQUEsTUFIREUsY0FHQyxRQUhEQSxjQUdDO0FBQUEsTUFGREMsU0FFQyxRQUZEQSxTQUVDO0FBQUEsTUFERGlCLFdBQ0MsUUFEREEsV0FDQztBQUNELE1BQU1DLFFBQVEsR0FBR2xCLFNBQVMsQ0FBQ0YsU0FBRCxDQUExQixDQURDLENBR0Q7O0FBQ0EsTUFBSSxDQUFDb0IsUUFBRCxJQUFhLENBQUNBLFFBQVEsQ0FBQ0MsS0FBM0IsRUFBa0M7QUFDaEMsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsTUFBTUMsUUFBUSxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWXpCLGtCQUFaLEVBQWdDMEIsTUFBakQ7QUFFQSxNQUFNQyxjQUFjLEdBQUcsQ0FBQ0osUUFBRCxHQUNuQkYsUUFBUSxDQUFDQyxLQURVLEdBRW5CLDZDQUFtQjtBQUNqQmQsSUFBQUEsRUFBRSxFQUFFUCxTQURhO0FBRWpCb0IsSUFBQUEsUUFBUSxFQUFSQSxRQUZpQjtBQUdqQnJCLElBQUFBLGtCQUFrQixFQUFsQkEsa0JBSGlCO0FBSWpCb0IsSUFBQUEsV0FBVyxFQUFYQTtBQUppQixHQUFuQixDQUZKO0FBU0EsTUFBTVEsV0FBVyxHQUFHTCxRQUFRLElBQUlDLE1BQU0sQ0FBQ0ssTUFBUCxDQUFjM0IsY0FBZCxFQUE4QjRCLElBQTlCLENBQW1DLFVBQUFDLENBQUM7QUFBQSxXQUFJQSxDQUFKO0FBQUEsR0FBcEMsQ0FBaEMsQ0FuQkMsQ0FxQkQ7O0FBQ0EsTUFBTUMsU0FBUyxHQUNiSixXQUFXLElBQ1hKLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZdkIsY0FBWixFQUE0QkcsTUFBNUIsQ0FDRSxVQUFDQyxJQUFELEVBQU8yQixHQUFQO0FBQUEsMkNBQ0szQixJQURMLDRDQUVHMkIsR0FGSCxFQUVTL0IsY0FBYyxDQUFDK0IsR0FBRCxDQUFkLElBQXVCakMsa0JBQWtCLENBQUNpQyxHQUFELENBRmxEO0FBQUEsR0FERixFQUtFLEVBTEYsQ0FGRjtBQVVBLE1BQU1DLFdBQVcsR0FBR04sV0FBVyxHQUMzQiwwQ0FBZ0I7QUFDZHBCLElBQUFBLEVBQUUsRUFBRVAsU0FEVTtBQUVkb0IsSUFBQUEsUUFBUSxFQUFSQSxRQUZjO0FBR2RyQixJQUFBQSxrQkFBa0IsRUFBRWdDO0FBSE4sR0FBaEIsQ0FEMkIsR0FNM0IsSUFOSjtBQVFBLFNBQU87QUFBQ0wsSUFBQUEsY0FBYyxFQUFkQSxjQUFEO0FBQWlCTyxJQUFBQSxXQUFXLEVBQVhBLFdBQWpCO0FBQThCWCxJQUFBQSxRQUFRLEVBQVJBO0FBQTlCLEdBQVA7QUFDRDs7QUFFRCxTQUFTWSxrQkFBVCxDQUE0QkMsS0FBNUIsRUFBbUM7QUFDakMsU0FBT0EsS0FBSyxJQUFJQSxLQUFLLENBQUNDLEtBQWYsSUFBd0JELEtBQUssQ0FBQ0MsS0FBTixDQUFZLGtCQUFaLENBQS9CO0FBQ0Q7O0FBRUQsU0FBU0Msa0JBQVQsQ0FBNEJoQixLQUE1QixFQUFtQztBQUNqQztBQUNBLE1BQUksQ0FBQ0EsS0FBSyxDQUFDQSxLQUFYLEVBQWtCO0FBQ2hCLFdBQU8sMEJBQVN4QixrQkFBVCxDQUFQO0FBQ0Q7O0FBRUQsTUFBTXlDLGVBQWUsR0FBRyxDQUFDakIsS0FBSyxDQUFDQSxLQUFOLENBQVlrQixNQUFaLElBQXNCLEVBQXZCLEVBQTJCQyxJQUEzQixDQUFnQztBQUFBLFFBQUVqQyxFQUFGLFNBQUVBLEVBQUY7QUFBQSxXQUFVQSxFQUFFLEtBQUssWUFBakI7QUFBQSxHQUFoQyxDQUF4QjtBQUVBLE1BQU1rQyxhQUFhLEdBQUcsQ0FBQ3BCLEtBQUssQ0FBQ0EsS0FBTixDQUFZa0IsTUFBWixJQUFzQixFQUF2QixFQUEyQkMsSUFBM0IsQ0FBZ0M7QUFBQSxRQUFFakMsRUFBRixTQUFFQSxFQUFGO0FBQUEsV0FBVUEsRUFBRSxDQUFDbUMsS0FBSCxDQUFTLFVBQVQsQ0FBVjtBQUFBLEdBQWhDLENBQXRCO0FBRUEsTUFBTUMsYUFBYSxHQUNqQlQsa0JBQWtCLENBQUNPLGFBQUQsQ0FBbEIsSUFBcUNQLGtCQUFrQixDQUFDSSxlQUFELENBQXZELElBQTRFekMsa0JBRDlFLENBVmlDLENBYWpDOztBQUNBLE1BQU0rQyxTQUFTLEdBQUd2QixLQUFLLENBQUNkLEVBQU4sQ0FBU21DLEtBQVQsQ0FBZSxrQkFBZixJQUFxQyxVQUFyQyxHQUFrRCxRQUFwRTtBQUVBLE1BQU1HLEtBQUssR0FBRyxHQUFkO0FBQ0EsTUFBTUMsTUFBTSxHQUFHLGtCQUFJSCxhQUFKLEVBQW1CQyxTQUFuQixFQUE4QixDQUFDQyxLQUFELENBQTlCLENBQWY7QUFDQSxTQUFPLENBQUNDLE1BQU0sQ0FBQ0MsQ0FBUixFQUFXRCxNQUFNLENBQUNFLENBQWxCLEVBQXFCRixNQUFNLENBQUNHLENBQTVCLENBQVA7QUFDRDs7QUFFRCxTQUFTQyx1QkFBVCxDQUFpQzdCLEtBQWpDLEVBQXdDO0FBQ3RDLFNBQU84QixLQUFLLENBQUNDLE9BQU4sQ0FBYy9CLEtBQUssQ0FBQ2tCLE1BQXBCLElBQ0hjLHNDQUFxQkMsTUFBckIsQ0FBNEIsVUFBQUMsRUFBRTtBQUFBLFdBQUlsQyxLQUFLLENBQUNrQixNQUFOLENBQWFlLE1BQWIsQ0FBb0JDLEVBQUUsQ0FBQ0QsTUFBdkIsRUFBK0I3QixNQUFuQztBQUFBLEdBQTlCLENBREcsR0FFSCxFQUZKO0FBR0QsQyxDQUVEOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTStCLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBc0IsQ0FBQ0MsS0FBRDtBQUFBLDRCQUFTQyxPQUFUO0FBQUEsTUFBU0EsT0FBVCw4QkFBbUIsRUFBbkI7QUFBQSx5Q0FDOUJELEtBRDhCO0FBRWpDO0FBQ0FqRCxJQUFBQSxvQkFBb0IsRUFBRWtELE9BQU8sQ0FBQ2xELG9CQUFSLElBQWdDaUQsS0FBSyxDQUFDakQsb0JBSDNCO0FBSWpDQyxJQUFBQSxZQUFZLEVBQUVpRCxPQUFPLENBQUNqRCxZQUFSLElBQXdCZ0QsS0FBSyxDQUFDaEQsWUFKWDtBQUtqQ1AsSUFBQUEsU0FBUyxFQUFFLENBQUN3RCxPQUFPLENBQUMvQyx1QkFBVCxHQUFtQzhDLEtBQUssQ0FBQ3ZELFNBQXpDLEdBQXFELEVBTC9CO0FBTWpDUyxJQUFBQSx1QkFBdUIsRUFBRStDLE9BQU8sQ0FBQy9DLHVCQUFSLElBQW1DO0FBTjNCO0FBQUEsQ0FBNUIsQyxDQVFQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNZ0Qsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUF5QixDQUFDRixLQUFELEVBQVFHLE1BQVI7QUFBQSx1REFDakNILEtBRGlDLEdBRWpDRyxNQUFNLENBQUNGLE9BRjBCLEdBR2pDeEMsWUFBWSxpQ0FDVnVDLEtBRFUsR0FFVkcsTUFBTSxDQUFDRixPQUZHLEVBSHFCO0FBQUEsQ0FBL0I7QUFTUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLElBQU1HLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBK0IsQ0FBQ0osS0FBRCxTQUFtQztBQUFBLE1BQWpCdEMsV0FBaUIsU0FBMUJ1QyxPQUEwQjs7QUFDN0UsTUFBTUksUUFBUSxtQ0FDVEwsS0FEUztBQUVadEMsSUFBQUEsV0FBVyxFQUFYQTtBQUZZLElBQWQ7O0FBSUEseUNBQ0syQyxRQURMLEdBRUs1QyxZQUFZLGlDQUNWdUMsS0FEVTtBQUVidEMsSUFBQUEsV0FBVyxFQUFYQTtBQUZhLEtBRmpCO0FBT0QsQ0FaTTtBQWNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNNEMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixDQUFDTixLQUFELFNBQThDO0FBQUEsTUFBNUJ6RCxTQUE0QixTQUFyQzBELE9BQXFDO0FBQUEsTUFBakJ2QyxXQUFpQixTQUFqQkEsV0FBaUI7O0FBQ2pGLE1BQUksQ0FBQ3NDLEtBQUssQ0FBQ3ZELFNBQU4sQ0FBZ0JGLFNBQWhCLENBQUwsRUFBaUM7QUFDL0I7QUFDQSxXQUFPeUQsS0FBUDtBQUNEOztBQUNELE1BQU1PLG1CQUFtQixHQUFHLHlEQUErQlAsS0FBSyxDQUFDdkQsU0FBTixDQUFnQkYsU0FBaEIsQ0FBL0IsQ0FBNUI7QUFFQSxNQUFNRCxrQkFBa0IsR0FBRyxvREFDekJpRSxtQkFEeUIsRUFFekJQLEtBQUssQ0FBQzFELGtCQUZtQixDQUEzQjtBQUtBLE1BQU1lLG1CQUFtQixHQUFHMkMsS0FBSyxDQUFDMUMscUJBQU4sR0FDeEIwQyxLQUFLLENBQUMzQyxtQkFEa0IsR0FFeEJ1QixrQkFBa0IsQ0FBQ29CLEtBQUssQ0FBQ3ZELFNBQU4sQ0FBZ0JGLFNBQWhCLENBQUQsQ0FGdEI7QUFJQSx5Q0FDS3lELEtBREw7QUFFRXpELElBQUFBLFNBQVMsRUFBVEEsU0FGRjtBQUdFbUIsSUFBQUEsV0FBVyxFQUFYQSxXQUhGO0FBSUVwQixJQUFBQSxrQkFBa0IsRUFBbEJBLGtCQUpGO0FBS0VlLElBQUFBLG1CQUFtQixFQUFuQkE7QUFMRixLQU1LSSxZQUFZLGlDQUNWdUMsS0FEVTtBQUViMUQsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFGYTtBQUdiQyxJQUFBQSxTQUFTLEVBQVRBLFNBSGE7QUFJYm1CLElBQUFBLFdBQVcsRUFBWEE7QUFKYSxLQU5qQjtBQWFELENBN0JNO0FBK0JQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNOEMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixDQUFDUixLQUFELEVBQVFHLE1BQVIsRUFBbUI7QUFDckQsTUFBTU0sU0FBUyxHQUFHTixNQUFNLENBQUNGLE9BQVAsSUFBa0IsRUFBcEM7QUFDQSxNQUFNUyxjQUFjLEdBQUc1QyxNQUFNLENBQUNDLElBQVAsQ0FBWTBDLFNBQVosRUFBdUI5RCxNQUF2QixDQUNyQixVQUFDQyxJQUFELEVBQU9FLEVBQVA7QUFBQSwyQ0FDS0YsSUFETCw0Q0FFR0UsRUFGSCxrQ0FHTzJELFNBQVMsQ0FBQzNELEVBQUQsQ0FIaEI7QUFJSTZELE1BQUFBLFdBQVcsRUFBRUYsU0FBUyxDQUFDM0QsRUFBRCxDQUFULENBQWM2RCxXQUFkLElBQTZCbEIsdUJBQXVCLENBQUNnQixTQUFTLENBQUMzRCxFQUFELENBQVQsQ0FBY2MsS0FBZjtBQUpyRTtBQUFBLEdBRHFCLEVBUXJCLEVBUnFCLENBQXZCLENBRnFELENBYXJEOztBQUNBLE1BQU15QyxRQUFRLG1DQUNUTCxLQURTO0FBRVp2RCxJQUFBQSxTQUFTLGtDQUNKdUQsS0FBSyxDQUFDdkQsU0FERixHQUVKaUUsY0FGSTtBQUZHLElBQWQ7O0FBT0EsU0FBT0QsU0FBUyxDQUFDVCxLQUFLLENBQUN6RCxTQUFQLENBQVQsR0FDSCtELHFCQUFxQixDQUFDRCxRQUFELEVBQVc7QUFBQ0osSUFBQUEsT0FBTyxFQUFFRCxLQUFLLENBQUN6RDtBQUFoQixHQUFYLENBRGxCLEdBRUg4RCxRQUZKO0FBR0QsQ0F4Qk07QUEwQlA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sSUFBTU8sc0JBQXNCLEdBQUcsU0FBekJBLHNCQUF5QixDQUFBWixLQUFLO0FBQUEsU0FBSUEsS0FBSjtBQUFBLENBQXBDO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNYSx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLENBQUNiLEtBQUQsU0FBaUM7QUFBQSxNQUFmdkQsU0FBZSxTQUF4QndELE9BQXdCO0FBQ3RFLE1BQU1hLGlCQUFpQixHQUFHQyxvQkFBb0IsQ0FDNUN0RSxTQUQ0QyxFQUU1Q3VELEtBQUssQ0FBQ2pELG9CQUZzQyxFQUc1Q2lELEtBQUssQ0FBQ2hELFlBSHNDLENBQTlDO0FBS0EsU0FBTyxxQkFBU2dELEtBQVQsRUFBZ0JjLGlCQUFoQixDQUFQO0FBQ0QsQ0FQTTtBQVNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNRSx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLENBQUNoQixLQUFELFNBQXFDO0FBQUEsbUNBQTVCQyxPQUE0QixDQUFsQmdCLE1BQWtCO0FBQUEsTUFBbEJBLE1BQWtCLHFDQUFULEVBQVM7O0FBQUEsY0FDdkRBLE1BQU0sSUFBSSxFQUQ2QztBQUFBLE1BQ25FdEQsUUFEbUUsU0FDbkVBLFFBRG1FOztBQUcxRSxNQUFJLENBQUNBLFFBQUwsRUFBZTtBQUNiLFdBQU9xQyxLQUFQO0FBQ0QsR0FMeUUsQ0FPMUU7OztBQUNBLE1BQU1jLGlCQUFpQixHQUFHbkQsUUFBUSxDQUFDbEIsU0FBVCxHQUN0QnNFLG9CQUFvQixDQUFDcEQsUUFBUSxDQUFDbEIsU0FBVixFQUFxQnVELEtBQUssQ0FBQ2pELG9CQUEzQixFQUFpRGlELEtBQUssQ0FBQ2hELFlBQXZELENBREUsR0FFdEIsSUFGSixDQVIwRSxDQVkxRTs7QUFDQSxNQUFNa0UsTUFBTSxHQUFHdkQsUUFBUSxDQUFDbEIsU0FBVCxtQ0FFTmtCLFFBRk07QUFHVGxCLElBQUFBLFNBQVMsa0NBQ0prQixRQUFRLENBQUNsQixTQURMLEdBRUp1RCxLQUFLLENBQUN2RCxTQUZGO0FBSEEsT0FRWGtCLFFBUkosQ0FiMEUsQ0F1QjFFOztBQUNBdUQsRUFBQUEsTUFBTSxDQUFDNUQscUJBQVAsR0FDRTZELE9BQU8sQ0FBQ3hELFFBQVEsQ0FBQ04sbUJBQVYsQ0FBUCxJQUF5QzZELE1BQU0sQ0FBQzVELHFCQURsRDtBQUVBLE1BQU0rQyxRQUFRLEdBQUdILHNCQUFzQixDQUFDRixLQUFELEVBQVE7QUFBQ0MsSUFBQUEsT0FBTyxFQUFFaUI7QUFBVixHQUFSLENBQXZDO0FBRUEsU0FBT0osaUJBQWlCLEdBQUcscUJBQVNULFFBQVQsRUFBbUJTLGlCQUFuQixDQUFILEdBQTJDVCxRQUFuRTtBQUNELENBN0JNOzs7O0FBK0JQLFNBQVNVLG9CQUFULENBQThCdEUsU0FBOUIsRUFBeUNNLG9CQUF6QyxFQUErREMsWUFBL0QsRUFBNkU7QUFDM0UsU0FBTyxDQUNMb0Usa0JBQUtDLEdBQUwsQ0FDRXZELE1BQU0sQ0FBQ0ssTUFBUCxDQUFjMUIsU0FBZCxFQUNHNkUsR0FESCxDQUNPO0FBQUEsUUFBRXhFLEVBQUYsVUFBRUEsRUFBRjtBQUFBLFFBQU15RSxHQUFOLFVBQU1BLEdBQU47QUFBQSxRQUFXQyxXQUFYLFVBQVdBLFdBQVg7QUFBQSxXQUE2QjtBQUNoQzFFLE1BQUFBLEVBQUUsRUFBRkEsRUFEZ0M7QUFFaEN5RSxNQUFBQSxHQUFHLEVBQUUsMENBQWdCQSxHQUFoQixJQUNELDhDQUFvQkEsR0FBcEIsRUFBeUJDLFdBQVcsSUFBSXpFLG9CQUF4QyxFQUE4REMsWUFBOUQsQ0FEQyxHQUVEdUU7QUFKNEIsS0FBN0I7QUFBQSxHQURQLEVBT0dELEdBUEgsQ0FPT0csMkJBUFAsQ0FERixFQVNFQyxLQVRGLEVBVUU7QUFDQSxZQUFBQyxPQUFPO0FBQUEsV0FDTCxvQ0FDRUEsT0FBTyxDQUFDaEYsTUFBUixDQUNFLFVBQUNDLElBQUQ7QUFBQSxVQUFRRSxFQUFSLFVBQVFBLEVBQVI7QUFBQSxVQUFZYyxLQUFaLFVBQVlBLEtBQVo7QUFBQSw2Q0FDS2hCLElBREwsNENBRUdFLEVBRkgsa0NBR09MLFNBQVMsQ0FBQ0ssRUFBRCxDQUhoQjtBQUlJYyxRQUFBQSxLQUFLLEVBQUxBO0FBSko7QUFBQSxLQURGLEVBUUUsRUFSRixDQURGLENBREs7QUFBQSxHQVhULEVBd0JFO0FBQ0FnRSxrQ0F6QkYsQ0FESyxDQUFQO0FBNkJEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsNkJBQTZCLEdBQUcsU0FBaENBLDZCQUFnQyxDQUFBN0IsS0FBSyxFQUFJO0FBQ3BELE1BQU04QixXQUFXLGlEQUNadEUsaUJBRFk7QUFFZlQsSUFBQUEsb0JBQW9CLEVBQUVpRCxLQUFLLENBQUNqRCxvQkFGYjtBQUdmQyxJQUFBQSxZQUFZLEVBQUVnRCxLQUFLLENBQUNoRCxZQUhMO0FBSWZFLElBQUFBLHVCQUF1QixFQUFFOEMsS0FBSyxDQUFDOUM7QUFKaEIsS0FLWjhDLEtBQUssQ0FBQytCLFlBTE07QUFNZnRGLElBQUFBLFNBQVMsRUFBRXVELEtBQUssQ0FBQ3ZELFNBTkY7QUFPZnNGLElBQUFBLFlBQVksRUFBRS9CLEtBQUssQ0FBQytCO0FBUEwsSUFBakI7O0FBVUEsU0FBT3pCLHFCQUFxQixDQUFDd0IsV0FBRCxFQUFjO0FBQUM3QixJQUFBQSxPQUFPLEVBQUU2QixXQUFXLENBQUN2RjtBQUF0QixHQUFkLENBQTVCO0FBQ0QsQ0FaTTtBQWNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNeUYseUJBQXlCLEdBQUcsU0FBNUJBLHlCQUE0QixDQUFDaEMsS0FBRDtBQUFBLDhCQUFTQyxPQUFUO0FBQUEsTUFBbUJnQyxJQUFuQixrQkFBbUJBLElBQW5CO0FBQUEsTUFBeUJyRSxLQUF6QixrQkFBeUJBLEtBQXpCO0FBQUEsTUFBZ0NzRSxLQUFoQyxrQkFBZ0NBLEtBQWhDO0FBQUEseUNBQ3BDbEMsS0FEb0M7QUFFdkM3QyxJQUFBQSxVQUFVLDhEQUNMNkMsS0FBSyxDQUFDN0MsVUFERCxHQUdKUyxLQUFLLEdBQ0w7QUFDRWQsTUFBQUEsRUFBRSxFQUFFYyxLQUFLLENBQUNkLEVBQU4sSUFBWSw0QkFEbEI7QUFFRTtBQUNBYyxNQUFBQSxLQUFLLEVBQUUsd0JBQVVBLEtBQVYsQ0FIVDtBQUlFdUUsTUFBQUEsS0FBSyxFQUFFdkUsS0FBSyxDQUFDd0UsSUFKZjtBQUtFO0FBQ0F6QixNQUFBQSxXQUFXLEVBQUVsQix1QkFBdUIsQ0FBQzdCLEtBQUQ7QUFOdEMsS0FESyxHQVNMLEVBWkksR0FhSnFFLElBQUksR0FBRztBQUFDQSxNQUFBQSxJQUFJLEVBQUpBO0FBQUQsS0FBSCxHQUFZLEVBYlosR0FjSkMsS0FBSyxLQUFLRyxTQUFWLEdBQXNCO0FBQUNILE1BQUFBLEtBQUssRUFBTEE7QUFBRCxLQUF0QixHQUFnQyxFQWQ1QjtBQUY2QjtBQUFBLENBQWxDO0FBb0JQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNSSxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQXVCLENBQUN0QyxLQUFELFVBQThDO0FBQUEsOEJBQXJDQyxPQUFxQztBQUFBLE1BQTNCOUMsVUFBMkIsa0JBQTNCQSxVQUEyQjtBQUFBLE1BQWZvRixRQUFlLGtCQUFmQSxRQUFlOztBQUNoRixNQUFNQyxPQUFPLG1DQUNSeEMsS0FBSyxDQUFDN0MsVUFERSxHQUVSQSxVQUZRLENBQWI7O0FBS0EsTUFBTXNGLE9BQU8sR0FBRywwQ0FBZ0JELE9BQU8sQ0FBQ2pCLEdBQXhCLENBQWhCO0FBQ0EsTUFBTVUsSUFBSSxHQUFHUSxPQUFPLEdBQ2hCLDRDQUFrQjtBQUNoQkYsSUFBQUEsUUFBUSxFQUFSQSxRQURnQjtBQUVoQkcsSUFBQUEsUUFBUSxFQUFFRixPQUFPLENBQUNqQixHQUZGO0FBR2hCeEUsSUFBQUEsb0JBQW9CLEVBQUV5RixPQUFPLENBQUNoQixXQUFSLElBQXVCeEIsS0FBSyxDQUFDakQsb0JBSG5DO0FBSWhCQyxJQUFBQSxZQUFZLEVBQUVnRCxLQUFLLENBQUNoRCxZQUFOLElBQXNCQztBQUpwQixHQUFsQixDQURnQixHQU9oQitDLEtBQUssQ0FBQzdDLFVBQU4sQ0FBaUI4RSxJQVByQjtBQVNBLHlDQUNLakMsS0FETDtBQUVFN0MsSUFBQUEsVUFBVSxrQ0FDTHFGLE9BREs7QUFFUkMsTUFBQUEsT0FBTyxFQUFQQSxPQUZRO0FBR1JSLE1BQUFBLElBQUksRUFBSkE7QUFIUTtBQUZaO0FBUUQsQ0F4Qk07QUEwQlA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sSUFBTVUsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUEyQixDQUFBM0MsS0FBSyxFQUFJO0FBQy9DLE1BQU00QyxPQUFPLEdBQUc1QyxLQUFLLENBQUM3QyxVQUFOLENBQWlCTCxFQUFqQzs7QUFDQSxNQUFNdUQsUUFBUSxtQ0FDVEwsS0FEUztBQUVadkQsSUFBQUEsU0FBUyxrQ0FDSnVELEtBQUssQ0FBQ3ZELFNBREYsNENBRU5tRyxPQUZNLEVBRUk1QyxLQUFLLENBQUM3QyxVQUZWLEVBRkc7QUFNWjtBQUNBQSxJQUFBQSxVQUFVLEVBQUVDLG9CQUFvQjtBQVBwQixJQUFkLENBRitDLENBVy9DOzs7QUFDQSxTQUFPa0QscUJBQXFCLENBQUNELFFBQUQsRUFBVztBQUFDSixJQUFBQSxPQUFPLEVBQUUyQztBQUFWLEdBQVgsQ0FBNUI7QUFDRCxDQWJNO0FBZVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxJQUFNQyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQTRCLENBQUM3QyxLQUFEO0FBQUEsTUFBa0I4QyxLQUFsQixVQUFTN0MsT0FBVDtBQUFBLHlDQUNwQ0QsS0FEb0M7QUFFdkMzQyxJQUFBQSxtQkFBbUIsRUFBRXlGLEtBRmtCO0FBR3ZDeEYsSUFBQUEscUJBQXFCLEVBQUU7QUFIZ0I7QUFBQSxDQUFsQztBQU1QO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLFNBQVNGLG9CQUFULEdBQWdDO0FBQ3JDLFNBQU87QUFDTG9FLElBQUFBLFdBQVcsRUFBRSxJQURSO0FBRUxVLElBQUFBLEtBQUssRUFBRSxLQUZGO0FBR0xPLElBQUFBLE9BQU8sRUFBRSxLQUhKO0FBSUxOLElBQUFBLEtBQUssRUFBRSxJQUpGO0FBS0x2RSxJQUFBQSxLQUFLLEVBQUUsSUFMRjtBQU1MMkQsSUFBQUEsR0FBRyxFQUFFLElBTkE7QUFPTFUsSUFBQUEsSUFBSSxFQUFFLElBUEQ7QUFRTGMsSUFBQUEsTUFBTSxFQUFFO0FBUkgsR0FBUDtBQVVEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCBUYXNrLCB7d2l0aFRhc2t9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2guY2xvbmVkZWVwJztcblxuLy8gVXRpbHNcbmltcG9ydCB7XG4gIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgaXNWYWxpZFN0eWxlVXJsLFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBlZGl0VG9wTWFwU3R5bGUsXG4gIGVkaXRCb3R0b21NYXBTdHlsZSxcbiAgZ2V0U3R5bGVJbWFnZUljb25cbn0gZnJvbSAndXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3InO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9NQVBfU1RZTEVTLFxuICBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge0xPQURfTUFQX1NUWUxFX1RBU0t9IGZyb20gJ3Rhc2tzL3Rhc2tzJztcbmltcG9ydCB7bG9hZE1hcFN0eWxlcywgbG9hZE1hcFN0eWxlRXJyfSBmcm9tICdhY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zJztcbmltcG9ydCB7cmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge2hleFRvUmdifSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5cbmNvbnN0IERFRkFVTFRfQkxER19DT0xPUiA9ICcjRDFDRUM3JztcblxuLyoqXG4gKiBAcmV0dXJuIHtpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuTWFwU3R5bGV9XG4gKi9cbmNvbnN0IGdldERlZmF1bHRTdGF0ZSA9ICgpID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHN0eWxlVHlwZSA9ICdkYXJrJztcbiAgY29uc3QgdG9wTGF5ZXJHcm91cHMgPSB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlVHlwZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgdG9wTGF5ZXJHcm91cHMsXG4gICAgbWFwU3R5bGVzOiBERUZBVUxUX01BUF9TVFlMRVMucmVkdWNlKFxuICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtjdXJyLmlkXTogY3VyclxuICAgICAgfSksXG4gICAgICB7fVxuICAgICksXG4gICAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG51bGwsXG4gICAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUiksXG4gICAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBmYWxzZVxuICB9O1xufTtcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0eWxlYC4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHttYXBTdHlsZVVwZGF0ZXJzfSBmcm9tICdrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGhpZGUgbGFiZWwgZnJvbSBiYWNrZ3JvdW5kIG1hcFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0eWxlOiBtYXBTdHlsZVVwZGF0ZXJzLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0eWxlLFxuICogICAgICAgICAgICAgICB7cGF5bG9hZDoge3Zpc2libGVMYXllckdyb3Vwczoge2xhYmVsOiBmYWxzZSwgcm9hZDogdHJ1ZSwgYmFja2dyb3VuZDogdHJ1ZX19fVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5jb25zdCBtYXBTdHlsZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdHlsZWBcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzdHlsZVR5cGUgLSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IHNrZXRjaFZhbHVlIC0gRGVmYXVsdDoge2lua1N0cmVuZ3RoOiAwLjI7IGh1ZTogMDsgaHVlU2F0dXJhdGlvbjogMC4zOyBkb3RTY3JlZW46IGZhbHNlfTtcbiAqIEBwcm9wZXJ0eSB2aXNpYmxlTGF5ZXJHcm91cHMgLSBEZWZhdWx0OiBge31gXG4gKiBAcHJvcGVydHkgdG9wTGF5ZXJHcm91cHMgLSBEZWZhdWx0OiBge31gXG4gKiBAcHJvcGVydHkgbWFwU3R5bGVzIC0gbWFwcGluZyBmcm9tIHN0eWxlIGtleSB0byBzdHlsZSBvYmplY3RcbiAqIEBwcm9wZXJ0eSBtYXBib3hBcGlBY2Nlc3NUb2tlbiAtIERlZmF1bHQ6IGBudWxsYFxuICogQFByb3BlcnR5IG1hcGJveEFwaVVybCAtIERlZmF1bHQgbnVsbFxuICogQFByb3BlcnR5IG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IC0gRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGlucHV0U3R5bGUgLSBEZWZhdWx0OiBge31gXG4gKiBAcHJvcGVydHkgdGhyZWVEQnVpbGRpbmdDb2xvciAtIERlZmF1bHQ6IGBbciwgZywgYl1gXG4gKiBAdHlwZSB7aW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLk1hcFN0eWxlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RZTEUgPSBnZXREZWZhdWx0U3RhdGUoKTtcblxuLyoqXG4gKiBDcmVhdGUgdHdvIG1hcCBzdHlsZXMgZnJvbSBwcmVzZXQgbWFwIHN0eWxlLCBvbmUgZm9yIHRvcCBtYXAgb25lIGZvciBib3R0b21cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVUeXBlIC0gY3VycmVudCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiBib3R0b20gbWFwXG4gKiBAcGFyYW0ge09iamVjdH0gdG9wTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiB0b3AgbWFwXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwU3R5bGVzIC0gYSBkaWN0aW9uYXJ5IG9mIGFsbCBtYXAgc3R5bGVzXG4gKiBAcGFyYW0ge09iamVjdH0gc2tldGNoVmFsdWUgLSBjdXJyZW50IHNrZXRjaCB2YWx1ZVxuICogQHJldHVybnMge09iamVjdH0gYm90dG9tTWFwU3R5bGUgfCB0b3BNYXBTdHlsZSB8IGlzUmFzdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXBTdHlsZXMoe1xuICBzdHlsZVR5cGUsXG4gIHZpc2libGVMYXllckdyb3VwcyxcbiAgdG9wTGF5ZXJHcm91cHMsXG4gIG1hcFN0eWxlcyxcbiAgc2tldGNoVmFsdWVcbn0pIHtcbiAgY29uc3QgbWFwU3R5bGUgPSBtYXBTdHlsZXNbc3R5bGVUeXBlXTtcblxuICAvLyBzdHlsZSBtaWdodCBub3QgYmUgbG9hZGVkIHlldFxuICBpZiAoIW1hcFN0eWxlIHx8ICFtYXBTdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGVkaXRhYmxlID0gT2JqZWN0LmtleXModmlzaWJsZUxheWVyR3JvdXBzKS5sZW5ndGg7XG5cbiAgY29uc3QgYm90dG9tTWFwU3R5bGUgPSAhZWRpdGFibGVcbiAgICA/IG1hcFN0eWxlLnN0eWxlXG4gICAgOiBlZGl0Qm90dG9tTWFwU3R5bGUoe1xuICAgICAgICBpZDogc3R5bGVUeXBlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgdmlzaWJsZUxheWVyR3JvdXBzLFxuICAgICAgICBza2V0Y2hWYWx1ZVxuICAgICAgfSk7XG5cbiAgY29uc3QgaGFzVG9wTGF5ZXIgPSBlZGl0YWJsZSAmJiBPYmplY3QudmFsdWVzKHRvcExheWVyR3JvdXBzKS5zb21lKHYgPT4gdik7XG5cbiAgLy8gbXV0ZSB0b3AgbGF5ZXIgaWYgbm90IHZpc2libGUgaW4gYm90dG9tIGxheWVyXG4gIGNvbnN0IHRvcExheWVycyA9XG4gICAgaGFzVG9wTGF5ZXIgJiZcbiAgICBPYmplY3Qua2V5cyh0b3BMYXllckdyb3VwcykucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IHRvcExheWVyR3JvdXBzW2tleV0gJiYgdmlzaWJsZUxheWVyR3JvdXBzW2tleV1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gIGNvbnN0IHRvcE1hcFN0eWxlID0gaGFzVG9wTGF5ZXJcbiAgICA/IGVkaXRUb3BNYXBTdHlsZSh7XG4gICAgICAgIGlkOiBzdHlsZVR5cGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICB2aXNpYmxlTGF5ZXJHcm91cHM6IHRvcExheWVyc1xuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcmV0dXJuIHtib3R0b21NYXBTdHlsZSwgdG9wTWFwU3R5bGUsIGVkaXRhYmxlfTtcbn1cblxuZnVuY3Rpb24gZmluZExheWVyRmlsbENvbG9yKGxheWVyKSB7XG4gIHJldHVybiBsYXllciAmJiBsYXllci5wYWludCAmJiBsYXllci5wYWludFsnYmFja2dyb3VuZC1jb2xvciddO1xufVxuXG5mdW5jdGlvbiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3R5bGUpIHtcbiAgLy8gc2V0IGJ1aWxkaW5nIGNvbG9yIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUik7XG4gIH1cblxuICBjb25zdCBiYWNrZ3JvdW5kTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZCA9PT0gJ2JhY2tncm91bmQnKTtcblxuICBjb25zdCBidWlsZGluZ0xheWVyID0gKHN0eWxlLnN0eWxlLmxheWVycyB8fCBbXSkuZmluZCgoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLykpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nQ29sb3IgPVxuICAgIGZpbmRMYXllckZpbGxDb2xvcihidWlsZGluZ0xheWVyKSB8fCBmaW5kTGF5ZXJGaWxsQ29sb3IoYmFja2dyb3VuZExheWVyKSB8fCBERUZBVUxUX0JMREdfQ09MT1I7XG5cbiAgLy8gYnJpZ2h0ZW4gb3IgZGFya2VuIGJ1aWxkaW5nIGJhc2VkIG9uIHN0eWxlXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHN0eWxlLmlkLm1hdGNoKC8oPz0oZGFya3xuaWdodCkpLykgPyAnYnJpZ2h0ZXInIDogJ2Rhcmtlcic7XG5cbiAgY29uc3QgYWxwaGEgPSAwLjI7XG4gIGNvbnN0IHJnYk9iaiA9IHJnYihidWlsZGluZ0NvbG9yKVtvcGVyYXRpb25dKFthbHBoYV0pO1xuICByZXR1cm4gW3JnYk9iai5yLCByZ2JPYmouZywgcmdiT2JqLmJdO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShzdHlsZS5sYXllcnMpXG4gICAgPyBERUZBVUxUX0xBWUVSX0dST1VQUy5maWx0ZXIobGcgPT4gc3R5bGUubGF5ZXJzLmZpbHRlcihsZy5maWx0ZXIpLmxlbmd0aClcbiAgICA6IFtdO1xufVxuXG4vLyBVcGRhdGVyc1xuLyoqXG4gKiBQcm9wYWdhdGUgYG1hcFN0eWxlYCByZWR1Y2VyIHdpdGggYG1hcGJveEFwaUFjY2Vzc1Rva2VuYCBhbmQgYG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0YC5cbiAqIGlmIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IGlzIHRydWUgbWFwU3R5bGVzIGlzIGVtcHRpZWQ7IGxvYWRNYXBTdHlsZXNVcGRhdGVyKCkgd2lsbFxuICogcG9wdWxhdGUgbWFwU3R5bGVzLlxuICpcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5pbml0TWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5pdE1hcFN0eWxlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQgPSB7fX0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICAvLyBzYXZlIG1hcGJveCBhY2Nlc3MgdG9rZW4gdG8gbWFwIHN0eWxlIHN0YXRlXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwYXlsb2FkLm1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8IHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHBheWxvYWQubWFwYm94QXBpVXJsIHx8IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgbWFwU3R5bGVzOiAhcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCA/IHN0YXRlLm1hcFN0eWxlcyA6IHt9LFxuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogcGF5bG9hZC5tYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB8fCBmYWxzZVxufSk7XG4vLyB9KTtcblxuLyoqXG4gKiBVcGRhdGUgYHZpc2libGVMYXllckdyb3Vwc2B0byBjaGFuZ2UgbGF5ZXIgZ3JvdXAgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBDb25maWdDaGFuZ2VVcGRhdGVyID0gKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5hY3Rpb24ucGF5bG9hZCxcbiAgLi4uZ2V0TWFwU3R5bGVzKHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5hY3Rpb24ucGF5bG9hZFxuICB9KVxufSk7XG5cbi8qKlxuICogVXBkYXRlcyBUaWxlcyAzRCBTa2V0Y2ggdmFsdWVcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5zZXRUaWxlczNkU2tldGNoVmFsdWVVcGRhdGVyfVxuICovXG5leHBvcnQgY29uc3Qgc2V0VGlsZXMzZFNrZXRjaFZhbHVlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHNrZXRjaFZhbHVlfSkgPT4ge1xuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBza2V0Y2hWYWx1ZVxuICB9O1xuICByZXR1cm4ge1xuICAgIC4uLm5ld1N0YXRlLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNrZXRjaFZhbHVlXG4gICAgfSlcbiAgfTtcbn07XG5cbi8qKlxuICogQ2hhbmdlIHRvIGFub3RoZXIgbWFwIHN0eWxlLiBUaGUgc2VsZWN0ZWQgc3R5bGUgc2hvdWxkIGFscmVhZHkgYmVlbiBsb2FkZWQgaW50byBgbWFwU3R5bGUubWFwU3R5bGVzYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLm1hcFN0eWxlQ2hhbmdlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHN0eWxlVHlwZSwgc2tldGNoVmFsdWV9KSA9PiB7XG4gIGlmICghc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pIHtcbiAgICAvLyB3ZSBtaWdodCBub3QgaGF2ZSByZWNlaXZlZCB0aGUgc3R5bGUgeWV0XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IGRlZmF1bHRMR1Zpc2liaWxpdHkgPSBnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkoc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIGNvbnN0IHZpc2libGVMYXllckdyb3VwcyA9IG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkoXG4gICAgZGVmYXVsdExHVmlzaWJpbGl0eSxcbiAgICBzdGF0ZS52aXNpYmxlTGF5ZXJHcm91cHNcbiAgKTtcblxuICBjb25zdCB0aHJlZURCdWlsZGluZ0NvbG9yID0gc3RhdGUuY3VzdG9tM0RCdWlsZGluZ0NvbG9yXG4gICAgPyBzdGF0ZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgOiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3R5bGVUeXBlLFxuICAgIHNrZXRjaFZhbHVlLFxuICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICB0aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICAgIHN0eWxlVHlwZSxcbiAgICAgIHNrZXRjaFZhbHVlXG4gICAgfSlcbiAgfTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBzdWNjZXNzXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubG9hZE1hcFN0eWxlc1VwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVzVXBkYXRlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gIGNvbnN0IG5ld1N0eWxlcyA9IGFjdGlvbi5wYXlsb2FkIHx8IHt9O1xuICBjb25zdCBhZGRMYXllckdyb3VwcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykucmVkdWNlKFxuICAgIChhY2N1LCBpZCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbaWRdOiB7XG4gICAgICAgIC4uLm5ld1N0eWxlc1tpZF0sXG4gICAgICAgIGxheWVyR3JvdXBzOiBuZXdTdHlsZXNbaWRdLmxheWVyR3JvdXBzIHx8IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKG5ld1N0eWxlc1tpZF0uc3R5bGUpXG4gICAgICB9XG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICAvLyBhZGQgbmV3IHN0eWxlcyB0byBzdGF0ZVxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcFN0eWxlcyxcbiAgICAgIC4uLmFkZExheWVyR3JvdXBzXG4gICAgfVxuICB9O1xuICByZXR1cm4gbmV3U3R5bGVzW3N0YXRlLnN0eWxlVHlwZV1cbiAgICA/IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHN0YXRlLnN0eWxlVHlwZX0pXG4gICAgOiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBlcnJvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmxvYWRNYXBTdHlsZUVyclVwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbi8vIGRvIG5vdGhpbmcgZm9yIG5vdywgaWYgZGlkbid0IGxvYWQsIHNraXAgaXRcbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVFcnJVcGRhdGVyID0gc3RhdGUgPT4gc3RhdGU7XG5cbi8qKlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLnJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiBtYXBTdHlsZXN9KSA9PiB7XG4gIGNvbnN0IGxvYWRNYXBTdHlsZVRhc2tzID0gZ2V0TG9hZE1hcFN0eWxlVGFza3MoXG4gICAgbWFwU3R5bGVzLFxuICAgIHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIHN0YXRlLm1hcGJveEFwaVVybFxuICApO1xuICByZXR1cm4gd2l0aFRhc2soc3RhdGUsIGxvYWRNYXBTdHlsZVRhc2tzKTtcbn07XG5cbi8qKlxuICogTG9hZCBtYXAgc3R5bGUgb2JqZWN0IHdoZW4gcGFzcyBpbiBzYXZlZCBtYXAgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGBtYXBTdHlsZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBzYXZlZCBtYXAgY29uZmlnIGB7bWFwU3R5bGUsIHZpc1N0YXRlLCBtYXBTdGF0ZX1gXG4gKiBAcmV0dXJucyBuZXh0U3RhdGUgb3IgYHJlYWN0LXBhbWAgdGFza3MgdG8gbG9hZCBtYXAgc3R5bGUgb2JqZWN0XG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5yZWNlaXZlTWFwQ29uZmlnVXBkYXRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDoge2NvbmZpZyA9IHt9fX0pID0+IHtcbiAgY29uc3Qge21hcFN0eWxlfSA9IGNvbmZpZyB8fCB7fTtcblxuICBpZiAoIW1hcFN0eWxlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gaWYgc2F2ZWQgY3VzdG9tIG1hcFN0eWxlcyBsb2FkIHRoZSBzdHlsZSBvYmplY3RcbiAgY29uc3QgbG9hZE1hcFN0eWxlVGFza3MgPSBtYXBTdHlsZS5tYXBTdHlsZXNcbiAgICA/IGdldExvYWRNYXBTdHlsZVRhc2tzKG1hcFN0eWxlLm1hcFN0eWxlcywgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sIHN0YXRlLm1hcGJveEFwaVVybClcbiAgICA6IG51bGw7XG5cbiAgLy8gbWVyZ2UgZGVmYXVsdCBtYXBTdHlsZXNcbiAgY29uc3QgbWVyZ2VkID0gbWFwU3R5bGUubWFwU3R5bGVzXG4gICAgPyB7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAuLi5tYXBTdHlsZS5tYXBTdHlsZXMsXG4gICAgICAgICAgLi4uc3RhdGUubWFwU3R5bGVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA6IG1hcFN0eWxlO1xuXG4gIC8vIHNldCBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IHRydWUgaWYgbWFwU3R5bGUgY29udGFpbnMgdGhyZWVEQnVpbGRpbmdDb2xvclxuICBtZXJnZWQuY3VzdG9tM0RCdWlsZGluZ0NvbG9yID1cbiAgICBCb29sZWFuKG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IpIHx8IG1lcmdlZC5jdXN0b20zREJ1aWxkaW5nQ29sb3I7XG4gIGNvbnN0IG5ld1N0YXRlID0gbWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IG1lcmdlZH0pO1xuXG4gIHJldHVybiBsb2FkTWFwU3R5bGVUYXNrcyA/IHdpdGhUYXNrKG5ld1N0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcykgOiBuZXdTdGF0ZTtcbn07XG5cbmZ1bmN0aW9uIGdldExvYWRNYXBTdHlsZVRhc2tzKG1hcFN0eWxlcywgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCkge1xuICByZXR1cm4gW1xuICAgIFRhc2suYWxsKFxuICAgICAgT2JqZWN0LnZhbHVlcyhtYXBTdHlsZXMpXG4gICAgICAgIC5tYXAoKHtpZCwgdXJsLCBhY2Nlc3NUb2tlbn0pID0+ICh7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgdXJsOiBpc1ZhbGlkU3R5bGVVcmwodXJsKVxuICAgICAgICAgICAgPyBnZXRTdHlsZURvd25sb2FkVXJsKHVybCwgYWNjZXNzVG9rZW4gfHwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybClcbiAgICAgICAgICAgIDogdXJsXG4gICAgICAgIH0pKVxuICAgICAgICAubWFwKExPQURfTUFQX1NUWUxFX1RBU0spXG4gICAgKS5iaW1hcChcbiAgICAgIC8vIHN1Y2Nlc3NcbiAgICAgIHJlc3VsdHMgPT5cbiAgICAgICAgbG9hZE1hcFN0eWxlcyhcbiAgICAgICAgICByZXN1bHRzLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCB7aWQsIHN0eWxlfSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgICAgW2lkXToge1xuICAgICAgICAgICAgICAgIC4uLm1hcFN0eWxlc1tpZF0sXG4gICAgICAgICAgICAgICAgc3R5bGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIC8vIGVycm9yXG4gICAgICBsb2FkTWFwU3R5bGVFcnJcbiAgICApXG4gIF07XG59XG4vKipcbiAqIFJlc2V0IG1hcCBzdHlsZSBjb25maWcgdG8gaW5pdGlhbCBzdGF0ZVxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgbWFwU3R5bGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLnJlc2V0TWFwQ29uZmlnTWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIgPSBzdGF0ZSA9PiB7XG4gIGNvbnN0IGVtcHR5Q29uZmlnID0ge1xuICAgIC4uLklOSVRJQUxfTUFQX1NUWUxFLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmw6IHN0YXRlLm1hcGJveEFwaVVybCxcbiAgICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogc3RhdGUubWFwU3R5bGVzUmVwbGFjZURlZmF1bHQsXG4gICAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICAgIG1hcFN0eWxlczogc3RhdGUubWFwU3R5bGVzLFxuICAgIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG4gIH07XG5cbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihlbXB0eUNvbmZpZywge3BheWxvYWQ6IGVtcHR5Q29uZmlnLnN0eWxlVHlwZX0pO1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3QgaXMgcmVjZWl2ZWRcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5sb2FkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHtpY29uLCBzdHlsZSwgZXJyb3J9fSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlucHV0U3R5bGU6IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC8vIHN0eWxlIGpzb24gYW5kIGljb24gd2lsbCBsb2FkIGFzeW5jaHJvbm91c2x5XG4gICAgLi4uKHN0eWxlXG4gICAgICA/IHtcbiAgICAgICAgICBpZDogc3R5bGUuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKSxcbiAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgc3R5bGUgb2JqZWN0XG4gICAgICAgICAgc3R5bGU6IGNsb25lRGVlcChzdHlsZSksXG4gICAgICAgICAgbGFiZWw6IHN0eWxlLm5hbWUsXG4gICAgICAgICAgLy8gZ2F0aGVyaW5nIGxheWVyIGdyb3VwIGluZm8gZnJvbSBzdHlsZSBqc29uXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKVxuICAgICAgICB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4oaWNvbiA/IHtpY29ufSA6IHt9KSxcbiAgICAuLi4oZXJyb3IgIT09IHVuZGVmaW5lZCA/IHtlcnJvcn0gOiB7fSlcbiAgfVxufSk7XG5cbi8qKlxuICogSW5wdXQgYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmlucHV0TWFwU3R5bGVVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5wdXRNYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiB7aW5wdXRTdHlsZSwgbWFwU3RhdGV9fSkgPT4ge1xuICBjb25zdCB1cGRhdGVkID0ge1xuICAgIC4uLnN0YXRlLmlucHV0U3R5bGUsXG4gICAgLi4uaW5wdXRTdHlsZVxuICB9O1xuXG4gIGNvbnN0IGlzVmFsaWQgPSBpc1ZhbGlkU3R5bGVVcmwodXBkYXRlZC51cmwpO1xuICBjb25zdCBpY29uID0gaXNWYWxpZFxuICAgID8gZ2V0U3R5bGVJbWFnZUljb24oe1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgc3R5bGVVcmw6IHVwZGF0ZWQudXJsLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogdXBkYXRlZC5hY2Nlc3NUb2tlbiB8fCBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwgfHwgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuICAgICAgfSlcbiAgICA6IHN0YXRlLmlucHV0U3R5bGUuaWNvbjtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlucHV0U3R5bGU6IHtcbiAgICAgIC4uLnVwZGF0ZWQsXG4gICAgICBpc1ZhbGlkLFxuICAgICAgaWNvblxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIG1hcCBzdHlsZSBmcm9tIHVzZXIgaW5wdXQgdG8gcmVkdWNlciBhbmQgc2V0IGl0IHRvIGN1cnJlbnQgc3R5bGVcbiAqIFRoaXMgYWN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgY2xpY2sgY29uZmlybSBhZnRlciBwdXR0aW5nIGluIGEgdmFsaWQgc3R5bGUgdXJsIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IHN0YXRlID0+IHtcbiAgY29uc3Qgc3R5bGVJZCA9IHN0YXRlLmlucHV0U3R5bGUuaWQ7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgW3N0eWxlSWRdOiBzdGF0ZS5pbnB1dFN0eWxlXG4gICAgfSxcbiAgICAvLyBzZXQgdG8gZGVmYXVsdFxuICAgIGlucHV0U3R5bGU6IGdldEluaXRpYWxJbnB1dFN0eWxlKClcbiAgfTtcbiAgLy8gc2V0IG5ldyBzdHlsZVxuICByZXR1cm4gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDogc3R5bGVJZH0pO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIDNkIGJ1aWxkaW5nIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuc2V0M2RCdWlsZGluZ0NvbG9yVXBkYXRlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IHNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiBjb2xvcn0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aHJlZURCdWlsZGluZ0NvbG9yOiBjb2xvcixcbiAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiB0cnVlXG59KTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGluaXRpYWwgaW5wdXQgc3R5bGVcbiAqIEByZXR1cm4gT2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpIHtcbiAgcmV0dXJuIHtcbiAgICBhY2Nlc3NUb2tlbjogbnVsbCxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaXNWYWxpZDogZmFsc2UsXG4gICAgbGFiZWw6IG51bGwsXG4gICAgc3R5bGU6IG51bGwsXG4gICAgdXJsOiBudWxsLFxuICAgIGljb246IG51bGwsXG4gICAgY3VzdG9tOiB0cnVlXG4gIH07XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@carto/kepler.gl",
|
|
3
3
|
"author": "CARTO",
|
|
4
4
|
"homepage": "https://github.com/CartoDB/carto-kepler#readme",
|
|
5
|
-
"version": "0.0.69-alpha.hackathon-3dtiles.
|
|
5
|
+
"version": "0.0.69-alpha.hackathon-3dtiles.9",
|
|
6
6
|
"description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"main": "dist/index.js",
|
|
@@ -97,7 +97,7 @@ export function mapStyleChange(
|
|
|
97
97
|
|
|
98
98
|
/** SET_TILES_3D_SKETCH_VALUE */
|
|
99
99
|
export type SetTiles3dSketchValueActionUpdaterAction = {
|
|
100
|
-
payload: {inkStrength: number; hue: number; hueSaturation: number};
|
|
100
|
+
payload: {inkStrength: number; hue: number; hueSaturation: number; dotScreen: boolean};
|
|
101
101
|
};
|
|
102
102
|
export function setTiles3dSketchValue(
|
|
103
103
|
sketchValue: SetTiles3dSketchValueActionUpdaterAction['payload']
|
|
@@ -104,6 +104,7 @@ export const mapStyleChange = createAction(ActionTypes.MAP_STYLE_CHANGE, styleTy
|
|
|
104
104
|
* @param sketchValue.inkStrength - 0.01 - 1.0
|
|
105
105
|
* @param sketchValue.hue - 0.01 - 1.0
|
|
106
106
|
* @param sketchValue.hueSaturation - 0.01 - 1.0
|
|
107
|
+
* @param sketchValue.dotScreen - true | false
|
|
107
108
|
* @type {typeof import('./map-style-actions').setTiles3dSketchValue}
|
|
108
109
|
* @public
|
|
109
110
|
*/
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
PostProcessEffect,
|
|
33
33
|
_SunLight
|
|
34
34
|
} from '@deck.gl/core';
|
|
35
|
-
import {brightnessContrast, hueSaturation, ink, vibrance} from '@luma.gl/shadertools';
|
|
35
|
+
import {brightnessContrast, hueSaturation, ink, dotScreen, vibrance} from '@luma.gl/shadertools';
|
|
36
36
|
import {SolidPolygonLayer} from '@deck.gl/layers';
|
|
37
37
|
import {TileLayer} from '@deck.gl/geo-layers';
|
|
38
38
|
import {errorNotification} from 'utils/notifications-utils';
|
|
@@ -431,6 +431,15 @@ export default function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
431
431
|
vibranceEffect,
|
|
432
432
|
inkEffect
|
|
433
433
|
];
|
|
434
|
+
const dotScreenValue = mapStyle.sketchValue?.dotScreen || false;
|
|
435
|
+
if (dotScreenValue) {
|
|
436
|
+
const dotScreenEffect = new PostProcessEffect(dotScreen, {
|
|
437
|
+
center: [0.5, 0.5],
|
|
438
|
+
angle: Math.PI * 0.5,
|
|
439
|
+
size: 1
|
|
440
|
+
});
|
|
441
|
+
allEffects.push(dotScreenEffect);
|
|
442
|
+
}
|
|
434
443
|
|
|
435
444
|
return allEffects;
|
|
436
445
|
}
|
|
@@ -51,7 +51,7 @@ export type MapStyle = {
|
|
|
51
51
|
inputStyle: InputStyle;
|
|
52
52
|
threeDBuildingColor: RGBColor;
|
|
53
53
|
custom3DBuildingColor: boolean;
|
|
54
|
-
sketchValue: {inkStrength: number; hue: number; hueSaturation: number};
|
|
54
|
+
sketchValue: {inkStrength: number; hue: number; hueSaturation: number; dotScreen: boolean};
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
export const INITIAL_MAP_STYLE: MapStyle;
|
|
@@ -118,7 +118,7 @@ const mapStyleUpdaters = null;
|
|
|
118
118
|
* @memberof mapStyleUpdaters
|
|
119
119
|
* @constant
|
|
120
120
|
* @property styleType - Default: `'dark'`
|
|
121
|
-
* @property sketchValue - Default: {inkStrength: 0.2; hue: 0; hueSaturation: 0.3};
|
|
121
|
+
* @property sketchValue - Default: {inkStrength: 0.2; hue: 0; hueSaturation: 0.3; dotScreen: false};
|
|
122
122
|
* @property visibleLayerGroups - Default: `{}`
|
|
123
123
|
* @property topLayerGroups - Default: `{}`
|
|
124
124
|
* @property mapStyles - mapping from style key to style object
|