0) {\n scale = 1 / part;\n }\n for (var i = 0; i < points.length - 3;) {\n //起始点\n var pointS = points[i];\n //第一个控制点\n var pointC1 = points[i + 1];\n //第二个控制点\n var pointC2 = points[i + 2];\n //结束点\n var pointE = points[i + 3];\n bezierPts.push(pointS);\n for (var t = 0; t < 1;) {\n //三次贝塞尔曲线公式\n var x = (1 - t) * (1 - t) * (1 - t) * pointS.x + 3 * t * (1 - t) * (1 - t) * pointC1.x + 3 * t * t * (1 - t) * pointC2.x + t * t * t * pointE.x;\n var y = (1 - t) * (1 - t) * (1 - t) * pointS.y + 3 * t * (1 - t) * (1 - t) * pointC1.y + 3 * t * t * (1 - t) * pointC2.y + t * t * t * pointE.y;\n var point = {\n x: x,\n y: y\n };\n bezierPts.push(point);\n t += scale;\n }\n i += 3;\n if (i >= points.length) {\n bezierPts.push(pointS);\n }\n }\n return bezierPts;\n }\n }], [{\n key: \"polygon\",\n value: function polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n var id = that.randomString();\n return viewer.entities.add(new Cesium.Entity({\n name: 'AssemblePolygon',\n id: id,\n polygon: {\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computeAssemble(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n outline: true,\n outlineColor: Cesium.Color.GREEN,\n zIndex: 99999999\n }\n }));\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawAssemble);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3QXNzZW1ibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3QXNzZW1ibGUuanM/YjkwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcblxyXG5jb25zdCB0cmFuc2Zvcm1DYXJ0ZXNpYW5Ub1dHUzg0ID0gY2FydGVzaWFuID0+IHtcclxuICBsZXQgZWxsaXBzb2lkID0gQ2VzaXVtLkVsbGlwc29pZC5XR1M4NFxyXG4gIGxldCBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuKVxyXG4gIGNvbnN0IHggPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSlcclxuICBjb25zdCB5ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICBjb25zdCB6ID0gY2FydG9ncmFwaGljLmhlaWdodFxyXG4gIHJldHVybiB7IHgsIHksIHogfVxyXG59XHJcblxyXG4vKipcclxuICogQGV4dGVuZHMgRHJhdyovXHJcbmNsYXNzIERyYXdBc3NlbWJsZSBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAcGFyYW0gW29wdGlvbnNdIHtvYmplY3R9IOmdouWxnuaAp1xyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5jb2xvcj1yZ2JhKDE4NSwxNCwxNCwwLjU4KV0ge29iamVjdH0g57q/5bGe5oCnXHJcblxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMucG9pbnRzID0gbnVsbFxyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcG9seWdvbih0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgcmV0dXJuIHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBuYW1lOiAnQXNzZW1ibGVQb2x5Z29uJyxcclxuICAgICAgICBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShlID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZUFzc2VtYmxlKHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpc05hTihhcnJbaV0ueCkpIHtcclxuICAgICAgICAgICAgICAgIGFyciA9IFtdXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGFycilcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgb3V0bGluZTogdHJ1ZSxcclxuICAgICAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLkdSRUVOLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIOW8gOWni+WKqOaAgee7mOWItumdolxyXG4gICAqIEBtZXRob2Qgc3RhcnRcclxuICAgKiBAcGFyYW0gY2Ige2Z1bmN0aW9ufSDlm57osIPlh73mlbBcclxuICAgKiBAbWVtYmVyT2YgRHJhd1BvbHlnb25cclxuICAgKiBAZXhhbXBsZSBkcmF3LnN0YXJ0KChlcnIscG9zaXRpb25zKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMudGlwVGV4dCB8fCAn5bem6ZSu56Gu5a6a77yM5Y+z6ZSu5Y+W5raI77ybJywgdGhhdC5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGF0LnNkaylcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnBvaW50c19pZHMgPSBbXSAvL+WtmOaUvuW3pumUrueCueWHu+aXtuS4tOaXtua3u+WKoOeahHBvaW5055qEaWRcclxuICAgICAgbGV0IGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCBjYWNoZV84NF9wb3NpdGlvbiA9IFtdXHJcbiAgICAgIHRoaXMuYW5jaG9ycG9pbnRzID0gW11cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGlmICghY2FydGVzaWFuKSByZXR1cm5cclxuICAgICAgICBpZiAodGhpcy5hbmNob3Jwb2ludHMubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICAgIGxldCBhcnJheSA9IFtjYWNoZV9wb3NpdGlvbnNbMF0sIGNhY2hlX3Bvc2l0aW9uc1syXSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgICAgY2IobnVsbCwgYXJyYXkpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoIWNhcnRlc2lhbiB8fCB0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAwKSByZXR1cm5cclxuICAgICAgICBpZiAoY2FjaGVfcG9zaXRpb25zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKV1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEgJiYgIUNlc2l1bS5kZWZpbmVkKHRoaXMuYXNzZW1ibGVQb2x5Z29uKSkge1xyXG4gICAgICAgICAgdGhpcy5hc3NlbWJsZVBvbHlnb24gPSBEcmF3QXNzZW1ibGUucG9seWdvbih0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5hbmNob3Jwb2ludHMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIGxldCBwbnRzID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICBwbnRzLnB1c2goW2l0ZW0ubG5nLCBpdGVtLmxhdF0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1sxXSlcclxuICAgICAgICAgICAgbGV0IGQgPSBQLlBsb3RVdGlscy5kaXN0YW5jZShwbnRzWzBdLCBtaWQpIC8gMC45XHJcbiAgICAgICAgICAgIGxldCBwbnQgPSBQLlBsb3RVdGlscy5nZXRUaGlyZFBvaW50KHBudHNbMF0sIG1pZCwgUC5Db25zdGFudHMuSEFMRl9QSSwgZCwgdHJ1ZSlcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbdGhpcy5wb3NpdGlvbnNbMF0sIHsgbG5nOiBwbnRbMF0sIGxhdDogcG50WzFdIH0sIHRoaXMucG9zaXRpb25zWzFdXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8v5pu/5o2i5Lit6Ze054K5XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNiKG51bGwpXHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgIGlmKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuYXNzZW1ibGVQb2x5Z29uKVxyXG4gICAgICAgICAgICB0aGlzLmFzc2VtYmxlUG9seWdvbiA9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSkgLy/np7vpmaRwb2ludFxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wb3AoKVxyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFuY2hvcnBvaW50cy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICBjYihudWxsLCB0aGlzLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgQ2VzaXVtLmRlZmluZWQodGhpcy5hc3NlbWJsZVBvbHlnb24pKSByZXR1cm5cclxuICAgICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIHRoaXMuYXNzZW1ibGVQb2x5Z29uID0gRHJhd0Fzc2VtYmxlLnBvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbnRvID0gJzJEJ1xyXG4gICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHJldHVyblxyXG4gICAgICAgICAgaWYgKHRoaXMuYW5jaG9ycG9pbnRzLmxlbmd0aCA9PT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICAgICAgbGV0IGFycmF5ID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgY2FjaGVfcG9zaXRpb25zWzJdLCBjYWNoZV9wb3NpdGlvbnNbMV1dXHJcbiAgICAgICAgICAgIGNiKG51bGwsIGFycmF5KVxyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGlmICghY2FydGVzaWFuIHx8IHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDApIHJldHVyblxyXG4gICAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKV1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAxICYmICFDZXNpdW0uZGVmaW5lZCh0aGlzLmFzc2VtYmxlUG9seWdvbikpIHtcclxuICAgICAgICAgICAgdGhpcy5hc3NlbWJsZVBvbHlnb24gPSBEcmF3QXNzZW1ibGUucG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5hbmNob3Jwb2ludHMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICBsZXQgcG50cyA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHBudHMucHVzaChbaXRlbS5sbmcsIGl0ZW0ubGF0XSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1sxXSlcclxuICAgICAgICAgICAgICBsZXQgZCA9IFAuUGxvdFV0aWxzLmRpc3RhbmNlKHBudHNbMF0sIG1pZCkgLyAwLjlcclxuICAgICAgICAgICAgICBsZXQgcG50ID0gUC5QbG90VXRpbHMuZ2V0VGhpcmRQb2ludChwbnRzWzBdLCBtaWQsIFAuQ29uc3RhbnRzLkhBTEZfUEksIGQsIHRydWUpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbdGhpcy5wb3NpdGlvbnNbMF0sIHsgbG5nOiBwbnRbMF0sIGxhdDogcG50WzFdIH0sIHRoaXMucG9zaXRpb25zWzFdXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+abv+aNouS4remXtOeCuVxyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50c1sxXSA9IGNhcnRlc2lhbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYihudWxsKVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5hc3NlbWJsZVBvbHlnb24pXHJcbiAgICAgICAgICAgICAgdGhpcy5hc3NlbWJsZVBvbHlnb24gPSB1bmRlZmluZWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wb3AoKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmFuY2hvcnBvaW50cy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgQ2VzaXVtLmRlZmluZWQodGhpcy5hc3NlbWJsZVBvbHlnb24pKSByZXR1cm5cclxuICAgICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAgICgobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyKSArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3Jwb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2VtYmxlUG9seWdvbiA9IERyYXdBc3NlbWJsZS5wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpO1xyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuYXNzZW1ibGVQb2x5Z29uKVxyXG4gICAgaWYgKCF0aGlzLl9pczJEICYmIHRoaXMuX3NkazJEKSB7XHJcbiAgICAgIHRoaXMuX3NkazJELnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5hc3NlbWJsZVBvbHlnb24pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBjb21wdXRlQXNzZW1ibGVQb2ludHMoYW5jaG9ycG9pbnRzKSB7XHJcbiAgLy8gICBsZXQgcG9pbnRzID0gW11cclxuXHJcbiAgLy8gICBsZXQgb3JpZ2luUCA9IHRyYW5zZm9ybUNhcnRlc2lhblRvV0dTODQoYW5jaG9ycG9pbnRzWzBdKVxyXG4gIC8vICAgbGV0IGxhc3RQID0gYW5jaG9ycG9pbnRzWzFdXHJcbiAgLy8gICAgID8gdHJhbnNmb3JtQ2FydGVzaWFuVG9XR1M4NChhbmNob3Jwb2ludHNbMV0pXHJcbiAgLy8gICAgIDogeyB4OiBvcmlnaW5QLnggKyAwLjAwMDAxLCB5OiBvcmlnaW5QLnkgKyAwLjAwMDAxLCB6OiBvcmlnaW5QLnogfVxyXG4gIC8vICAgbGV0IHZlY3Rvck9MID0geyB4OiBsYXN0UC54IC0gb3JpZ2luUC54LCB5OiBsYXN0UC55IC0gb3JpZ2luUC55IH1cclxuICAvLyAgIGxldCBkT0wgPSBNYXRoLnNxcnQodmVjdG9yT0wueCAqIHZlY3Rvck9MLnggKyB2ZWN0b3JPTC55ICogdmVjdG9yT0wueSlcclxuICAvLyAgIGxldCB2X09fUDFfbHIgPSB0aGlzLmNhbGN1bGF0ZVZlY3RvcihcclxuICAvLyAgICAgdmVjdG9yT0wsXHJcbiAgLy8gICAgIE1hdGguUEkgLyAzLFxyXG4gIC8vICAgICAoTWF0aC5zcXJ0KDMpIC8gMTIpICogZE9MXHJcbiAgLy8gICApXHJcbiAgLy8gICBsZXQgb3JpZ2luUF9QMSA9IHZfT19QMV9sclsxXVxyXG4gIC8vICAgbGV0IHAxID0geyB4OiBvcmlnaW5QLnggKyBvcmlnaW5QX1AxLngsIHk6IG9yaWdpblAueSArIG9yaWdpblBfUDEueSB9XHJcbiAgLy8gICBsZXQgcDIgPSB7IHg6IChvcmlnaW5QLnggKyBsYXN0UC54KSAvIDIsIHk6IChvcmlnaW5QLnkgKyBsYXN0UC55KSAvIDIgfVxyXG4gIC8vICAgbGV0IHZfTF9QM19sciA9IHRoaXMuY2FsY3VsYXRlVmVjdG9yKFxyXG4gIC8vICAgICB2ZWN0b3JPTCxcclxuICAvLyAgICAgKE1hdGguUEkgKiAyKSAvIDMsXHJcbiAgLy8gICAgIChNYXRoLnNxcnQoMykgLyAxMikgKiBkT0xcclxuICAvLyAgIClcclxuICAvLyAgIGxldCBsYXN0UF9QMyA9IHZfTF9QM19sclsxXVxyXG4gIC8vICAgbGV0IHAzID0geyB4OiBsYXN0UC54ICsgbGFzdFBfUDMueCwgeTogbGFzdFAueSArIGxhc3RQX1AzLnkgfVxyXG4gIC8vICAgbGV0IHZfT19QNV9sciA9IHRoaXMuY2FsY3VsYXRlVmVjdG9yKHZlY3Rvck9MLCBNYXRoLlBJIC8gMiwgKDEgLyAyKSAqIGRPTClcclxuICAvLyAgIGxldCB2X09fUDUgPSB2X09fUDVfbHJbMF1cclxuICAvLyAgIGxldCBwNSA9IHsgeDogdl9PX1A1LnggKyBwMi54LCB5OiB2X09fUDUueSArIHAyLnkgfVxyXG4gIC8vICAgbGV0IHAwID0gb3JpZ2luUFxyXG4gIC8vICAgbGV0IHA0ID0gbGFzdFBcclxuICAvLyAgIHBvaW50cy5wdXNoKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpXHJcbiAgLy8gICBjb25zdCBjbG9zZUNhcmRpbmFsID0gdGhpcy5jcmVhdGVDbG9zZUNhcmRpbmFsKHBvaW50cylcclxuICAvLyAgIGNvbnN0IGZiX3BvaW50cyA9IHRoaXMuY2FsY3VsYXRlUG9pbnRzRkJaMyhjbG9zZUNhcmRpbmFsLCAxMDApXHJcbiAgLy8gICBsZXQgcmVzdWx0ID0gW11cclxuICAvLyAgIGxldCByZXN1bHQyID0gW11cclxuICAvLyAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmYl9wb2ludHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgLy8gICAgIGNvbnN0IGVsZSA9IGZiX3BvaW50c1tpbmRleF1cclxuICAvLyAgICAgbGV0IG9iaiA9IHtcclxuICAvLyAgICAgICBsbmc6IGVsZS54LFxyXG4gIC8vICAgICAgIGxhdDogZWxlLnksXHJcbiAgLy8gICAgICAgYWx0OiAwXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgcmVzdWx0LnB1c2goZWxlLngsIGVsZS55LCAwKVxyXG4gIC8vICAgICByZXN1bHQyLnB1c2gob2JqKVxyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdDJcclxuICAvLyAgIHRoaXMucG9pbnRzID0gcmVzdWx0XHJcbiAgLy8gfVxyXG5cclxuICAvLyBjb21wdXRlQXNzZW1ibGVQb2ludHMyKGFuY2hvcnBvaW50cykge1xyXG4gIC8vICAgbGV0IHBvaW50cyA9IGFuY2hvcnBvaW50cy5sZW5ndGg7XHJcbiAgLy8gICBpZiAocG9pbnRzIDwgMikge1xyXG4gIC8vICAgICByZXR1cm4gZmFsc2VcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIGxldCBwbnRzID0gbmV3IEFycmF5KCk7XHJcbiAgLy8gICAgIGFuY2hvcnBvaW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgLy8gICAgICAgbGV0IHBvc0xvbkxhdCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpOztcclxuICAvLyAgICAgICBwbnRzLnB1c2goW3Bvc0xvbkxhdC5sbmcsIHBvc0xvbkxhdC5sYXRdKTtcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICAgIC8vY29uc29sZS5sb2coXCJwbnRzNjY2NlwiLHBudHMpO1xyXG4gIC8vICAgICAvLyBwbnRzLnB1c2godGFpbFBvaW50KTtcclxuICAvLyAgICAgLy8gcG50cy5wdXNoKGhlYWRlclBvaW50KTtcclxuXHJcbiAgLy8gICAgIGlmIChwbnRzLmxlbmd0aCA9PT0gMikge1xyXG4gIC8vICAgICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1sxXSlcclxuICAvLyAgICAgICAvL2xldCBkID0gdXRpbHMuTWF0aERpc3RhbmNlKHBudHNbMF0sIG1pZCkgLyAwLjlcclxuICAvLyAgICAgICBsZXQgZCA9IFAuUGxvdFV0aWxzLmRpc3RhbmNlKHBudHNbMF0sIG1pZCkgLyAwLjlcclxuICAvLyAgICAgICAvL2NvbnNvbGUubG9nKFwiZFwiLGQpO1xyXG4gIC8vICAgICAgIGxldCBwbnQgPSBQLlBsb3RVdGlscy5nZXRUaGlyZFBvaW50KHBudHNbMF0sIG1pZCwgUC5Db25zdGFudHMuSEFMRl9QSSwgZCwgdHJ1ZSlcclxuICAvLyAgICAgICBwbnRzID0gW3BudHNbMF0sIHBudCwgcG50c1sxXV07XHJcbiAgLy8gICAgICAgLy9jb25zb2xlLmxvZyhcInBudFwiLHBudCk7XHJcbiAgLy8gICAgICAgLy9jcmVhdGVQb2ludChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwbnRbMF0sIHBudFsxXSkpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGxldCBtaWQgPSBQLlBsb3RVdGlscy5taWQocG50c1swXSwgcG50c1syXSlcclxuICAvLyAgICAgcG50cy5wdXNoKG1pZCwgcG50c1swXSwgcG50c1sxXSlcclxuXHJcbiAgLy8gICAgIGxldCBbbm9ybWFscywgcG50MSwgcG50MiwgcG50MywgcmVzdWx0LCByZXN1bHQyXSA9IFtbXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW10sIFtdXVxyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBudHMubGVuZ3RoIC0gMjsgaSsrKSB7XHJcbiAgLy8gICAgICAgcG50MSA9IHBudHNbaV1cclxuICAvLyAgICAgICBwbnQyID0gcG50c1tpICsgMV1cclxuICAvLyAgICAgICBwbnQzID0gcG50c1tpICsgMl1cclxuICAvLyAgICAgICBsZXQgbm9ybWFsUG9pbnRzID0gUC5QbG90VXRpbHMuZ2V0QmlzZWN0b3JOb3JtYWxzKDAuNCwgcG50MSwgcG50MiwgcG50MylcclxuICAvLyAgICAgICBub3JtYWxzID0gbm9ybWFscy5jb25jYXQobm9ybWFsUG9pbnRzKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGxldCBjb3VudCA9IG5vcm1hbHMubGVuZ3RoXHJcbiAgLy8gICAgIG5vcm1hbHMgPSBbbm9ybWFsc1tjb3VudCAtIDFdXS5jb25jYXQobm9ybWFscy5zbGljZSgwLCBjb3VudCAtIDEpKVxyXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBudHMubGVuZ3RoIC0gMjsgaSsrKSB7XHJcbiAgLy8gICAgICAgcG50MSA9IHBudHNbaV1cclxuICAvLyAgICAgICBwbnQyID0gcG50c1tpICsgMV1cclxuICAvLyAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KFsuLi5wbnQxLCAwXSlcclxuICAvLyAgICAgICByZXN1bHQyLnB1c2goXHJcbiAgLy8gICAgICAgICB7XHJcbiAgLy8gICAgICAgICAgIGxuZzogcG50MVswXSxcclxuICAvLyAgICAgICAgICAgbGF0OiBwbnQxWzFdLFxyXG4gIC8vICAgICAgICAgICBhbHQ6IDBcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPD0gUC5Db25zdGFudHMuRklUVElOR19DT1VOVDsgdCsrKSB7XHJcbiAgLy8gICAgICAgICBsZXQgcG50ID0gUC5QbG90VXRpbHMuZ2V0Q3ViaWNWYWx1ZSh0IC8gUC5Db25zdGFudHMuRklUVElOR19DT1VOVCwgcG50MSwgbm9ybWFsc1tpICogMl0sIG5vcm1hbHNbaSAqIDIgKyAxXSwgcG50MilcclxuICAvLyAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoWy4uLnBudCwgMF0pXHJcbiAgLy8gICAgICAgICByZXN1bHQyLnB1c2goXHJcbiAgLy8gICAgICAgICAgIHtcclxuICAvLyAgICAgICAgICAgICBsbmc6IHBudFswXSxcclxuICAvLyAgICAgICAgICAgICBsYXQ6IHBudFsxXSxcclxuICAvLyAgICAgICAgICAgICBhbHQ6IDBcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgKVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KFsuLi5wbnQyLCAwXSlcclxuICAvLyAgICAgICByZXN1bHQyLnB1c2goXHJcbiAgLy8gICAgICAgICB7XHJcbiAgLy8gICAgICAgICAgIGxuZzogcG50MlswXSxcclxuICAvLyAgICAgICAgICAgbGF0OiBwbnQyWzFdLFxyXG4gIC8vICAgICAgICAgICBhbHQ6IDBcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICApXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdDJcclxuICAvLyAgICAgdGhpcy5wb2ludHMgPSByZXN1bHRcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGNhbGN1bGF0ZVZlY3Rvcih2LCB0aGV0YSwgZCkge1xyXG4gICAgaWYgKCF0aGV0YSkgdGhldGEgPSBNYXRoLlBJIC8gMlxyXG4gICAgaWYgKCFkKSBkID0gMVxyXG4gICAgbGV0IHhfMVxyXG4gICAgbGV0IHhfMlxyXG4gICAgbGV0IHlfMVxyXG4gICAgbGV0IHlfMlxyXG4gICAgbGV0IHZfbFxyXG4gICAgbGV0IHZfclxyXG4gICAgbGV0IGRfdiA9IE1hdGguc3FydCh2LnggKiB2LnggKyB2LnkgKiB2LnkpXHJcbiAgICBpZiAodi55ID09IDApIHtcclxuICAgICAgeF8xID0geF8yID0gKGRfdiAqIGQgKiBNYXRoLmNvcyh0aGV0YSkpIC8gdi54XHJcbiAgICAgIGlmICh2LnggPiAwKSB7XHJcbiAgICAgICAgeV8xID0gTWF0aC5zcXJ0KGQgKiBkIC0geF8xICogeF8xKVxyXG4gICAgICAgIHlfMiA9IC15XzFcclxuICAgICAgfSBlbHNlIGlmICh2LnggPCAwKSB7XHJcbiAgICAgICAgeV8yID0gTWF0aC5zcXJ0KGQgKiBkIC0geF8xICogeF8xKVxyXG4gICAgICAgIHlfMSA9IC15XzJcclxuICAgICAgfVxyXG4gICAgICB2X2wgPSB7IHg6IHhfMSwgeTogeV8xIH1cclxuICAgICAgdl9yID0geyB4OiB4XzIsIHk6IHlfMiB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbiA9IC12LnggLyB2LnlcclxuICAgICAgbGV0IG0gPSAoZCAqIGRfdiAqIE1hdGguY29zKHRoZXRhKSkgLyB2LnlcclxuICAgICAgbGV0IGEgPSAxICsgbiAqIG5cclxuICAgICAgbGV0IGIgPSAyICogbiAqIG1cclxuICAgICAgbGV0IGMgPSBtICogbSAtIGQgKiBkXHJcbiAgICAgIHhfMSA9ICgtYiAtIE1hdGguc3FydChiICogYiAtIDQgKiBhICogYykpIC8gKDIgKiBhKVxyXG4gICAgICB4XzIgPSAoLWIgKyBNYXRoLnNxcnQoYiAqIGIgLSA0ICogYSAqIGMpKSAvICgyICogYSlcclxuICAgICAgeV8xID0gbiAqIHhfMSArIG1cclxuICAgICAgeV8yID0gbiAqIHhfMiArIG1cclxuICAgICAgaWYgKHYueSA+PSAwKSB7XHJcbiAgICAgICAgdl9sID0geyB4OiB4XzEsIHk6IHlfMSB9XHJcbiAgICAgICAgdl9yID0geyB4OiB4XzIsIHk6IHlfMiB9XHJcbiAgICAgIH0gZWxzZSBpZiAodi55IDwgMCkge1xyXG4gICAgICAgIHZfbCA9IHsgeDogeF8yLCB5OiB5XzIgfVxyXG4gICAgICAgIHZfciA9IHsgeDogeF8xLCB5OiB5XzEgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW3ZfbCwgdl9yXVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ2xvc2VDYXJkaW5hbChwb2ludHMpIHtcclxuICAgIGlmIChwb2ludHMgPT0gbnVsbCB8fCBwb2ludHMubGVuZ3RoIDwgMykge1xyXG4gICAgICByZXR1cm4gcG9pbnRzXHJcbiAgICB9XHJcbiAgICAvL+iOt+WPlui1t+eCue+8jOS9nOS4uue7iOeCue+8jOS7pemXreWQiOabsue6v+OAglxyXG4gICAgbGV0IGxhc3RQID0gcG9pbnRzWzBdXHJcbiAgICBwb2ludHMucHVzaChsYXN0UClcclxuICAgIC8v5a6a5LmJ5Lyg5YWl55qE54K55pWw57uE77yM5bCG5Zyo54K55pWw57uE5Lit5aSu77yI5q+P5Lik5Liq54K577yJ5o+S5YWl5Lik5Liq5o6n5Yi254K5XHJcbiAgICBsZXQgY1BvaW50cyA9IHBvaW50c1xyXG4gICAgLy/ljIXlkKvovpPlhaXngrnlkozmjqfliLbngrnnmoTmlbDnu4RcclxuICAgIGxldCBjYXJkaW5hbFBvaW50cyA9IFtdXHJcbiAgICAvL+iHs+WwkeS4ieS4queCueS7peS4ilxyXG4gICAgLy/ov5nkupvpg73mmK/nm7jlhbPotYTmlpnmtYvlh7rnmoTnu4/pqozmlbDlgLxcclxuICAgIC8v5a6a5LmJ5byg5Yqb57O75pWw77yM5Y+W5YC85ZyoMDx0PDAuNVxyXG4gICAgbGV0IHQgPSAwLjRcclxuICAgIC8v5Li656uv54K55byg5Yqb57O75pWw5Zug5a2Q77yM5Y+W5YC85ZyoMDxiPDFcclxuICAgIC8vIGxldCBiID0gMC41O1xyXG4gICAgLy/or6/lt67mjqfliLbvvIzmmK/kuIDkuKrlpKfkuo7nrYnkuo4w55qE5pWw77yM55So5LqO5LiJ54K56Z2e5bi46LaL6L+R5LiO5LiA5p2h55u057q/5pe277yM5YeP5bCR6K6h566X6YePXHJcbiAgICBsZXQgZSA9IDAuMDA1XHJcbiAgICAvL+S8oOWFpeeahOeCueaVsOmHj++8jOiHs+WwkeacieS4ieS4qu+8jG7oh7PlsJHkuLoyXHJcbiAgICBsZXQgbiA9IGNQb2ludHMubGVuZ3RoIC0gMVxyXG4gICAgLy/ku47lvIDlp4vpgY3ljobliLDlgJLmlbDnrKzkuozkuKrvvIzlhbbkuK3lgJLmlbDnrKzkuozkuKrnlKjkuo7orqHnrpfotbfngrnvvIjnu4jngrnvvInnmoTmj5LlgLzmjqfliLbngrlcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDw9IG4gLSAxOyBrKyspIHtcclxuICAgICAgbGV0IHAwLCBwMSwgcDJcclxuICAgICAgLy/orqHnrpfotbfngrnvvIjnu4jngrnvvInnmoTlt6blj7PmjqfliLbngrlcclxuICAgICAgaWYgKGsgPT0gbiAtIDEpIHtcclxuICAgICAgICAvL+S4ieS4quWfuuehgOi+k+WFpeeCuVxyXG4gICAgICAgIHAwID0gY1BvaW50c1tuIC0gMV1cclxuICAgICAgICBwMSA9IGNQb2ludHNbMF1cclxuICAgICAgICBwMiA9IGNQb2ludHNbMV1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwMCA9IGNQb2ludHNba11cclxuICAgICAgICBwMSA9IGNQb2ludHNbayArIDFdXHJcbiAgICAgICAgcDIgPSBjUG9pbnRzW2sgKyAyXVxyXG4gICAgICB9XHJcbiAgICAgIC8v5a6a5LmJcDHnmoTlt6bmjqfliLbngrnlkozlj7PmjqfliLbngrlcclxuICAgICAgbGV0IHAxbCA9IHsgeDogdW5kZWZpbmVkLCB5OiB1bmRlZmluZWQgfVxyXG4gICAgICBsZXQgcDFyID0geyB4OiB1bmRlZmluZWQsIHk6IHVuZGVmaW5lZCB9XHJcbiAgICAgIC8v6YCa6L+HcDDjgIFwMeOAgXAy6K6h566XcDHngrnnmoTlgZrmjqfliLbngrlwMWzlkozlj4jmjqfliLbngrlwMXJcclxuICAgICAgLy/orqHnrpflkJHph49wMF9wMeWSjHAxX3AyXHJcbiAgICAgIGxldCBwMF9wMSA9IHsgeDogcDEueCAtIHAwLngsIHk6IHAxLnkgLSBwMC55IH1cclxuICAgICAgbGV0IHAxX3AyID0geyB4OiBwMi54IC0gcDEueCwgeTogcDIueSAtIHAxLnkgfVxyXG4gICAgICAvL+W5tuiuoeeul+aooVxyXG4gICAgICBsZXQgZDAxID0gTWF0aC5zcXJ0KHAwX3AxLnggKiBwMF9wMS54ICsgcDBfcDEueSAqIHAwX3AxLnkpXHJcbiAgICAgIGxldCBkMTIgPSBNYXRoLnNxcnQocDFfcDIueCAqIHAxX3AyLnggKyBwMV9wMi55ICogcDFfcDIueSlcclxuICAgICAgLy/lkJHph4/ljZXkvY3ljJZcclxuICAgICAgbGV0IHAwX3AxXzEgPSB7IHg6IHAwX3AxLnggLyBkMDEsIHk6IHAwX3AxLnkgLyBkMDEgfVxyXG4gICAgICBsZXQgcDFfcDJfMSA9IHsgeDogcDFfcDIueCAvIGQxMiwgeTogcDFfcDIueSAvIGQxMiB9XHJcbiAgICAgIC8v6K6h566X5ZCR6YePcDBfcDHlkoxwMV9wMueahOWkueinkuW5s+WIhue6v+WQkemHj1xyXG4gICAgICBsZXQgcDBfcDFfcDIgPSB7IHg6IHAwX3AxXzEueCArIHAxX3AyXzEueCwgeTogcDBfcDFfMS55ICsgcDFfcDJfMS55IH1cclxuICAgICAgLy/orqHnrpflkJHph48gcDBfcDFfcDIg55qE5qihXHJcbiAgICAgIGxldCBkMDEyID0gTWF0aC5zcXJ0KHAwX3AxX3AyLnggKiBwMF9wMV9wMi54ICsgcDBfcDFfcDIueSAqIHAwX3AxX3AyLnkpXHJcbiAgICAgIC8v5Y2V5L2N5YyW5ZCR6YePcDBfcDFfcDJcclxuICAgICAgbGV0IHAwX3AxX3AyXzEgPSB7IHg6IHAwX3AxX3AyLnggLyBkMDEyLCB5OiBwMF9wMV9wMi55IC8gZDAxMiB9XHJcbiAgICAgIC8v5Yik5patcDDjgIFwMeOAgXAy5piv5ZCm5YWx57q/77yM6L+Z6YeM5Yik5a6a5ZCR6YePcDBfcDHlkoxwMV9wMueahOWkueinkueahOS9meW8puWSjDHnmoTlt67lgLzlsI/kuo5l5bCx6K6k5Li65LiJ54K55YWx57q/XHJcbiAgICAgIGxldCBjb3NFX3AwcDFwMiA9IChwMF9wMV8xLnggKiBwMV9wMl8xLnggKyBwMF9wMV8xLnkgKiBwMV9wMl8xLnkpIC8gMVxyXG4gICAgICAvL+WFsee6v1xyXG4gICAgICBpZiAoTWF0aC5hYnMoMSAtIGNvc0VfcDBwMXAyKSA8IGUpIHtcclxuICAgICAgICAvL+iuoeeul3AxbOeahOWdkOagh1xyXG4gICAgICAgIHAxbC54ID0gcDEueCAtIHAxX3AyXzEueCAqIGQwMSAqIHRcclxuICAgICAgICBwMWwueSA9IHAxLnkgLSBwMV9wMl8xLnkgKiBkMDEgKiB0XHJcbiAgICAgICAgLy/orqHnrpdwMXLnmoTlnZDmoIdcclxuICAgICAgICBwMXIueCA9IHAxLnggKyBwMF9wMV8xLnggKiBkMTIgKiB0XHJcbiAgICAgICAgcDFyLnkgPSBwMS55ICsgcDBfcDFfMS55ICogZDEyICogdFxyXG4gICAgICB9XHJcbiAgICAgIC8v6Z2e5YWx57q/XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIC8v6K6h566XcDFs55qE5Z2Q5qCHXHJcbiAgICAgICAgcDFsLnggPSBwMS54IC0gcDBfcDFfcDJfMS54ICogZDAxICogdFxyXG4gICAgICAgIHAxbC55ID0gcDEueSAtIHAwX3AxX3AyXzEueSAqIGQwMSAqIHRcclxuICAgICAgICAvL+iuoeeul3AxcueahOWdkOagh1xyXG4gICAgICAgIHAxci54ID0gcDEueCArIHAwX3AxX3AyXzEueCAqIGQxMiAqIHRcclxuICAgICAgICBwMXIueSA9IHAxLnkgKyBwMF9wMV9wMl8xLnkgKiBkMTIgKiB0XHJcbiAgICAgIH1cclxuICAgICAgLy/orrDlvZXotbfngrnvvIjnu4jngrnvvInnmoTlt6blj7Pmj5LlgLzmjqfliLbngrnlj4rlgJLmlbDnrKzkuozkuKrmjqfliLbngrlcclxuICAgICAgaWYgKGsgPT0gbiAtIDEpIHtcclxuICAgICAgICBjYXJkaW5hbFBvaW50c1swXSA9IHAxXHJcbiAgICAgICAgY2FyZGluYWxQb2ludHNbMV0gPSBwMXJcclxuICAgICAgICBjYXJkaW5hbFBvaW50c1sobiAtIDIpICogMyArIDIgKyAzXSA9IHAxbFxyXG4gICAgICAgIGNhcmRpbmFsUG9pbnRzWyhuIC0gMikgKiAzICsgMiArIDRdID0gY1BvaW50c1tuXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8v6K6w5b2V5LiL6L+Z5LiJ5Liq5o6n5Yi254K5XHJcbiAgICAgICAgY2FyZGluYWxQb2ludHNbayAqIDMgKyAyICsgMF0gPSBwMWxcclxuICAgICAgICBjYXJkaW5hbFBvaW50c1trICogMyArIDIgKyAxXSA9IHAxXHJcbiAgICAgICAgY2FyZGluYWxQb2ludHNbayAqIDMgKyAyICsgMl0gPSBwMXJcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhcmRpbmFsUG9pbnRzXHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVQb2ludHNGQlozKHBvaW50cywgcGFydCkge1xyXG4gICAgaWYgKCFwYXJ0KSBwYXJ0ID0gMjBcclxuICAgIC8v6I635Y+W5b6F5ouG5YiG55qE54K5XHJcbiAgICBsZXQgYmV6aWVyUHRzID0gW11cclxuICAgIGxldCBzY2FsZSA9IDAuMDVcclxuICAgIGlmIChwYXJ0ID4gMCkge1xyXG4gICAgICBzY2FsZSA9IDEgLyBwYXJ0XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAzOykge1xyXG4gICAgICAvL+i1t+Wni+eCuVxyXG4gICAgICBsZXQgcG9pbnRTID0gcG9pbnRzW2ldXHJcbiAgICAgIC8v56ys5LiA5Liq5o6n5Yi254K5XHJcbiAgICAgIGxldCBwb2ludEMxID0gcG9pbnRzW2kgKyAxXVxyXG4gICAgICAvL+esrOS6jOS4quaOp+WItueCuVxyXG4gICAgICBsZXQgcG9pbnRDMiA9IHBvaW50c1tpICsgMl1cclxuICAgICAgLy/nu5PmnZ/ngrlcclxuICAgICAgbGV0IHBvaW50RSA9IHBvaW50c1tpICsgM11cclxuICAgICAgYmV6aWVyUHRzLnB1c2gocG9pbnRTKVxyXG4gICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IDE7KSB7XHJcbiAgICAgICAgLy/kuInmrKHotJ3loZ7lsJTmm7Lnur/lhazlvI9cclxuICAgICAgICBsZXQgeCA9XHJcbiAgICAgICAgICAoMSAtIHQpICogKDEgLSB0KSAqICgxIC0gdCkgKiBwb2ludFMueCArXHJcbiAgICAgICAgICAzICogdCAqICgxIC0gdCkgKiAoMSAtIHQpICogcG9pbnRDMS54ICtcclxuICAgICAgICAgIDMgKiB0ICogdCAqICgxIC0gdCkgKiBwb2ludEMyLnggK1xyXG4gICAgICAgICAgdCAqIHQgKiB0ICogcG9pbnRFLnhcclxuICAgICAgICBsZXQgeSA9XHJcbiAgICAgICAgICAoMSAtIHQpICogKDEgLSB0KSAqICgxIC0gdCkgKiBwb2ludFMueSArXHJcbiAgICAgICAgICAzICogdCAqICgxIC0gdCkgKiAoMSAtIHQpICogcG9pbnRDMS55ICtcclxuICAgICAgICAgIDMgKiB0ICogdCAqICgxIC0gdCkgKiBwb2ludEMyLnkgK1xyXG4gICAgICAgICAgdCAqIHQgKiB0ICogcG9pbnRFLnlcclxuICAgICAgICBsZXQgcG9pbnQgPSB7IHg6IHgsIHk6IHkgfVxyXG4gICAgICAgIGJlemllclB0cy5wdXNoKHBvaW50KVxyXG4gICAgICAgIHQgKz0gc2NhbGVcclxuICAgICAgfVxyXG4gICAgICBpICs9IDNcclxuICAgICAgaWYgKGkgPj0gcG9pbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIGJlemllclB0cy5wdXNoKHBvaW50UylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJlemllclB0c1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRHJhd0Fzc2VtYmxlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXpsQkE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFva0JBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawAssemble.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawAttackArrow.js":
-/*!*************************************!*\
- !*** ./src/Draw/drawAttackArrow.js ***!
- \*************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawAttackArrow; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: drawAttackArrow\r\n * @author: Administrator\r\n * @date: 2022-06-15 16:38\r\n * @description:drawAttackArrow\r\n * @update: 2022-06-15 16:38\r\n */\n\n\n\nvar DrawAttackArrow = /*#__PURE__*/function (_Draw) {\n function DrawAttackArrow(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawAttackArrow);\n return _callSuper(this, DrawAttackArrow, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawAttackArrow, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawAttackArrow, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawAttackArrow, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var isMove = false;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n var pos84 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n var lastPos84 = cache_positions[cache_positions.length - 1];\n if (lastPos84 && lastPos84.lng === pos84.lng && lastPos84.lat === pos84.lat) {\n return;\n }\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(pos84);\n isMove = false;\n cb(cache_positions.length);\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n if (isMove) {\n _this.positions.pop();\n }\n cb(null, _this.positions, c);\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n isMove = true;\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, _this.positions, c);\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n isMove = false;\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.event2D.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n if (isMove) {\n _this.positions.pop();\n }\n cb(null, _this.positions, c);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n isMove = true;\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, _this.positions, c);\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawAttackArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_arrow_polygon\",\n value: function create_arrow_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.entityHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computeAttackArrow(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3QXR0YWNrQXJyb3cuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3QXR0YWNrQXJyb3cuanM/ZGQ0YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGRyYXdBdHRhY2tBcnJvd1xyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA2LTE1IDE2OjM4XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmRyYXdBdHRhY2tBcnJvd1xyXG4gKiBAdXBkYXRlOiAyMDIyLTA2LTE1IDE2OjM4XHJcbiAqL1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmF3QXR0YWNrQXJyb3cgZXh0ZW5kcyBEcmF3IHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9hcnJvd19wb2x5Z29uKHRoYXQsIHZpZXdlciA9IHRoYXQudmlld2VyKSB7XHJcbiAgICB0aGF0LmVudGl0eUhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZUF0dGFja0Fycm93KHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpc05hTihhcnJbaV0ueCkpIHtcclxuICAgICAgICAgICAgICAgIGFyciA9IFtdXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGFycilcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcblxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7noa7lrprvvIzlj7PplK7nu5PmnZ/vvJtDVFJMK+WPs+mUruaSpOmUgCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW10gLy/lrZjmlL7lt6bplK7ngrnlh7vml7bkuLTml7bmt7vliqDnmoRwb2ludOeahGlkXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgaXNNb3ZlID0gZmFsc2VcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGludG8gPSAnM0QnXHJcbiAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIGxldCBsYXN0UG9zODQgPSBjYWNoZV9wb3NpdGlvbnNbY2FjaGVfcG9zaXRpb25zLmxlbmd0aCAtIDFdXHJcbiAgICAgICAgaWYobGFzdFBvczg0ICYmIChsYXN0UG9zODQubG5nID09PSBwb3M4NC5sbmcgJiYgbGFzdFBvczg0LmxhdCA9PT0gcG9zODQubGF0KSkge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3QXR0YWNrQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHBvczg0KVxyXG4gICAgICAgIGlzTW92ZSA9IGZhbHNlXHJcbiAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYyA9IFtdXHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaChpdCA9PiB7XHJcbiAgICAgICAgICAgIGMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0LCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgaWYgKGlzTW92ZSkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMucG9wKClcclxuICAgICAgICB9XHJcbiAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMsIGMpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpc01vdmUgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KFxyXG4gICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIClcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoKCkgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgbGV0IGMgPSBbXVxyXG4gICAgICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMsIGMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3QXR0YWNrQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoXHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3QXR0YWNrQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICBpc01vdmUgPSBmYWxzZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGMgPSBbXVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLmV2ZW50MkQudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5wb2ludHNfaWRzWzBdKS5wb2x5Z29uLmhpZXJhcmNoeS5nZXRWYWx1ZSgpLnBvc2l0aW9uc1xyXG4gICAgICAgICAgICBwb3NpdGlvbnMuZm9yRWFjaChpdCA9PiB7XHJcbiAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGlmIChpc01vdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNiKG51bGwsIHRoaXMucG9zaXRpb25zLCBjKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpc01vdmUgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoXHJcbiAgICAgICAgICAgIHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIClcclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMucG9pbnRzX2lkc1swXSkucG9seWdvbi5oaWVyYXJjaHkuZ2V0VmFsdWUoKS5wb3NpdGlvbnNcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKGl0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgICBjYihudWxsLCB0aGlzLnBvc2l0aW9ucywgYylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd0F0dGFja0Fycm93LmNyZWF0ZV9hcnJvd19wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgICAgKChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIpICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTVQQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawAttackArrow.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawCircle.js":
-/*!********************************!*\
- !*** ./src/Draw/drawCircle.js ***!
- \********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawCircle; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: drawCircle\r\n * @author: Administrator\r\n * @date: 2022-06-15 14:55\r\n * @description:drawCircle\r\n * @update: 2022-06-15 14:55\r\n */\n\n\n\nvar DrawCircle = /*#__PURE__*/function (_Draw) {\n function DrawCircle(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawCircle);\n return _callSuper(this, DrawCircle, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawCircle, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawCircle, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var createCirclePolygon = function createCirclePolygon() {\n var viewer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : that.viewer;\n var a = viewer.entities.add(new Cesium.Entity({\n id: that.circle_id,\n position: new Cesium.CallbackProperty(function (e) {\n if (endpoint) {\n var c = that.computeMidpoint(center, endpoint);\n return Cesium.Cartesian3.fromDegrees(c.lng, c.lat, endpoint.alt);\n } else {\n return Cesium.Cartesian3();\n }\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function (e) {\n if (radius > 1000) {\n return '半径:' + (radius / 1000).toFixed(2) + ' 公里';\n }\n return '半径:' + radius + ' 米';\n }, false),\n font: '20px Microsoft YaHei',\n distanceDisplayCondition: 10000000,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n fillColor: Cesium.Color.fromCssColorString('#f5ce0a'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE\n },\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(positions));\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return radius_points;\n }, false),\n width: 2,\n material: Cesium.Color.fromCssColorString('#c1c505').withAlpha(0.5),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n };\n _superPropGet(DrawCircle, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键开始,右键取消', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n var clickNum = 0;\n this.circle_id = this.randomString(); //圆id\n var radius_points = [];\n var cache_points = [];\n var radius = 1; //默认半径\n var positions = [];\n var center = {};\n var endpoint = null;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n positions = _this.createCircle(center, 0.01);\n cache_points.push(cartesian);\n createCirclePolygon();\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (clickNum) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this.point_id) {\n _this.remove_entity(_this.circle_id);\n _this.remove_entity(_this.point_id);\n _this.point_id = null;\n cache_points = [];\n radius_points = [];\n positions = [];\n center = {};\n endpoint = null;\n clickNum = 0;\n cb(clickNum);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_points.push(cartesian);\n createCirclePolygon();\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian, _this._sdk2D.viewer);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n positions = _this.createCircle(center, 0.01);\n cache_points.push(cartesian);\n createCirclePolygon(_this._sdk2D.viewer);\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n if (clickNum) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.tip.set_text(_this.tipText || '再次左键,完成绘制;右键取消');\n clickNum++;\n if (clickNum === 1) {\n _this.point_id = _this.create_point(cartesian, _this._sdk2D.viewer);\n center = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_points.push(cartesian);\n createCirclePolygon(_this._sdk2D.viewer);\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n cb(clickNum);\n }\n if (clickNum === 2) {\n radius_points = cache_points.concat(cartesian);\n endpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n radius = _this.computeDistance2([center, endpoint]);\n positions = _this.createCircle(center, radius);\n _this.end();\n cb(null, {\n center: center,\n radius: Number(radius)\n });\n }\n }\n });\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this.point_id) {\n _this.remove_entity(_this.circle_id);\n _this.remove_entity(_this.point_id);\n _this.point_id = null;\n cache_points = [];\n radius_points = [];\n positions = [];\n center = {};\n endpoint = null;\n clickNum = 0;\n cb(clickNum);\n }\n });\n }\n var that = this;\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n this.remove_entity(this.circle_id);\n this.remove_entity(this.point_id);\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.event2D && this.event2D.destroy();\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3Q2lyY2xlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RyYXcvZHJhd0NpcmNsZS5qcz9jYmFmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogZHJhd0NpcmNsZVxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA2LTE1IDE0OjU1XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmRyYXdDaXJjbGVcclxuICogQHVwZGF0ZTogMjAyMi0wNi0xNSAxNDo1NVxyXG4gKi9cclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJhd0NpcmNsZSBleHRlbmRzIERyYXcge1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICBzdGFydChjYikge1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7lvIDlp4vvvIzlj7PplK7lj5bmtognLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICBsZXQgY2xpY2tOdW0gPSAwXHJcbiAgICAgIHRoaXMuY2lyY2xlX2lkID0gdGhpcy5yYW5kb21TdHJpbmcoKSAvL+WchmlkXHJcbiAgICAgIGxldCByYWRpdXNfcG9pbnRzID0gW11cclxuICAgICAgbGV0IGNhY2hlX3BvaW50cyA9IFtdXHJcbiAgICAgIGxldCByYWRpdXMgPSAxIC8v6buY6K6k5Y2K5b6EXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2VudGVyID0ge31cclxuICAgICAgbGV0IGVuZHBvaW50ID0gbnVsbFxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGludG8gPSAnM0QnXHJcbiAgICAgICAgdGhpcy50aXAuc2V0X3RleHQodGhpcy50aXBUZXh0IHx8ICflho3mrKHlt6bplK7vvIzlrozmiJDnu5jliLbvvJvlj7PplK7lj5bmtognKVxyXG4gICAgICAgIGNsaWNrTnVtKytcclxuICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgIHRoaXMucG9pbnRfaWQgPSB0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICBjZW50ZXIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIDAuMDEpXHJcbiAgICAgICAgICBjYWNoZV9wb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICBjcmVhdGVDaXJjbGVQb2x5Z29uKClcclxuICAgICAgICAgIGNiKGNsaWNrTnVtKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgIHJhZGl1c19wb2ludHMgPSBjYWNoZV9wb2ludHMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgcmFkaXVzKVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIHJhZGl1czogTnVtYmVyKHJhZGl1cykgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoY2xpY2tOdW0pIHtcclxuICAgICAgICAgIHJhZGl1c19wb2ludHMgPSBjYWNoZV9wb2ludHMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgcmFkaXVzKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludF9pZCkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuY2lyY2xlX2lkKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRfaWQpXHJcbiAgICAgICAgICB0aGlzLnBvaW50X2lkID0gbnVsbFxyXG4gICAgICAgICAgY2FjaGVfcG9pbnRzID0gW11cclxuICAgICAgICAgIHJhZGl1c19wb2ludHMgPSBbXVxyXG4gICAgICAgICAgcG9zaXRpb25zID0gW11cclxuICAgICAgICAgIGNlbnRlciA9IHt9XHJcbiAgICAgICAgICBlbmRwb2ludCA9IG51bGxcclxuICAgICAgICAgIGNsaWNrTnVtID0gMFxyXG4gICAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KHRoaXMudGlwVGV4dCB8fCAn5YaN5qyh5bem6ZSu77yM5a6M5oiQ57uY5Yi277yb5Y+z6ZSu5Y+W5raIJylcclxuICAgICAgICAgICAgY2xpY2tOdW0rK1xyXG4gICAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50X2lkID0gdGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIGNlbnRlciA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICBjYWNoZV9wb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgY3JlYXRlQ2lyY2xlUG9seWdvbigpXHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgICAgICByYWRpdXNfcG9pbnRzID0gY2FjaGVfcG9pbnRzLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgICAgICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIHJhZGl1cylcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIHJhZGl1czogTnVtYmVyKHJhZGl1cykgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCh0aGlzLnRpcFRleHQgfHwgJ+WGjeasoeW3pumUru+8jOWujOaIkOe7mOWItu+8m+WPs+mUruWPlua2iCcpXHJcbiAgICAgICAgICBjbGlja051bSsrXHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2ludF9pZCA9IHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICBjZW50ZXIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgMC4wMSlcclxuICAgICAgICAgICAgY2FjaGVfcG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBjcmVhdGVDaXJjbGVQb2x5Z29uKHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgICAgcmFkaXVzX3BvaW50cyA9IGNhY2hlX3BvaW50cy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgICAgcG9zaXRpb25zID0gdGhpcy5jcmVhdGVDaXJjbGUoY2VudGVyLCByYWRpdXMpXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIHJhZGl1czogTnVtYmVyKHJhZGl1cykgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0pIHtcclxuICAgICAgICAgICAgcmFkaXVzX3BvaW50cyA9IGNhY2hlX3BvaW50cy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgcmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjZW50ZXIsIGVuZHBvaW50XSlcclxuICAgICAgICAgICAgcG9zaXRpb25zID0gdGhpcy5jcmVhdGVDaXJjbGUoY2VudGVyLCByYWRpdXMpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQodGhpcy50aXBUZXh0IHx8ICflho3mrKHlt6bplK7vvIzlrozmiJDnu5jliLbvvJvlj7PplK7lj5bmtognKVxyXG4gICAgICAgICAgICAgIGNsaWNrTnVtKytcclxuICAgICAgICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRfaWQgPSB0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNlbnRlciA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNhY2hlX3BvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICAgIGNyZWF0ZUNpcmNsZVBvbHlnb24odGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgICAgKChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIpICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGNsaWNrTnVtID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgICByYWRpdXNfcG9pbnRzID0gY2FjaGVfcG9pbnRzLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICAgIHJhZGl1cyA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbY2VudGVyLCBlbmRwb2ludF0pXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIHJhZGl1cylcclxuICAgICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgICAgIGNiKG51bGwsIHsgY2VudGVyLCByYWRpdXM6IE51bWJlcihyYWRpdXMpIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5wb2ludF9pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5jaXJjbGVfaWQpXHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50X2lkKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50X2lkID0gbnVsbFxyXG4gICAgICAgICAgICBjYWNoZV9wb2ludHMgPSBbXVxyXG4gICAgICAgICAgICByYWRpdXNfcG9pbnRzID0gW11cclxuICAgICAgICAgICAgcG9zaXRpb25zID0gW11cclxuICAgICAgICAgICAgY2VudGVyID0ge31cclxuICAgICAgICAgICAgZW5kcG9pbnQgPSBudWxsXHJcbiAgICAgICAgICAgIGNsaWNrTnVtID0gMFxyXG4gICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIFxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgdGhhdCA9IHRoaXNcclxuXHJcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNpcmNsZVBvbHlnb24odmlld2VyID0gdGhhdC52aWV3ZXIpIHtcclxuICAgICAgICBsZXQgYSA9IHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgICAgIGlkOiB0aGF0LmNpcmNsZV9pZCxcclxuICAgICAgICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChlbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGMgPSB0aGF0LmNvbXB1dGVNaWRwb2ludChjZW50ZXIsIGVuZHBvaW50KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGMubG5nLCBjLmxhdCwgZW5kcG9pbnQuYWx0KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICAgIHRleHQ6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJhZGl1cyA+IDEwMDApIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuICfljYrlvoTvvJonICsgKHJhZGl1cyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIOWFrOmHjCdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAn5Y2K5b6E77yaJyArIHJhZGl1cyArICcg57GzJ1xyXG4gICAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgICBmb250OiAnMjBweCBNaWNyb3NvZnQgWWFIZWknLFxyXG4gICAgICAgICAgICAgIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjogMTAwMDAwMDAsXHJcbiAgICAgICAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2Y1Y2UwYScpLFxyXG4gICAgICAgICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgICAgICBjbGFzc2lmaWNhdGlvblR5cGU6IENlc2l1bS5DbGFzc2lmaWNhdGlvblR5cGUuQk9USCxcclxuICAgICAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgICAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShwb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJhZGl1c19wb2ludHNcclxuICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICAgICAgbWF0ZXJpYWw6XHJcbiAgICAgICAgICAgICAgICBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjYzFjNTA1Jykud2l0aEFscGhhKDAuNSksXHJcbiAgICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmQoKSB7XHJcbiAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5jaXJjbGVfaWQpXHJcbiAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludF9pZClcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudDJEICYmIHRoaXMuZXZlbnQyRC5kZXN0cm95KClcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBcU9BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQXJSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFvREE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawCircle.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawElliptic.js":
-/*!**********************************!*\
- !*** ./src/Draw/drawElliptic.js ***!
- \**********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawElliptic; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\nvar DrawElliptic = /*#__PURE__*/function (_Draw) {\n function DrawElliptic(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawElliptic);\n return _callSuper(this, DrawElliptic, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawElliptic, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawElliptic, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var calculateElliptic = function calculateElliptic() {\n var pointA = Cesium.Cartesian3.fromDegrees(cache_84_position[0].lng, cache_84_position[0].lat);\n var pointB = Cesium.Cartesian3.fromDegrees(cache_84_position[1].lng, cache_84_position[1].lat);\n var pointC = Cesium.Cartesian3.fromDegrees(cache_84_position[2].lng, cache_84_position[2].lat);\n if (clickNum === 1) {\n distanceAB = Cesium.Cartesian3.distance(pointA, pointB);\n semiMajorAxis = distanceAB;\n semiMinorAxis = semiMajorAxis / 2;\n var _start = {\n x: center.lng,\n y: center.lat\n };\n var end = {\n x: cache_84_position[1].lng,\n y: cache_84_position[1].lat\n };\n var rad = Math.PI / 180,\n lat1 = _start.y * rad,\n lat2 = end.y * rad,\n lon1 = _start.x * rad,\n lon2 = end.x * rad;\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n var radians = Math.atan2(a, b);\n var degrees = radians % (2 * Math.PI);\n bearing = 450 - (degrees * 180 / Math.PI < 0 ? 360 + degrees * 180 / Math.PI : degrees * 180 / Math.PI);\n }\n if (clickNum === 2) {\n distanceAC = Cesium.Cartesian3.distance(pointA, pointC);\n distanceBC = Cesium.Cartesian3.distance(pointB, pointC);\n var point1 = turf.point([cache_84_position[0].lng, cache_84_position[0].lat]);\n var point2 = turf.point([cache_84_position[1].lng, cache_84_position[1].lat]);\n var point3 = turf.point([cache_84_position[2].lng, cache_84_position[2].lat]);\n var bearing1 = turf.rhumbBearing(point1, point2);\n var bearing2 = turf.rhumbBearing(point2, point3);\n var angleDiff = Math.abs(bearing1 - bearing2);\n var finalAngle = angleDiff > 180 ? 360 - angleDiff : angleDiff;\n finalAngle = 180 - finalAngle;\n semiMinorAxis = distanceBC * Math.sin(Cesium.Math.toRadians(finalAngle));\n }\n };\n var createEllipticPolygon = function createEllipticPolygon() {\n var viewer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : that.viewer;\n viewer.entities.add(new Cesium.Entity({\n id: that.elliptic_id,\n position: Cesium.Cartesian3.fromDegrees(center.lng, center.lat),\n ellipse: {\n semiMinorAxis: new Cesium.CallbackProperty(function (e) {\n return semiMinorAxis;\n }, false),\n semiMajorAxis: new Cesium.CallbackProperty(function (e) {\n return semiMajorAxis;\n }, false),\n granularity: Cesium.Math.toRadians(0.1),\n rotation: new Cesium.CallbackProperty(function (e) {\n return Cesium.Math.toRadians(bearing);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n }));\n };\n _superPropGet(DrawElliptic, \"start\", this, 3)([]);\n var into;\n this.entity_ids = [];\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键开始,右键取消', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n var clickNum = 0;\n this.elliptic_id = this.randomString(); //圆id\n var radius_points = [];\n var cache_points = [];\n var cache_84_position = [];\n var radius = 1; //默认半径\n var positions = [];\n var center;\n var semiMinorAxis = 0;\n var semiMajorAxis = 0;\n var endpoint = null;\n var distanceAB = 0;\n var distanceAC = 0;\n var distanceBC = 0;\n var bearing = 0;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this.tip.set_text('再次左键,完成绘制;右键取消');\n clickNum++;\n _this.points_ids.push(_this.create_point(cartesian));\n cache_points.push(cartesian);\n if (clickNum === 1) {\n cache_points = [cartesian, cartesian, cartesian];\n var pos84 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n center = pos84;\n cache_84_position = [pos84, pos84, pos84];\n calculateElliptic();\n createEllipticPolygon();\n }\n if (clickNum === 2) {\n cache_points[1] = cartesian;\n cache_points[2] = cartesian;\n var _pos = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_84_position[1] = _pos;\n cache_84_position[2] = _pos;\n }\n if (clickNum >= 3) {\n _this.end();\n cb(null, {\n center: center,\n bearing: bearing,\n semiMajorAxis: semiMajorAxis,\n semiMinorAxis: semiMinorAxis\n });\n } else {\n cb(clickNum);\n }\n // if (clickNum === 2) {\n // radius_points = cache_points.concat(cartesian)\n // endpoint = this.cartesian3Towgs84(cartesian, this.viewer)\n // radius = this.computeDistance([center, endpoint])\n // positions = this.createCircle(center, radius)\n // this.end()\n // cb(null, { center, radius: Number(radius) })\n // }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n cache_points[clickNum] = cartesian;\n cache_84_position[clickNum] = _this.cartesian3Towgs84(cartesian, _this.viewer);\n if (clickNum !== 0) {\n calculateElliptic();\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.remove_entity(_this.points_ids.pop());\n clickNum--;\n cb(clickNum);\n if (clickNum == 0) {\n _this.remove_entity(_this.elliptic_id);\n }\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this.tip.set_text('再次左键,完成绘制;右键取消');\n clickNum++;\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_points.push(cartesian);\n if (clickNum === 1) {\n cache_points = [cartesian, cartesian, cartesian];\n var pos84 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n center = pos84;\n cache_84_position = [pos84, pos84, pos84];\n calculateElliptic();\n createEllipticPolygon(_this._sdk2D.viewer);\n }\n if (clickNum === 2) {\n cache_points[1] = cartesian;\n cache_points[2] = cartesian;\n var _pos2 = _this.cartesian3Towgs84(cartesian, _this.viewer);\n cache_84_position[1] = _pos2;\n cache_84_position[2] = _pos2;\n }\n if (clickNum >= 3) {\n _this.end();\n cb(null, {\n center: center,\n bearing: bearing,\n semiMajorAxis: semiMajorAxis,\n semiMinorAxis: semiMinorAxis\n });\n } else {\n cb(clickNum);\n }\n // if (clickNum === 2) {\n // radius_points = cache_points.concat(cartesian)\n // endpoint = this.cartesian3Towgs84(cartesian, this.viewer)\n // radius = this.computeDistance([center, endpoint])\n // positions = this.createCircle(center, radius)\n // this.end()\n // cb(null, { center, radius: Number(radius) })\n // }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb(false);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n cache_points[clickNum] = cartesian;\n cache_84_position[clickNum] = _this.cartesian3Towgs84(cartesian, _this.viewer);\n if (clickNum !== 0) {\n calculateElliptic();\n }\n });\n }\n var that = this;\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n var _this2 = this;\n this.remove_entity(this.elliptic_id);\n this.points_ids.forEach(function (id) {\n _this2.remove_entity(id);\n });\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.event2D && this.event2D.destroy();\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3RWxsaXB0aWMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3RWxsaXB0aWMuanM/NmYwYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmF3RWxsaXB0aWMgZXh0ZW5kcyBEcmF3IHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgbGV0IGludG9cclxuICAgICAgdGhpcy5lbnRpdHlfaWRzID0gW11cclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMudGlwVGV4dCB8fCAn5bem6ZSu5byA5aeL77yM5Y+z6ZSu5Y+W5raIJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgbGV0IGNsaWNrTnVtID0gMFxyXG4gICAgICB0aGlzLmVsbGlwdGljX2lkID0gdGhpcy5yYW5kb21TdHJpbmcoKSAvL+WchmlkXHJcbiAgICAgIGxldCByYWRpdXNfcG9pbnRzID0gW11cclxuICAgICAgbGV0IGNhY2hlX3BvaW50cyA9IFtdXHJcbiAgICAgIGxldCBjYWNoZV84NF9wb3NpdGlvbiA9IFtdXHJcbiAgICAgIGxldCByYWRpdXMgPSAxIC8v6buY6K6k5Y2K5b6EXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2VudGVyXHJcbiAgICAgIGxldCBzZW1pTWlub3JBeGlzID0gMFxyXG4gICAgICBsZXQgc2VtaU1ham9yQXhpcyA9IDBcclxuICAgICAgbGV0IGVuZHBvaW50ID0gbnVsbFxyXG4gICAgICBsZXQgZGlzdGFuY2VBQiA9IDBcclxuICAgICAgbGV0IGRpc3RhbmNlQUMgPSAwXHJcbiAgICAgIGxldCBkaXN0YW5jZUJDID0gMFxyXG4gICAgICBsZXQgYmVhcmluZyA9IDBcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaW50byA9ICczRCdcclxuICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5YaN5qyh5bem6ZSu77yM5a6M5oiQ57uY5Yi277yb5Y+z6ZSu5Y+W5raIJylcclxuICAgICAgICBjbGlja051bSsrXHJcbiAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKSlcclxuICAgICAgICBjYWNoZV9wb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgaWYgKGNsaWNrTnVtID09PSAxKSB7XHJcbiAgICAgICAgICBjYWNoZV9wb2ludHMgPSBbY2FydGVzaWFuLCBjYXJ0ZXNpYW4sIGNhcnRlc2lhbl1cclxuICAgICAgICAgIGxldCBwb3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGNlbnRlciA9IHBvczg0XHJcbiAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbiA9IFtwb3M4NCwgcG9zODQsIHBvczg0XVxyXG5cclxuICAgICAgICAgIGNhbGN1bGF0ZUVsbGlwdGljKClcclxuICAgICAgICAgIGNyZWF0ZUVsbGlwdGljUG9seWdvbigpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjbGlja051bSA9PT0gMikge1xyXG4gICAgICAgICAgY2FjaGVfcG9pbnRzWzFdID0gY2FydGVzaWFuXHJcbiAgICAgICAgICBjYWNoZV9wb2ludHNbMl0gPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgIGxldCBwb3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uWzFdID0gcG9zODRcclxuICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uWzJdID0gcG9zODRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNsaWNrTnVtID49IDMpIHtcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKG51bGwsIHsgY2VudGVyLCBiZWFyaW5nLCBzZW1pTWFqb3JBeGlzLCBzZW1pTWlub3JBeGlzIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIChjbGlja051bSA9PT0gMikge1xyXG4gICAgICAgIC8vICAgcmFkaXVzX3BvaW50cyA9IGNhY2hlX3BvaW50cy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgIC8vICAgZW5kcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgLy8gICByYWRpdXMgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZShbY2VudGVyLCBlbmRwb2ludF0pXHJcbiAgICAgICAgLy8gICBwb3NpdGlvbnMgPSB0aGlzLmNyZWF0ZUNpcmNsZShjZW50ZXIsIHJhZGl1cylcclxuICAgICAgICAvLyAgIHRoaXMuZW5kKClcclxuICAgICAgICAvLyAgIGNiKG51bGwsIHsgY2VudGVyLCByYWRpdXM6IE51bWJlcihyYWRpdXMpIH0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBjYWNoZV9wb2ludHNbY2xpY2tOdW1dID0gY2FydGVzaWFuXHJcbiAgICAgICAgY2FjaGVfODRfcG9zaXRpb25bY2xpY2tOdW1dID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIGlmIChjbGlja051bSAhPT0gMCkge1xyXG4gICAgICAgICAgY2FsY3VsYXRlRWxsaXB0aWMoKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICBjbGlja051bS0tXHJcbiAgICAgICAgY2IoY2xpY2tOdW0pXHJcbiAgICAgICAgaWYoY2xpY2tOdW09PTApIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLmVsbGlwdGljX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5YaN5qyh5bem6ZSu77yM5a6M5oiQ57uY5Yi277yb5Y+z6ZSu5Y+W5raIJylcclxuICAgICAgICAgIGNsaWNrTnVtKytcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgIGNhY2hlX3BvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIGlmIChjbGlja051bSA9PT0gMSkge1xyXG4gICAgICAgICAgICBjYWNoZV9wb2ludHMgPSBbY2FydGVzaWFuLCBjYXJ0ZXNpYW4sIGNhcnRlc2lhbl1cclxuICAgICAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBjZW50ZXIgPSBwb3M4NFxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbiA9IFtwb3M4NCwgcG9zODQsIHBvczg0XVxyXG5cclxuICAgICAgICAgICAgY2FsY3VsYXRlRWxsaXB0aWMoKVxyXG4gICAgICAgICAgICBjcmVhdGVFbGxpcHRpY1BvbHlnb24odGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNsaWNrTnVtID09PSAyKSB7XHJcbiAgICAgICAgICAgIGNhY2hlX3BvaW50c1sxXSA9IGNhcnRlc2lhblxyXG4gICAgICAgICAgICBjYWNoZV9wb2ludHNbMl0gPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgICAgbGV0IHBvczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvblsxXSA9IHBvczg0XHJcbiAgICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uWzJdID0gcG9zODRcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjbGlja051bSA+PSAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXIsIGJlYXJpbmcsIHNlbWlNYWpvckF4aXMsIHNlbWlNaW5vckF4aXMgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjYihjbGlja051bSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGlmIChjbGlja051bSA9PT0gMikge1xyXG4gICAgICAgICAgLy8gICByYWRpdXNfcG9pbnRzID0gY2FjaGVfcG9pbnRzLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAvLyAgIGVuZHBvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgLy8gICByYWRpdXMgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZShbY2VudGVyLCBlbmRwb2ludF0pXHJcbiAgICAgICAgICAvLyAgIHBvc2l0aW9ucyA9IHRoaXMuY3JlYXRlQ2lyY2xlKGNlbnRlciwgcmFkaXVzKVxyXG4gICAgICAgICAgLy8gICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAvLyAgIGNiKG51bGwsIHsgY2VudGVyLCByYWRpdXM6IE51bWJlcihyYWRpdXMpIH0pXHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBjYWNoZV9wb2ludHNbY2xpY2tOdW1dID0gY2FydGVzaWFuXHJcbiAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbltjbGlja051bV0gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBpZiAoY2xpY2tOdW0gIT09IDApIHtcclxuICAgICAgICAgICAgY2FsY3VsYXRlRWxsaXB0aWMoKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgdGhhdCA9IHRoaXNcclxuXHJcbiAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZUVsbGlwdGljKCkge1xyXG4gICAgICAgIGxldCBwb2ludEEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjYWNoZV84NF9wb3NpdGlvblswXS5sbmcsIGNhY2hlXzg0X3Bvc2l0aW9uWzBdLmxhdCk7XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNhY2hlXzg0X3Bvc2l0aW9uWzFdLmxuZywgY2FjaGVfODRfcG9zaXRpb25bMV0ubGF0KTtcclxuICAgICAgICBsZXQgcG9pbnRDID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY2FjaGVfODRfcG9zaXRpb25bMl0ubG5nLCBjYWNoZV84NF9wb3NpdGlvblsyXS5sYXQpO1xyXG4gICAgICAgIGlmIChjbGlja051bSA9PT0gMSkge1xyXG4gICAgICAgICAgZGlzdGFuY2VBQiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvaW50QSwgcG9pbnRCKTtcclxuICAgICAgICAgIHNlbWlNYWpvckF4aXMgPSBkaXN0YW5jZUFCXHJcbiAgICAgICAgICBzZW1pTWlub3JBeGlzID0gc2VtaU1ham9yQXhpcyAvIDI7XHJcblxyXG4gICAgICAgICAgbGV0IHN0YXJ0ID0geyB4OiBjZW50ZXIubG5nLCB5OiBjZW50ZXIubGF0IH1cclxuICAgICAgICAgIGxldCBlbmQgPSB7IHg6IGNhY2hlXzg0X3Bvc2l0aW9uWzFdLmxuZywgeTogY2FjaGVfODRfcG9zaXRpb25bMV0ubGF0IH1cclxuXHJcbiAgICAgICAgICBsZXQgcmFkID0gTWF0aC5QSSAvIDE4MCxcclxuICAgICAgICAgICAgbGF0MSA9IHN0YXJ0LnkgKiByYWQsXHJcbiAgICAgICAgICAgIGxhdDIgPSBlbmQueSAqIHJhZCxcclxuICAgICAgICAgICAgbG9uMSA9IHN0YXJ0LnggKiByYWQsXHJcbiAgICAgICAgICAgIGxvbjIgPSBlbmQueCAqIHJhZDtcclxuICAgICAgICAgIGNvbnN0IGEgPSBNYXRoLnNpbihsb24yIC0gbG9uMSkgKiBNYXRoLmNvcyhsYXQyKTtcclxuICAgICAgICAgIGNvbnN0IGIgPVxyXG4gICAgICAgICAgICBNYXRoLmNvcyhsYXQxKSAqIE1hdGguc2luKGxhdDIpIC1cclxuICAgICAgICAgICAgTWF0aC5zaW4obGF0MSkgKiBNYXRoLmNvcyhsYXQyKSAqIE1hdGguY29zKGxvbjIgLSBsb24xKTtcclxuICAgICAgICAgIGNvbnN0IHJhZGlhbnMgPSBNYXRoLmF0YW4yKGEsIGIpXHJcbiAgICAgICAgICBjb25zdCBkZWdyZWVzID0gcmFkaWFucyAlICgyICogTWF0aC5QSSk7XHJcbiAgICAgICAgICBiZWFyaW5nID0gNDUwIC0gKChkZWdyZWVzICogMTgwKSAvIE1hdGguUEkgPCAwXHJcbiAgICAgICAgICAgID8gMzYwICsgKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSVxyXG4gICAgICAgICAgICA6IChkZWdyZWVzICogMTgwKSAvIE1hdGguUEkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2xpY2tOdW0gPT09IDIpIHtcclxuICAgICAgICAgIGRpc3RhbmNlQUMgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb2ludEEsIHBvaW50Qyk7XHJcbiAgICAgICAgICBkaXN0YW5jZUJDID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9pbnRCLCBwb2ludEMpO1xyXG5cclxuICAgICAgICAgIGxldCBwb2ludDEgPSB0dXJmLnBvaW50KFtjYWNoZV84NF9wb3NpdGlvblswXS5sbmcsIGNhY2hlXzg0X3Bvc2l0aW9uWzBdLmxhdF0pO1xyXG4gICAgICAgICAgbGV0IHBvaW50MiA9IHR1cmYucG9pbnQoW2NhY2hlXzg0X3Bvc2l0aW9uWzFdLmxuZywgY2FjaGVfODRfcG9zaXRpb25bMV0ubGF0XSk7XHJcbiAgICAgICAgICBsZXQgcG9pbnQzID0gdHVyZi5wb2ludChbY2FjaGVfODRfcG9zaXRpb25bMl0ubG5nLCBjYWNoZV84NF9wb3NpdGlvblsyXS5sYXRdKTtcclxuICAgICAgICAgIGNvbnN0IGJlYXJpbmcxID0gdHVyZi5yaHVtYkJlYXJpbmcocG9pbnQxLCBwb2ludDIpO1xyXG4gICAgICAgICAgY29uc3QgYmVhcmluZzIgPSB0dXJmLnJodW1iQmVhcmluZyhwb2ludDIsIHBvaW50Myk7XHJcbiAgICAgICAgICBjb25zdCBhbmdsZURpZmYgPSBNYXRoLmFicyhiZWFyaW5nMSAtIGJlYXJpbmcyKTtcclxuICAgICAgICAgIGxldCBmaW5hbEFuZ2xlID0gYW5nbGVEaWZmID4gMTgwID8gMzYwIC0gYW5nbGVEaWZmIDogYW5nbGVEaWZmO1xyXG4gICAgICAgICAgZmluYWxBbmdsZSA9IDE4MCAtIGZpbmFsQW5nbGVcclxuXHJcbiAgICAgICAgICBzZW1pTWlub3JBeGlzID0gZGlzdGFuY2VCQyAqIE1hdGguc2luKENlc2l1bS5NYXRoLnRvUmFkaWFucyhmaW5hbEFuZ2xlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBjcmVhdGVFbGxpcHRpY1BvbHlnb24odmlld2VyID0gdGhhdC52aWV3ZXIpIHtcclxuICAgICAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgICAgICBpZDogdGhhdC5lbGxpcHRpY19pZCxcclxuICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlci5sbmcsIGNlbnRlci5sYXQpLFxyXG4gICAgICAgICAgICBlbGxpcHNlOiB7XHJcbiAgICAgICAgICAgICAgc2VtaU1pbm9yQXhpczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VtaU1pbm9yQXhpc1xyXG4gICAgICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgICAgICBzZW1pTWFqb3JBeGlzOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZW1pTWFqb3JBeGlzXHJcbiAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgIGdyYW51bGFyaXR5OiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoMC4xKSxcclxuICAgICAgICAgICAgICByb3RhdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGJlYXJpbmcpXHJcbiAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLmVsbGlwdGljX2lkKVxyXG4gICAgdGhpcy5wb2ludHNfaWRzLmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQyRCAmJiB0aGlzLmV2ZW50MkQuZGVzdHJveSgpXHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUEwS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUF6T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFvRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawElliptic.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawPincerArrow.js":
-/*!*************************************!*\
- !*** ./src/Draw/drawPincerArrow.js ***!
- \*************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DrawPincerArrow; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: drawPincerArrow\r\n * @author: Administrator\r\n * @date: 2022-06-15 17:12\r\n * @description:drawPincerArrow\r\n * @update: 2022-06-15 17:12\r\n */\n\n\n\nvar DrawPincerArrow = /*#__PURE__*/function (_Draw) {\n function DrawPincerArrow(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawPincerArrow);\n return _callSuper(this, DrawPincerArrow, [sdk, options]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawPincerArrow, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawPincerArrow, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawPincerArrow, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键确定,右键取消;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb('取消绘制');\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb('取消绘制');\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.event2D.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb('取消绘制');\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this.points_ids.length > 1) {\n _this.remove_entity(_this.points_ids.pop()); //移除point\n cache_positions.pop();\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb('取消绘制');\n } else {\n if (!_this.entityHasCreated) {\n var polyline_id = DrawPincerArrow.create_arrow_polygon(_this, _this._sdk2D.viewer);\n _this.points_ids.push(polyline_id);\n }\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n cache_positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.positions = cache_positions.concat(_this.cartesian3Towgs84(cartesian, _this.viewer));\n _this.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (cache_positions.length === 5) {\n var c = [];\n if (_this.points_ids.length > 2) {\n var positions = _this.event2D.viewer.entities.getById(_this.points_ids[0]).polygon.hierarchy.getValue().positions;\n positions.forEach(function (it) {\n c.push(_this.cartesian3Towgs84(it, _this.viewer));\n });\n }\n _this.end();\n cb(null, cache_positions, c);\n } else {\n cb(cache_positions.length);\n }\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_arrow_polygon\",\n value: function create_arrow_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.entityHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computePincerArrow(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UGluY2VyQXJyb3cuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3UGluY2VyQXJyb3cuanM/ZjQ3NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGRyYXdQaW5jZXJBcnJvd1xyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA2LTE1IDE3OjEyXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmRyYXdQaW5jZXJBcnJvd1xyXG4gKiBAdXBkYXRlOiAyMDIyLTA2LTE1IDE3OjEyXHJcbiAqL1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmF3UGluY2VyQXJyb3cgZXh0ZW5kcyBEcmF3IHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9hcnJvd19wb2x5Z29uKHRoYXQsIHZpZXdlciA9IHRoYXQudmlld2VyKSB7XHJcbiAgICB0aGF0LmVudGl0eUhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZVBpbmNlckFycm93KHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpc05hTihhcnJbaV0ueCkpIHtcclxuICAgICAgICAgICAgICAgIGFyciA9IFtdXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KGFycilcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCh0aGlzLnRpcFRleHQgfHwgJ+W3pumUruehruWumu+8jOWPs+mUruWPlua2iO+8m0NUUkwr5Y+z6ZSu5pKk6ZSAJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnBvaW50c19pZHMgPSBbXSAvL+WtmOaUvuW3pumUrueCueWHu+aXtuS4tOaXtua3u+WKoOeahHBvaW5055qEaWRcclxuICAgICAgbGV0IGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UGluY2VyQXJyb3cuY3JlYXRlX2Fycm93X3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPT09IDUpIHtcclxuICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICAgIHBvc2l0aW9ucy5mb3JFYWNoKGl0ID0+IHtcclxuICAgICAgICAgICAgICBjLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdCwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IobnVsbCwgY2FjaGVfcG9zaXRpb25zLCBjKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICBjYign5Y+W5raI57uY5Yi2JylcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgIHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICApXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSkgLy/np7vpmaRwb2ludFxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydF9rZXlib2FyZF9jdHJsKCgpID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYign5Y+W5raI57uY5Yi2JylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQaW5jZXJBcnJvdy5jcmVhdGVfYXJyb3dfcG9seWdvbih0aGlzKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGlmIChjYWNoZV9wb3NpdGlvbnMubGVuZ3RoID09PSA1KSB7XHJcbiAgICAgICAgICAgICAgbGV0IGMgPSBbXVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5wb2ludHNfaWRzWzBdKS5wb2x5Z29uLmhpZXJhcmNoeS5nZXRWYWx1ZSgpLnBvc2l0aW9uc1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdCwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKG51bGwsIGNhY2hlX3Bvc2l0aW9ucywgYylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQaW5jZXJBcnJvdy5jcmVhdGVfYXJyb3dfcG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgIGlmIChjYWNoZV9wb3NpdGlvbnMubGVuZ3RoID09PSA1KSB7XHJcbiAgICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoaXMuZXZlbnQyRC52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLnBvaW50c19pZHNbMF0pLnBvbHlnb24uaGllcmFyY2h5LmdldFZhbHVlKCkucG9zaXRpb25zXHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXQsIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfcG9zaXRpb25zLCBjKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYign5Y+W5raI57uY5Yi2JylcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KFxyXG4gICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChcclxuICAgICAgICAgICAgICB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gIFxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IoJ+WPlua2iOe7mOWIticpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQaW5jZXJBcnJvdy5jcmVhdGVfYXJyb3dfcG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgICgobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyKSArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPT09IDUpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjID0gW11cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhpcy5ldmVudDJELnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMucG9pbnRzX2lkc1swXSkucG9seWdvbi5oaWVyYXJjaHkuZ2V0VmFsdWUoKS5wb3NpdGlvbnNcclxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0LCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgICBjYihudWxsLCBjYWNoZV9wb3NpdGlvbnMsIGMpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTdRQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawPincerArrow.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawPoint.js":
-/*!*******************************!*\
- !*** ./src/Draw/drawPoint.js ***!
- \*******************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar DrawPoint = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @desc 获取坐标点\r\n * */\n function DrawPoint(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var is2D = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawPoint);\n return _callSuper(this, DrawPoint, [sdk, options, is2D]);\n }\n\n /**\r\n * @desc 开始动态获取坐标点\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPoint\r\n * @example draw.start((err,position)=>{\r\n *\r\n * })\r\n * */\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(DrawPoint, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawPoint, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var car = undefined;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.tipText || '左键确定,右键结束;', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.sdk);\n this.event.mouse_left(function (movement, cartesian) {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p, Cesium);\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n car = cartesian;\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p, Cesium);\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n _this.end();\n cb(false);\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n car = cartesian;\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this.end();\n cb(false);\n } else {\n _this.end();\n var p = _this.cartesian3Towgs84(car || cartesian, _this.viewer);\n cb(null, p);\n }\n });\n });\n }\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n YJ.Measure.SetMeasureStatus(false);\n this.event && this.event.destroy();\n this.event2D && this.event2D.destroy();\n this.tip && this.tip.destroy();\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawPoint);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UG9pbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3UG9pbnQuanM/ZmVmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5pbXBvcnQgRHJhdyBmcm9tIFwiLi9kcmF3XCI7XHJcblxyXG5cclxuY2xhc3MgRHJhd1BvaW50IGV4dGVuZHMgRHJhdyB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2Mg6I635Y+W5Z2Q5qCH54K5XHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSwgaXMyRCA9IGZhbHNlKSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMsIGlzMkQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDlvIDlp4vliqjmgIHojrflj5blnZDmoIfngrlcclxuICAgKiBAbWV0aG9kIHN0YXJ0XHJcbiAgICogQHBhcmFtIGNiIHtmdW5jdGlvbn0g5Zue6LCD5Ye95pWwXHJcbiAgICogQG1lbWJlck9mIERyYXdQb2ludFxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbik9PntcclxuICAgKlxyXG4gICAqIH0pXHJcbiAgICogKi9cclxuXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBjYXIgPSB1bmRlZmluZWRcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMudGlwVGV4dCB8fCAn5bem6ZSu56Gu5a6a77yM5Y+z6ZSu57uT5p2f77ybJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICBjYihudWxsLCBwLCBDZXNpdW0pXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGNhciA9IGNhcnRlc2lhblxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihmYWxzZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgY2IobnVsbCwgcClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciB8fCBjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgY2IobnVsbCwgcCwgQ2VzaXVtKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYihmYWxzZSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBjYXIgPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgICBjYihudWxsLCBwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMuZXZlbnQgJiYgdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHRoaXMuZXZlbnQyRCAmJiB0aGlzLmV2ZW50MkQuZGVzdHJveSgpXHJcbiAgICB0aGlzLnRpcCAmJiB0aGlzLnRpcC5kZXN0cm95KClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IERyYXdQb2ludFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawPoint.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawPolygon.js":
-/*!*********************************!*\
- !*** ./src/Draw/drawPolygon.js ***!
- \*********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawPolygon = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 面属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawPolygon(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, DrawPolygon);\n _this = _callSuper(this, DrawPolygon, [sdk, options]);\n _this.color = options.color || 'rgba(255,0,0,0.5)';\n _this.polygonHasCreated = false;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(DrawPolygon, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(DrawPolygon, [{\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolygon\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n function start(cb) {\n var _this2 = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n this.polygonHasCreated = false;\n _superPropGet(DrawPolygon, \"start\", this, 3)([]);\n YJ.Measure.SetMeasureStatus(true);\n var into;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n cb(cache_positions.length);\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n // let positions = []\n // console.log(cache_positions)\n // cache_positions.forEach((item) => {\n // let p = this.cartesian3Towgs84(item)\n // console.log(item)\n // positions.push(p)\n // })\n cb(null, cache_84_position);\n _this2.end();\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x + _this2.viewer.canvas.width, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n cb(cache_positions.length);\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n // let positions = []\n // console.log(cache_positions)\n // cache_positions.forEach((item) => {\n // let p = this.cartesian3Towgs84(item)\n // console.log(item)\n // positions.push(p)\n // })\n cb(null, cache_84_position);\n _this2.end();\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawPolygon.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n // console.log(cache_positions)\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.polygonHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return that.positions.concat(that.positions[0]);\n }),\n width: 3,\n material: Cesium.Color.fromCssColorString(that.color).withAlpha(1),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawPolygon);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UG9seWdvbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9EcmF3L2RyYXdQb2x5Z29uLmpzPzllZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi9FdmVudCdcclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5cclxuLyoqXHJcbiAqIEBleHRlbmRzIERyYXcqL1xyXG5jbGFzcyBEcmF3UG9seWdvbiBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g6Z2i5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5jb2xvciA9IG9wdGlvbnMuY29sb3IgfHwgJ3JnYmEoMjU1LDAsMCwwLjUpJ1xyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlX3BvbHlnb24odGhhdCwgdmlld2VyID0gdGhhdC52aWV3ZXIpIHtcclxuICAgIHRoYXQucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB2aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0LnBvc2l0aW9ucylcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5jb2xvciksXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zLmNvbmNhdCh0aGF0LnBvc2l0aW9uc1swXSlcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0LmNvbG9yKS53aXRoQWxwaGEoMSksXHJcbiAgICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIOW8gOWni+WKqOaAgee7mOWItumdolxyXG4gICAqIEBtZXRob2Qgc3RhcnRcclxuICAgKiBAcGFyYW0gY2Ige2Z1bmN0aW9ufSDlm57osIPlh73mlbBcclxuICAgKiBAbWVtYmVyT2YgRHJhd1BvbHlnb25cclxuICAgKiBAZXhhbXBsZSBkcmF3LnN0YXJ0KChlcnIscG9zaXRpb25zKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBvbHlnb25IYXNDcmVhdGVkID0gZmFsc2VcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgbGV0IGludG9cclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7noa7lrprvvIzlj7PplK7nu5PmnZ/vvJtDVFJMK+WPs+mUruaSpOmUgCcsIHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhpcy5zZGspXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW10gLy/lrZjmlL7lt6bplK7ngrnlh7vml7bkuLTml7bmt7vliqDnmoRwb2ludOeahGlkXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2FjaGVfODRfcG9zaXRpb24gPSBbXVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaW50byA9ICczRCdcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICghdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlnb24uY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKSlcclxuICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGNhY2hlX3Bvc2l0aW9ucylcclxuICAgICAgICAvLyBjYWNoZV9wb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIC8vICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0pXHJcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZyhpdGVtKVxyXG4gICAgICAgIC8vICAgcG9zaXRpb25zLnB1c2gocClcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIGNiKG51bGwsIGNhY2hlXzg0X3Bvc2l0aW9uKVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhcnRlc2lhbiB9KVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoKCkgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfODRfcG9zaXRpb24pXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlnb24uY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNhY2hlX3Bvc2l0aW9ucylcclxuICAgICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhcnRlc2lhbiB9KVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQb2x5Z29uLmNyZWF0ZV9wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikpXHJcbiAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcikpXHJcbiAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAvLyBjYWNoZV9wb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSlcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coaXRlbSlcclxuICAgICAgICAgIC8vICAgcG9zaXRpb25zLnB1c2gocClcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICBjYihudWxsLCBjYWNoZV84NF9wb3NpdGlvbilcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KHsgLi4uY2FydGVzaWFuIH0pXHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wb3AoKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoKCkgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgICBjYihudWxsLCBjYWNoZV84NF9wb3NpdGlvbilcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAoKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMikgKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlnb24uY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMuX3NkazJELnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICBjYihjYWNoZV9wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IERyYXdQb2x5Z29uXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF0UUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBK09BIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawPolygon.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawPolyline.js":
-/*!**********************************!*\
- !*** ./src/Draw/drawPolyline.js ***!
- \**********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw\r\n */\nvar DrawPolyline = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 线属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n *\r\n * */\n function DrawPolyline(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawPolyline);\n _this = _callSuper(this, DrawPolyline, [sdk, options]);\n _this.options.curve = options.curve || false;\n var number = Number(options.number);\n if (!isNaN(number)) {\n if (number < 2) {\n _this.options.number = 2;\n } else {\n _this.options.number = number;\n }\n } else {\n _this.options.number = Infinity;\n }\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawPolyline, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawPolyline, [{\n key: \"smoothHandle\",\n value:\n // 平滑处理\n function smoothHandle(positions) {\n if (positions.length > 1) {\n var newPositions = [];\n var time = [];\n for (var i = 0; i < positions.length; i++) {\n time.push(i / (positions.length - 1));\n }\n var spline = new Cesium.CatmullRomSpline({\n times: time,\n points: positions\n });\n var length = positions.length * 20;\n for (var _i = 0; _i <= length; _i++) {\n var cartesian3 = spline.evaluate(_i / length);\n newPositions.push(cartesian3);\n }\n return newPositions;\n } else {\n return positions;\n }\n }\n\n /**\r\n * @desc 开始动态获绘制线\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolyline\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n }, {\n key: \"start\",\n value: function start(cb) {\n var _this2 = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawPolyline, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.tipText || '左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n\n var cache_positions = [];\n var car = undefined;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2.viewer));\n if (cache_positions.length >= _this2.options.number) {\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n } else {\n cb(cache_positions.length);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.position.x + _this2.viewer.canvas.width, movement.position.y);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.positions = cache_positions.concat(cartesian);\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cb(cache_positions.length);\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var positions = [];\n cache_positions.forEach(function (item) {\n positions.push(_this2.cartesian3Towgs84(item, _this2.viewer));\n });\n var smoothPos;\n if (_this2.options.curve) {\n var pos = _this2.smoothHandle(cache_positions);\n smoothPos = [];\n for (var i = 0; i < pos.length; i++) {\n smoothPos[i] = _this2.cartesian3Towgs84(pos[i], _this2.viewer);\n }\n }\n cb(null, positions, smoothPos);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.entityHasCreated) {\n var polyline_id = DrawPolyline.create_polyline(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n cb(cache_positions.length);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_polyline\",\n value: function create_polyline(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.entityHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n if (that.options.curve) {\n var positions = that.smoothHandle(that.positions);\n return positions;\n } else {\n return that.positions;\n }\n }, false),\n width: 5,\n material: Cesium.Color.fromCssColorString(that.color),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawPolyline);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UG9seWxpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRHJhdy9kcmF3UG9seWxpbmUuanM/MTAyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vTW91c2VUaXAnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uL0V2ZW50J1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuL2RyYXcnXHJcblxyXG4vKipcclxuICogQGV4dGVuZHMgRHJhd1xyXG4gKi9cclxuXHJcbmNsYXNzIERyYXdQb2x5bGluZSBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g57q/5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuICAgKlxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy5jdXJ2ZSA9IG9wdGlvbnMuY3VydmUgfHwgZmFsc2VcclxuICAgIGxldCBudW1iZXIgPSBOdW1iZXIob3B0aW9ucy5udW1iZXIpXHJcbiAgICBpZiAoIWlzTmFOKG51bWJlcikpIHtcclxuICAgICAgaWYgKG51bWJlciA8IDIpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMubnVtYmVyID0gMlxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5udW1iZXIgPSBudW1iZXJcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5udW1iZXIgPSBJbmZpbml0eVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5bGluZSh0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgdGhhdC5lbnRpdHlIYXNDcmVhdGVkID0gdHJ1ZVxyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmN1cnZlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQuc21vb3RoSGFuZGxlKHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbnNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgd2lkdGg6IDUsXHJcbiAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0LmNvbG9yKSxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvLyDlubPmu5HlpITnkIZcclxuICBzbW9vdGhIYW5kbGUocG9zaXRpb25zKSB7XHJcbiAgICBpZiAocG9zaXRpb25zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IG5ld1Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCB0aW1lID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aW1lLnB1c2goaSAvIChwb3NpdGlvbnMubGVuZ3RoIC0gMSkpXHJcbiAgICAgIH1cclxuICAgICAgbGV0IHNwbGluZSA9IG5ldyBDZXNpdW0uQ2F0bXVsbFJvbVNwbGluZSh7XHJcbiAgICAgICAgdGltZXM6IHRpbWUsXHJcbiAgICAgICAgcG9pbnRzOiBwb3NpdGlvbnNcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBsZW5ndGggPSBwb3NpdGlvbnMubGVuZ3RoICogMjBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2FydGVzaWFuMyA9IHNwbGluZS5ldmFsdWF0ZShpIC8gbGVuZ3RoKTtcclxuICAgICAgICBuZXdQb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4zKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3UG9zaXRpb25zXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHBvc2l0aW9uc1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB6I6357uY5Yi257q/XHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UG9seWxpbmVcclxuICAgKiBAZXhhbXBsZSBkcmF3LnN0YXJ0KChlcnIscG9zaXRpb25zKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG4gIHN0YXJ0KGNiKSB7XHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCh0aGlzLnRpcFRleHQgfHwgJ+W3pumUruehruWumu+8jOWPs+mUrue7k+adn++8m0NUUkwr5Y+z6ZSu5pKk6ZSAJywgdGhpcy5zZGspXHJcbiAgICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudCh0aGlzLnNkaylcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnBvaW50c19pZHMgPSBbXSAvL+WtmOaUvuW3pumUrueCueWHu+aXtuS4tOaXtua3u+WKoOeahHBvaW5055qEaWRcclxuXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2FyID0gdW5kZWZpbmVkXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaW50byA9ICczRCdcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQb2x5bGluZS5jcmVhdGVfcG9seWxpbmUodGhpcywgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgIGlmIChjYWNoZV9wb3NpdGlvbnMubGVuZ3RoID49IHRoaXMub3B0aW9ucy5udW1iZXIpIHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IHNtb290aFBvc1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jdXJ2ZSkge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zbW9vdGhIYW5kbGUoY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgICAgICBzbW9vdGhQb3MgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHNtb290aFBvc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zW2ldLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2IobnVsbCwgcG9zaXRpb25zLCBzbW9vdGhQb3MpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0sIHRoaXMudmlld2VyKSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxldCBzbW9vdGhQb3NcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmN1cnZlKSB7XHJcbiAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zbW9vdGhIYW5kbGUoY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgICAgc21vb3RoUG9zID0gW11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNtb290aFBvc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zW2ldLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2IobnVsbCwgcG9zaXRpb25zLCBzbW9vdGhQb3MpXHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGxldCBzbW9vdGhQb3NcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jdXJ2ZSkge1xyXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB0aGlzLnNtb290aEhhbmRsZShjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgc21vb3RoUG9zID0gW11cclxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc21vb3RoUG9zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NbaV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYihudWxsLCBwb3NpdGlvbnMsIHNtb290aFBvcylcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZW50aXR5SGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdQb2x5bGluZS5jcmVhdGVfcG9seWxpbmUodGhpcywgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGludG8gPSAnMkQnXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1BvbHlsaW5lLmNyZWF0ZV9wb2x5bGluZSh0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IHNtb290aFBvc1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jdXJ2ZSkge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5zbW9vdGhIYW5kbGUoY2FjaGVfcG9zaXRpb25zKVxyXG4gICAgICAgICAgICBzbW9vdGhQb3MgPSBbXVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHNtb290aFBvc1tpXSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zW2ldLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2IobnVsbCwgcG9zaXRpb25zLCBzbW9vdGhQb3MpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICAgIGNiKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgbGV0IHNtb290aFBvc1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY3VydmUpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSB0aGlzLnNtb290aEhhbmRsZShjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICBzbW9vdGhQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgc21vb3RoUG9zW2ldID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NbaV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjYihudWxsLCBwb3NpdGlvbnMsIHNtb290aFBvcylcclxuICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAoKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMikgKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5lbnRpdHlIYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UG9seWxpbmUuY3JlYXRlX3BvbHlsaW5lKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgY2IoY2FjaGVfcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3UG9seWxpbmVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUEvVEE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBMFNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawPolyline.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawRect.js":
-/*!******************************!*\
- !*** ./src/Draw/drawRect.js ***!
- \******************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawRect = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 面属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawRect(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawRect);\n _this = _callSuper(this, DrawRect, [sdk, options]);\n _this.rhumb = options.rhumb;\n _this.polygonHasCreated = false;\n _this.rect = [];\n _this.rectObj = [];\n _this.entity = null;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawRect, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawRect, [{\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawRect\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n function start(cb) {\n var _this2 = this;\n var that = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawRect, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.tipText || '左键确定,右键取消', that.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n var cnt = 0;\n var firstPoint = null;\n var secondtPoint = null;\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.end();\n cb('取消', '');\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (cnt == 1) {\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.calrect(firstPoint, wgs84);\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length >= 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n _this2.polygonHasCreated = false;\n _this2.rect = [];\n cnt--;\n cb(cnt);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb('取消', '');\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n _this2.calrect(firstPoint, wgs84);\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.end();\n cb('取消', '');\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n if (cnt == 1) {\n var wgs84 = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.calrect(firstPoint, wgs84);\n }\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length >= 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n _this2.polygonHasCreated = false;\n _this2.rect = [];\n cnt--;\n cb(cnt);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb('取消', '');\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n cnt++;\n var wgs84 = _this2.cartesian3Towgs84(cartesian);\n if (!_this2.polygonHasCreated) {\n _this2.polygonHasCreated = true;\n var polyline_id = DrawRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n firstPoint = wgs84;\n }\n if (cnt == 2) {\n _this2.calrect(firstPoint, wgs84);\n secondtPoint = wgs84;\n _this2.end();\n cb(null, that.rectObj, [firstPoint, secondtPoint]);\n } else {\n cb(cnt);\n }\n }\n });\n });\n }\n }\n }\n }, {\n key: \"calrect\",\n value: function calrect(firstPoint, secondPoint) {\n var positions = [];\n var arr = [];\n var arr2 = [];\n positions.push([firstPoint.lng, firstPoint.lat, firstPoint.alt], [secondPoint.lng, secondPoint.lat, secondPoint.alt]);\n var bboxPolygon;\n if (positions.length === 2) {\n var line = turf.lineString(positions);\n var bbox = turf.bbox(line);\n bboxPolygon = turf.bboxPolygon(bbox);\n }\n if (bboxPolygon) {\n // console.log('bboxPolygon',bboxPolygon.geometry.coordinates[0])\n bboxPolygon.geometry.coordinates[0].forEach(function (item) {\n arr.push(item[0]);\n arr.push(item[1]);\n var obj = {\n lng: item[0],\n lat: item[1],\n alt: firstPoint.alt\n };\n arr2.push(obj);\n });\n this.rect = [].concat(arr);\n this.rectObj = [].concat(arr2);\n this.rectObj.pop();\n }\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n var id = that.randomString();\n viewer.entities.add(this.entity = new Cesium.Entity({\n id: id,\n polygon: {\n // classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray(that.rect));\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n arcType: that.rhumb ? Cesium.ArcType.RHUMB : Cesium.ArcType.GEODESIC,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawRect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3UmVjdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9EcmF3L2RyYXdSZWN0LmpzPzYzYjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi9FdmVudCdcclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5cclxuLyoqXHJcbiAqIEBleHRlbmRzIERyYXcqL1xyXG5jbGFzcyBEcmF3UmVjdCBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g6Z2i5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5yaHVtYiA9IG9wdGlvbnMucmh1bWJcclxuICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5yZWN0ID0gW11cclxuICAgIHRoaXMucmVjdE9iaiA9IFtdXHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVfcG9seWdvbih0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgKHRoaXMuZW50aXR5ID0gbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICAvLyBjbGFzc2lmaWNhdGlvblR5cGU6IENlc2l1bS5DbGFzc2lmaWNhdGlvblR5cGUuQk9USCxcclxuICAgICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFxyXG4gICAgICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXkodGhhdC5yZWN0KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9LGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgYXJjVHlwZTogdGhhdC5yaHVtYiA/IENlc2l1bS5BcmNUeXBlLlJIVU1CIDogQ2VzaXVtLkFyY1R5cGUuR0VPREVTSUMsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB57uY5Yi26Z2iXHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UmVjdFxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbnMpPT57XHJcbiAgICpcclxuICAgKiB9KVxyXG4gICAqICovXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgaWYgKFlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIGNiKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAodGhpcy50aXBUZXh0IHx8ICflt6bplK7noa7lrprvvIzlj7PplK7lj5bmtognLCB0aGF0LnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMucG9pbnRzX2lkcyA9IFtdIC8v5a2Y5pS+5bem6ZSu54K55Ye75pe25Li05pe25re75Yqg55qEcG9pbnTnmoRpZFxyXG4gICAgICBsZXQgY2FjaGVfcG9zaXRpb25zID0gW11cclxuICAgICAgbGV0IGNhY2hlXzg0X3Bvc2l0aW9uID0gW11cclxuICAgICAgbGV0IGNudCA9IDBcclxuICAgICAgbGV0IGZpcnN0UG9pbnQgPSBudWxsXHJcbiAgICAgIGxldCBzZWNvbmR0UG9pbnQgPSBudWxsXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGNudCsrXHJcbiAgICAgICAgbGV0IHdnczg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UmVjdC5jcmVhdGVfcG9seWdvbih0aGlzKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICBmaXJzdFBvaW50ID0gd2dzODRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjbnQgPT0gMikge1xyXG4gICAgICAgICAgc2Vjb25kdFBvaW50ID0gd2dzODRcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKG51bGwsIHRoYXQucmVjdE9iaiwgW2ZpcnN0UG9pbnQsIHNlY29uZHRQb2ludF0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY2IoY250KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoJ+WPlua2iCcsICcnKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoY250ID09IDEpIHtcclxuICAgICAgICAgIGxldCB3Z3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMuY2FscmVjdChmaXJzdFBvaW50LCB3Z3M4NClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSkgLy/np7vpmaRwb2ludFxyXG4gICAgICAgICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnJlY3QgPSBbXVxyXG4gICAgICAgICAgY250LS1cclxuICAgICAgICAgIGNiKGNudClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIGNiKCflj5bmtognLCAnJylcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICBjbnQrK1xyXG4gICAgICAgICAgICBsZXQgd2dzODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbilcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1JlY3QuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgICBmaXJzdFBvaW50ID0gd2dzODRcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNudCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWxyZWN0KGZpcnN0UG9pbnQsIHdnczg0KVxyXG4gICAgICAgICAgICAgIHNlY29uZHRQb2ludCA9IHdnczg0XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKG51bGwsIHRoYXQucmVjdE9iaiwgW2ZpcnN0UG9pbnQsIHNlY29uZHRQb2ludF0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY2IoY250KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIGNudCsrXHJcbiAgICAgICAgICBsZXQgd2dzODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgXHJcbiAgICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IHRydWVcclxuICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1JlY3QuY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgZmlyc3RQb2ludCA9IHdnczg0XHJcbiAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgICAgc2Vjb25kdFBvaW50ID0gd2dzODRcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihudWxsLCB0aGF0LnJlY3RPYmosIFtmaXJzdFBvaW50LCBzZWNvbmR0UG9pbnRdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNiKGNudClcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKCflj5bmtognLCAnJylcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKGNudCA9PSAxKSB7XHJcbiAgICAgICAgICAgIGxldCB3Z3M4NCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgdGhpcy5jYWxyZWN0KGZpcnN0UG9pbnQsIHdnczg0KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLnJlY3QgPSBbXVxyXG4gICAgICAgICAgICBjbnQtLVxyXG4gICAgICAgICAgICBjYihjbnQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICBcclxuICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgY2IoJ+WPlua2iCcsICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgICAgICgobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyKSArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgY250KytcclxuICAgICAgICAgICAgICBsZXQgd2dzODQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbilcclxuICBcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9seWxpbmVfaWQgPSBEcmF3UmVjdC5jcmVhdGVfcG9seWdvbih0aGlzLCB0aGlzLl9zZGsyRC52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgICAgICAgIGZpcnN0UG9pbnQgPSB3Z3M4NFxyXG4gICAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FscmVjdChmaXJzdFBvaW50LCB3Z3M4NClcclxuICAgICAgICAgICAgICAgIHNlY29uZHRQb2ludCA9IHdnczg0XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgICBjYihudWxsLCB0aGF0LnJlY3RPYmosIFtmaXJzdFBvaW50LCBzZWNvbmR0UG9pbnRdKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNiKGNudClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICBcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbHJlY3QoZmlyc3RQb2ludCwgc2Vjb25kUG9pbnQpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgbGV0IGFyciA9IFtdXHJcbiAgICBsZXQgYXJyMiA9IFtdXHJcbiAgICBwb3NpdGlvbnMucHVzaChcclxuICAgICAgW2ZpcnN0UG9pbnQubG5nLCBmaXJzdFBvaW50LmxhdCwgZmlyc3RQb2ludC5hbHRdLFxyXG4gICAgICBbc2Vjb25kUG9pbnQubG5nLCBzZWNvbmRQb2ludC5sYXQsIHNlY29uZFBvaW50LmFsdF1cclxuICAgIClcclxuICAgIGxldCBiYm94UG9seWdvblxyXG4gICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcocG9zaXRpb25zKVxyXG4gICAgICBsZXQgYmJveCA9IHR1cmYuYmJveChsaW5lKVxyXG4gICAgICBiYm94UG9seWdvbiA9IHR1cmYuYmJveFBvbHlnb24oYmJveClcclxuICAgIH1cclxuICAgIGlmIChiYm94UG9seWdvbikge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnYmJveFBvbHlnb24nLGJib3hQb2x5Z29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKVxyXG4gICAgICBiYm94UG9seWdvbi5nZW9tZXRyeS5jb29yZGluYXRlc1swXS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGFyci5wdXNoKGl0ZW1bMF0pXHJcbiAgICAgICAgYXJyLnB1c2goaXRlbVsxXSlcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgbG5nOiBpdGVtWzBdLFxyXG4gICAgICAgICAgbGF0OiBpdGVtWzFdLFxyXG4gICAgICAgICAgYWx0OiBmaXJzdFBvaW50LmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBhcnIyLnB1c2gob2JqKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnJlY3QgPSBbLi4uYXJyXVxyXG4gICAgICB0aGlzLnJlY3RPYmogPSBbLi4uYXJyMl1cclxuICAgICAgdGhpcy5yZWN0T2JqLnBvcCgpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3UmVjdFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBM1JBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQTJRQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Draw/drawRect.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawSector.js":
-/*!********************************!*\
- !*** ./src/Draw/drawSector.js ***!
- \********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawSector = /*#__PURE__*/function (_Draw) {\n function DrawSector(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawSector);\n return _callSuper(this, DrawSector, [sdk, options]);\n }\n\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawRect\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawSector, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawSector, [{\n key: \"start\",\n value: function start(cb) {\n var _this = this;\n var that = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawSector, \"start\", this, 3)([]);\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.tipText || '左键确认,右键取消', that.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk);\n this._sector_id = null; //扇形\n this._positions = []; //活动点\n this.points_ids = []; //脏数据\n this._entities_sector = []; //脏数据\n this._radius = 0; //半径\n this._startAngle = 0; //起始角度\n this._endAngle = 0; //结束角度\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n // if(that._positions.length == 3) return\n\n if (_this._positions.length < 3) {\n _this.points_ids.push(_this.create_point(cartesian));\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n cb(_this._positions.length);\n } else {\n _this.end();\n cb(null, {\n center: _this._positions[0],\n radius: _this._radius,\n startAngle: _this._startAngle,\n endAngle: _this._endAngle\n });\n }\n if (_this._positions.length === 2) {\n var pointA = Cesium.Cartesian3.fromDegrees(_this._positions[0].lng, _this._positions[0].lat, _this._positions[0].alt);\n var pointB = cartesian;\n _this._radius = Cesium.Cartesian3.distance(pointA, pointB);\n }\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (_this._positions.length < 2) return;\n if (_this._positions.length == 2) {\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n if (_this._positions.length == 3) {\n _this._positions.pop();\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (!Cesium.defined(_this._sector_id)) {\n _this._sector_id = _this.createsector();\n _this.points_ids.push(_this._sector_id);\n }\n var options = that.calculateAangle(that._positions);\n that._startAngle = options.angle1;\n that._endAngle = options.angle2;\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this.end();\n cb(null);\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this._positions.length >= 1) {\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this._sector_id);\n _this._sector_id = undefined;\n _this._positions.pop();\n _this._positions.pop();\n cb(_this._positions.length);\n }\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n // if(that._positions.length == 3) return\n\n if (_this._positions.length < 3) {\n _this.points_ids.push(_this.create_point(cartesian, _this._sdk2D.viewer));\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n cb(_this._positions.length);\n } else {\n _this.end();\n cb(null, {\n center: _this._positions[0],\n radius: _this._radius,\n startAngle: _this._startAngle,\n endAngle: _this._endAngle\n });\n }\n if (_this._positions.length === 2) {\n var pointA = Cesium.Cartesian3.fromDegrees(_this._positions[0].lng, _this._positions[0].lat, _this._positions[0].alt);\n var pointB = cartesian;\n _this._radius = Cesium.Cartesian3.distance(pointA, pointB);\n }\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.tip.setPosition(cartesian, movement.endPosition.x + _this.viewer.canvas.width, movement.endPosition.y);\n if (_this._positions.length < 2) return;\n if (_this._positions.length == 2) {\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n }\n if (_this._positions.length == 3) {\n _this._positions.pop();\n _this._positions.push(_this.cartesian3Towgs84(cartesian, _this.viewer));\n if (!Cesium.defined(_this._sector_id)) {\n _this._sector_id = _this.createsector(_this._sdk2D.viewer);\n _this.points_ids.push(_this._sector_id);\n }\n var options = that.calculateAangle(that._positions);\n that._startAngle = options.angle1;\n that._endAngle = options.angle2;\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this.end();\n cb(null);\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this._positions.length >= 1) {\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this.points_ids.pop());\n _this.remove_entity(_this._sector_id);\n _this._sector_id = undefined;\n _this._positions.pop();\n _this._positions.pop();\n cb(_this._positions.length);\n }\n });\n }\n }\n }\n\n //创建直线扇形\n }, {\n key: \"createsector\",\n value: function createsector() {\n var viewer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.viewer;\n // console.log(this._positions)\n var that = this;\n var angle;\n var hierarchy = new Cesium.CallbackProperty(function () {\n var pList = that.calSector(that._positions[0], that._radius, that._startAngle, that._endAngle);\n return new Cesium.PolygonHierarchy(pList);\n });\n // let text = new Cesium.CallbackProperty(\n // () => {\n // angle = that._endAngle - that._startAngle\n // if (angle < 0) {\n // angle = 360 + angle\n // }\n // return angle.toFixed(2) + '°';\n // })\n var id = that.randomString();\n var arrowEntity = viewer.entities.add({\n id: id,\n position: Cesium.Cartesian3.fromDegrees(that._positions[0].lng, that._positions[0].lat),\n // label: {\n // text,\n // font: \"24px Helvetica\",\n // fillColor: Cesium.Color.SKYBLUE,\n // outlineColor: Cesium.Color.BLACK,\n // outlineWidth: 2,\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // pixelOffset: new Cesium.Cartesian2(0, -12),\n // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY\n // },\n polygon: {\n hierarchy: hierarchy,\n show: true,\n fill: true,\n clampToGround: true,\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n }\n });\n that._entities_sector.push(arrowEntity);\n return id;\n }\n }, {\n key: \"cartesianToLatlng\",\n value: function cartesianToLatlng(cartesian) {\n var latlng = this.viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);\n var lat = Cesium.Math.toDegrees(latlng.latitude);\n var lng = Cesium.Math.toDegrees(latlng.longitude);\n return [lng, lat];\n }\n\n /**\r\n * 经纬度坐标转墨卡托坐标\r\n */\n // 墨卡托坐标系:展开地球,赤道作为x轴,向东为x轴正方,本初子午线作为y轴,向北为y轴正方向。\n // 数字20037508.34是地球赤道周长的一半:地球半径6378137米,赤道周长2*PI*r = 2 * 20037508.3427892,墨卡托坐标x轴区间[-20037508.3427892,20037508.3427892]\n }, {\n key: \"lonLatToMercator\",\n value: function lonLatToMercator(Latlng) {\n var E = Latlng[0];\n var N = Latlng[1];\n var x = E * 20037508.34 / 180;\n var y = Math.log(Math.tan((90 + N) * Math.PI / 360)) / (Math.PI / 180);\n y = y * 20037508.34 / 180;\n return [x, y];\n }\n }, {\n key: \"WebMercator2lonLat\",\n value: function WebMercator2lonLat(mercator) {\n var x = mercator[0] / 20037508.34 * 180;\n var ly = mercator[1] / 20037508.34 * 180;\n var y = 180 / Math.PI * (2 * Math.atan(Math.exp(ly * Math.PI / 180)) - Math.PI / 2);\n return [x, y];\n }\n\n //计算角度\n }, {\n key: \"calculateAangle\",\n value: function calculateAangle(arr) {\n function getAangle(start, end) {\n var rad = Math.PI / 180,\n lat1 = start.y * rad,\n lat2 = end.y * rad,\n lon1 = start.x * rad,\n lon2 = end.x * rad;\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n var radians = Math.atan2(a, b);\n var degrees = radians % (2 * Math.PI);\n var bearing = 450 - (degrees * 180 / Math.PI < 0 ? 360 + degrees * 180 / Math.PI : degrees * 180 / Math.PI) - 90;\n return 360 - bearing % 360;\n }\n var center = arr[0];\n var pos84_1 = arr[1];\n var pos84_2 = arr[2];\n var start = {\n x: center.lng,\n y: center.lat\n };\n var end1 = {\n x: pos84_1.lng,\n y: pos84_1.lat\n };\n var end2 = {\n x: pos84_2.lng,\n y: pos84_2.lat\n };\n var angle1 = getAangle(start, end1);\n var angle2 = getAangle(start, end2);\n return {\n angle1: angle1,\n angle2: angle2\n };\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawSector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3U2VjdG9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RyYXcvZHJhd1NlY3Rvci5qcz9jODRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcbmltcG9ydCBEcmF3IGZyb20gJy4vZHJhdydcclxuXHJcbi8qKlxyXG4gKiBAZXh0ZW5kcyBEcmF3Ki9cclxuY2xhc3MgRHJhd1NlY3RvciBleHRlbmRzIERyYXcge1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyDlvIDlp4vliqjmgIHnu5jliLbpnaJcclxuICAgKiBAbWV0aG9kIHN0YXJ0XHJcbiAgICogQHBhcmFtIGNiIHtmdW5jdGlvbn0g5Zue6LCD5Ye95pWwXHJcbiAgICogQG1lbWJlck9mIERyYXdSZWN0XHJcbiAgICogQGV4YW1wbGUgZHJhdy5zdGFydCgoZXJyLHBvc2l0aW9ucyk9PntcclxuICAgKlxyXG4gICAqIH0pXHJcbiAgICogKi9cclxuICBzdGFydChjYikge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIGxldCBpbnRvXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCh0aGlzLnRpcFRleHQgfHwgJ+W3pumUruehruiupO+8jOWPs+mUruWPlua2iCcsIHRoYXQuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIHRoaXMuX3NlY3Rvcl9pZCA9IG51bGw7IC8v5omH5b2iXHJcbiAgICAgIHRoaXMuX3Bvc2l0aW9ucyA9IFtdOyAgLy/mtLvliqjngrlcclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW107ICAvL+iEj+aVsOaNrlxyXG4gICAgICB0aGlzLl9lbnRpdGllc19zZWN0b3IgPSBbXTsgIC8v6ISP5pWw5o2uXHJcbiAgICAgIHRoaXMuX3JhZGl1cyA9IDA7IC8v5Y2K5b6EXHJcbiAgICAgIHRoaXMuX3N0YXJ0QW5nbGUgPSAwOyAvL+i1t+Wni+inkuW6plxyXG4gICAgICB0aGlzLl9lbmRBbmdsZSA9IDA7IC8v57uT5p2f6KeS5bqmXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIC8vIGlmKHRoYXQuX3Bvc2l0aW9ucy5sZW5ndGggPT0gMykgcmV0dXJuXHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuKSk7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKTtcclxuICAgICAgICAgIGNiKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgY2IobnVsbCwgeyBjZW50ZXI6IHRoaXMuX3Bvc2l0aW9uc1swXSwgcmFkaXVzOiB0aGlzLl9yYWRpdXMsIHN0YXJ0QW5nbGU6IHRoaXMuX3N0YXJ0QW5nbGUsIGVuZEFuZ2xlOiB0aGlzLl9lbmRBbmdsZSB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgbGV0IHBvaW50QSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuX3Bvc2l0aW9uc1swXS5sbmcsIHRoaXMuX3Bvc2l0aW9uc1swXS5sYXQsIHRoaXMuX3Bvc2l0aW9uc1swXS5hbHQpO1xyXG4gICAgICAgICAgbGV0IHBvaW50QiA9IGNhcnRlc2lhbjtcclxuICAgICAgICAgIHRoaXMuX3JhZGl1cyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvaW50QSwgcG9pbnRCKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoIDwgMikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKCk7XHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKTtcclxuICAgICAgICAgIGlmICghQ2VzaXVtLmRlZmluZWQodGhpcy5fc2VjdG9yX2lkKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zZWN0b3JfaWQgPSB0aGlzLmNyZWF0ZXNlY3RvcigpO1xyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLl9zZWN0b3JfaWQpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBvcHRpb25zID0gdGhhdC5jYWxjdWxhdGVBYW5nbGUodGhhdC5fcG9zaXRpb25zKVxyXG4gICAgICAgICAgdGhhdC5fc3RhcnRBbmdsZSA9IG9wdGlvbnMuYW5nbGUxO1xyXG4gICAgICAgICAgdGhhdC5fZW5kQW5nbGUgPSBvcHRpb25zLmFuZ2xlMjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICBjYihudWxsKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGggPj0gMSkge1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5fc2VjdG9yX2lkKVxyXG4gICAgICAgICAgdGhpcy5fc2VjdG9yX2lkID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2IodGhpcy5fcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIC8vIGlmKHRoYXQuX3Bvc2l0aW9ucy5sZW5ndGggPT0gMykgcmV0dXJuXHJcbiAgXHJcbiAgICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSk7XHJcbiAgICAgICAgICAgIGNiKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihudWxsLCB7IGNlbnRlcjogdGhpcy5fcG9zaXRpb25zWzBdLCByYWRpdXM6IHRoaXMuX3JhZGl1cywgc3RhcnRBbmdsZTogdGhpcy5fc3RhcnRBbmdsZSwgZW5kQW5nbGU6IHRoaXMuX2VuZEFuZ2xlIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICBsZXQgcG9pbnRBID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5fcG9zaXRpb25zWzBdLmxuZywgdGhpcy5fcG9zaXRpb25zWzBdLmxhdCwgdGhpcy5fcG9zaXRpb25zWzBdLmFsdCk7XHJcbiAgICAgICAgICAgIGxldCBwb2ludEIgPSBjYXJ0ZXNpYW47XHJcbiAgICAgICAgICAgIHRoaXMuX3JhZGl1cyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvaW50QSwgcG9pbnRCKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGggPCAyKSByZXR1cm47XHJcbiAgICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25zLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9ucy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpO1xyXG4gICAgICAgICAgICBpZiAoIUNlc2l1bS5kZWZpbmVkKHRoaXMuX3NlY3Rvcl9pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLl9zZWN0b3JfaWQgPSB0aGlzLmNyZWF0ZXNlY3Rvcih0aGlzLl9zZGsyRC52aWV3ZXIpO1xyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuX3NlY3Rvcl9pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGF0LmNhbGN1bGF0ZUFhbmdsZSh0aGF0Ll9wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgIHRoYXQuX3N0YXJ0QW5nbGUgPSBvcHRpb25zLmFuZ2xlMTtcclxuICAgICAgICAgICAgdGhhdC5fZW5kQW5nbGUgPSBvcHRpb25zLmFuZ2xlMjtcclxuICAgICAgICAgIH1cclxuICBcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIGNiKG51bGwpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLl9wb3NpdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMucG9pbnRzX2lkcy5wb3AoKSlcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuX3NlY3Rvcl9pZClcclxuICAgICAgICAgICAgdGhpcy5fc2VjdG9yX2lkID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbnMucG9wKClcclxuICAgICAgICAgICAgY2IodGhpcy5fcG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL+WIm+W7uuebtOe6v+aJh+W9olxyXG4gIGNyZWF0ZXNlY3Rvcih2aWV3ZXIgPSB0aGlzLnZpZXdlcikge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5fcG9zaXRpb25zKVxyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgbGV0IGFuZ2xlXHJcbiAgICBsZXQgaGllcmFyY2h5ID0gbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgbGV0IHBMaXN0ID0gdGhhdC5jYWxTZWN0b3IodGhhdC5fcG9zaXRpb25zWzBdLCB0aGF0Ll9yYWRpdXMsIHRoYXQuX3N0YXJ0QW5nbGUsIHRoYXQuX2VuZEFuZ2xlKVxyXG4gICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkocExpc3QpO1xyXG4gICAgICB9KVxyXG4gICAgLy8gbGV0IHRleHQgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoXHJcbiAgICAvLyAgICgpID0+IHtcclxuICAgIC8vICAgICBhbmdsZSA9IHRoYXQuX2VuZEFuZ2xlIC0gdGhhdC5fc3RhcnRBbmdsZVxyXG4gICAgLy8gICAgIGlmIChhbmdsZSA8IDApIHtcclxuICAgIC8vICAgICAgIGFuZ2xlID0gMzYwICsgYW5nbGVcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIGFuZ2xlLnRvRml4ZWQoMikgKyAnwrAnO1xyXG4gICAgLy8gICB9KVxyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgbGV0IGFycm93RW50aXR5ID0gdmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgIGlkOiBpZCxcclxuICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoYXQuX3Bvc2l0aW9uc1swXS5sbmcsIHRoYXQuX3Bvc2l0aW9uc1swXS5sYXQpLFxyXG4gICAgICAvLyBsYWJlbDoge1xyXG4gICAgICAvLyAgIHRleHQsXHJcbiAgICAgIC8vICAgZm9udDogXCIyNHB4IEhlbHZldGljYVwiLFxyXG4gICAgICAvLyAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLlNLWUJMVUUsXHJcbiAgICAgIC8vICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgIC8vICAgb3V0bGluZVdpZHRoOiAyLFxyXG4gICAgICAvLyAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAvLyAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLTEyKSxcclxuICAgICAgLy8gICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVIsXHJcbiAgICAgIC8vICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgIC8vICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgLy8gfSxcclxuICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgIGhpZXJhcmNoeSxcclxuICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgIGZpbGw6IHRydWUsXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0LmNvbG9yKSxcclxuICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIClcclxuICAgIHRoYXQuX2VudGl0aWVzX3NlY3Rvci5wdXNoKGFycm93RW50aXR5KTtcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgY2FydGVzaWFuVG9MYXRsbmcoY2FydGVzaWFuKSB7XHJcbiAgICBsZXQgbGF0bG5nID0gdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGNhcnRlc2lhbik7XHJcbiAgICBsZXQgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGxhdGxuZy5sYXRpdHVkZSk7XHJcbiAgICBsZXQgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGxhdGxuZy5sb25naXR1ZGUpO1xyXG4gICAgcmV0dXJuIFtsbmcsIGxhdF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDnu4/nuqzluqblnZDmoIfovazloqjljaHmiZjlnZDmoIdcclxuICAgKi9cclxuICAvLyDloqjljaHmiZjlnZDmoIfns7vvvJrlsZXlvIDlnLDnkIPvvIzotaTpgZPkvZzkuLp46L2077yM5ZCR5Lic5Li6eOi9tOato+aWue+8jOacrOWIneWtkOWNiOe6v+S9nOS4unnovbTvvIzlkJHljJfkuLp56L205q2j5pa55ZCR44CCXHJcbiAgLy8g5pWw5a2XMjAwMzc1MDguMzTmmK/lnLDnkIPotaTpgZPlkajplb/nmoTkuIDljYrvvJrlnLDnkIPljYrlvoQ2Mzc4MTM357Gz77yM6LWk6YGT5ZGo6ZW/MipQSSpyID0gMiAqIDIwMDM3NTA4LjM0Mjc4OTLvvIzloqjljaHmiZjlnZDmoId46L205Yy66Ze0Wy0yMDAzNzUwOC4zNDI3ODkyLDIwMDM3NTA4LjM0Mjc4OTJdXHJcbiAgbG9uTGF0VG9NZXJjYXRvcihMYXRsbmcpIHtcclxuICAgIGxldCBFID0gTGF0bG5nWzBdO1xyXG4gICAgbGV0IE4gPSBMYXRsbmdbMV07XHJcbiAgICBsZXQgeCA9IEUgKiAyMDAzNzUwOC4zNCAvIDE4MDtcclxuICAgIGxldCB5ID0gTWF0aC5sb2coTWF0aC50YW4oKDkwICsgTikgKiBNYXRoLlBJIC8gMzYwKSkgLyAoTWF0aC5QSSAvIDE4MCk7XHJcbiAgICB5ID0geSAqIDIwMDM3NTA4LjM0IC8gMTgwO1xyXG4gICAgcmV0dXJuIFt4LCB5XVxyXG4gIH1cclxuXHJcbiAgV2ViTWVyY2F0b3IybG9uTGF0KG1lcmNhdG9yKSB7XHJcbiAgICBsZXQgeCA9IG1lcmNhdG9yWzBdIC8gMjAwMzc1MDguMzQgKiAxODA7XHJcbiAgICBsZXQgbHkgPSBtZXJjYXRvclsxXSAvIDIwMDM3NTA4LjM0ICogMTgwO1xyXG4gICAgbGV0IHkgPSAxODAgLyBNYXRoLlBJICogKDIgKiBNYXRoLmF0YW4oTWF0aC5leHAobHkgKiBNYXRoLlBJIC8gMTgwKSkgLSBNYXRoLlBJIC8gMilcclxuICAgIHJldHVybiBbeCwgeV07XHJcbiAgfVxyXG5cclxuICAvL+iuoeeul+inkuW6plxyXG4gIGNhbGN1bGF0ZUFhbmdsZShhcnIpIHtcclxuICAgIGZ1bmN0aW9uIGdldEFhbmdsZShzdGFydCwgZW5kKSB7XHJcbiAgICAgIGxldCByYWQgPSBNYXRoLlBJIC8gMTgwLFxyXG4gICAgICAgIGxhdDEgPSBzdGFydC55ICogcmFkLFxyXG4gICAgICAgIGxhdDIgPSBlbmQueSAqIHJhZCxcclxuICAgICAgICBsb24xID0gc3RhcnQueCAqIHJhZCxcclxuICAgICAgICBsb24yID0gZW5kLnggKiByYWQ7XHJcbiAgICAgIGNvbnN0IGEgPSBNYXRoLnNpbihsb24yIC0gbG9uMSkgKiBNYXRoLmNvcyhsYXQyKTtcclxuICAgICAgY29uc3QgYiA9XHJcbiAgICAgICAgTWF0aC5jb3MobGF0MSkgKiBNYXRoLnNpbihsYXQyKSAtXHJcbiAgICAgICAgTWF0aC5zaW4obGF0MSkgKiBNYXRoLmNvcyhsYXQyKSAqIE1hdGguY29zKGxvbjIgLSBsb24xKTtcclxuICAgICAgY29uc3QgcmFkaWFucyA9IE1hdGguYXRhbjIoYSwgYilcclxuICAgICAgY29uc3QgZGVncmVlcyA9IHJhZGlhbnMgJSAoMiAqIE1hdGguUEkpO1xyXG4gICAgICBsZXQgYmVhcmluZyA9IDQ1MCAtICgoZGVncmVlcyAqIDE4MCkgLyBNYXRoLlBJIDwgMFxyXG4gICAgICAgID8gMzYwICsgKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSVxyXG4gICAgICAgIDogKGRlZ3JlZXMgKiAxODApIC8gTWF0aC5QSSkgLSA5MDtcclxuICAgICAgcmV0dXJuIDM2MCAtIChiZWFyaW5nICUgMzYwKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBjZW50ZXIgPSBhcnJbMF1cclxuICAgIGxldCBwb3M4NF8xID0gYXJyWzFdXHJcbiAgICBsZXQgcG9zODRfMiA9IGFyclsyXVxyXG5cclxuICAgIGxldCBzdGFydCA9IHsgeDogY2VudGVyLmxuZywgeTogY2VudGVyLmxhdCB9XHJcbiAgICBsZXQgZW5kMSA9IHsgeDogcG9zODRfMS5sbmcsIHk6IHBvczg0XzEubGF0IH1cclxuICAgIGxldCBlbmQyID0geyB4OiBwb3M4NF8yLmxuZywgeTogcG9zODRfMi5sYXQgfVxyXG5cclxuICAgIGxldCBhbmdsZTEgPSBnZXRBYW5nbGUoc3RhcnQsIGVuZDEpXHJcbiAgICBsZXQgYW5nbGUyID0gZ2V0QWFuZ2xlKHN0YXJ0LCBlbmQyKVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFuZ2xlMSxcclxuICAgICAgYW5nbGUyXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3U2VjdG9yXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Draw/drawSector.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawStraightArrow.js":
-/*!***************************************!*\
- !*** ./src/Draw/drawStraightArrow.js ***!
- \***************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\nvar transformCartesianToWGS84 = function transformCartesianToWGS84(cartesian) {\n var ellipsoid = Cesium.Ellipsoid.WGS84;\n var cartographic = ellipsoid.cartesianToCartographic(cartesian);\n var x = Cesium.Math.toDegrees(cartographic.longitude);\n var y = Cesium.Math.toDegrees(cartographic.latitude);\n var z = cartographic.height;\n return {\n x: x,\n y: y,\n z: z\n };\n};\n\n/**\r\n * @extends Draw*/\nvar DrawStraightArrow = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @param [options] {object} 面属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawStraightArrow(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawStraightArrow);\n _this = _callSuper(this, DrawStraightArrow, [sdk, options]);\n _this.points = null;\n _this.polygonHasCreated = false;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(DrawStraightArrow, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawStraightArrow, [{\n key: \"start\",\n value:\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolygon\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n function start(cb) {\n var _this2 = this;\n var that = this;\n // eslint-disable-next-line no-undef\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n _superPropGet(DrawStraightArrow, \"start\", this, 3)([]);\n // eslint-disable-next-line no-undef\n var into;\n YJ.Measure.SetMeasureStatus(true);\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_6__[\"default\"]('左键确定,右键取消;', that.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](that.sdk);\n this.positions = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n this.anchorpoints = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n if (!cartesian || _this2.anchorpoints[0] === cartesian) return;\n _this2.anchorpoints.push(cartesian);\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n p.lng = Number(p.lng.toFixed(8));\n p.lat = Number(p.lat.toFixed(8));\n if (cache_positions[0] && p.lng === cache_positions[0].lng && p.lat === cache_positions[0].lat) return;\n cache_positions.push(p);\n _this2.positions.push(p);\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n if (_this2.points_ids.length === 2) {\n var array = [cache_positions[0], cache_positions[1]];\n cb(null, array);\n _this2.end();\n }\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (!cartesian || _this2.points_ids.length === 0) {\n return;\n }\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.positions = [_this2.positions[0], p];\n if (_this2.points_ids.length === 1 && !Cesium.defined(_this2.arrowPolygon)) {\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n cb(null);\n _this2.end();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n if (_this2.anchorpoints.length === 2) {\n _this2.anchorpoints.push(cartesian);\n cb(null, _this2.positions);\n _this2.end();\n } else {\n if (!cartesian || Cesium.defined(_this2.arrowPolygon)) return;\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n _this2.anchorpoints.push(cartesian);\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2);\n cache_positions.push(_this2.cartesian3Towgs84(cartesian));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian));\n }\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n if (!cartesian || _this2.anchorpoints[0] === cartesian) return;\n _this2.anchorpoints.push(cartesian);\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n p.lng = Number(p.lng.toFixed(8));\n p.lat = Number(p.lat.toFixed(8));\n if (cache_positions[0] && p.lng === cache_positions[0].lng && p.lat === cache_positions[0].lat) return;\n cache_positions.push(p);\n _this2.positions.push(p);\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n if (_this2.points_ids.length === 2) {\n var array = [cache_positions[0], cache_positions[1]];\n cb(null, array);\n _this2.end();\n }\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n if (!cartesian || _this2.points_ids.length === 0) {\n return;\n }\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n _this2.positions = [_this2.positions[0], p];\n if (_this2.points_ids.length === 1 && !Cesium.defined(_this2.arrowPolygon)) {\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2, _this2._sdk2D.viewer);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n cb(null);\n _this2.end();\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n if (_this2.anchorpoints.length === 2) {\n _this2.anchorpoints.push(cartesian);\n cb(null, _this2.positions);\n _this2.end();\n } else {\n if (!cartesian || Cesium.defined(_this2.arrowPolygon)) return;\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n _this2.anchorpoints.push(cartesian);\n _this2.arrowPolygon = DrawStraightArrow.polygon(_this2, _this2._sdk2D.viewer);\n cache_positions.push(_this2.cartesian3Towgs84(cartesian));\n // console.log(this.cartesian3Towgs84(cartesian))\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n }\n }\n });\n });\n }\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(DrawStraightArrow, \"end\", this, 3)([]);\n this.viewer.entities.remove(this.arrowPolygon);\n if (!this._is2D && this._sdk2D) {\n this._sdk2D.viewer.entities.remove(this.arrowPolygon);\n }\n }\n }], [{\n key: \"polygon\",\n value: function polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n var id = that.randomString();\n return viewer.entities.add(new Cesium.Entity({\n name: 'ArrowPolygon',\n id: id,\n polygon: {\n hierarchy: new Cesium.CallbackProperty(function (e) {\n var arr = that.computeStraightArrow(that.positions);\n for (var i = 0; i < arr.length; i++) {\n if (isNaN(arr[i].x)) {\n arr = [];\n break;\n }\n }\n return new Cesium.PolygonHierarchy(arr);\n }, false),\n material: Cesium.Color.fromCssColorString(that.color),\n outline: true,\n outlineColor: Cesium.Color.GREEN,\n zIndex: 99999999\n }\n }));\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawStraightArrow);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3U3RyYWlnaHRBcnJvdy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9EcmF3L2RyYXdTdHJhaWdodEFycm93LmpzPzE3ZWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi9FdmVudCdcclxuaW1wb3J0IERyYXcgZnJvbSAnLi9kcmF3J1xyXG5cclxuY29uc3QgdHJhbnNmb3JtQ2FydGVzaWFuVG9XR1M4NCA9IGNhcnRlc2lhbiA9PiB7XHJcbiAgbGV0IGVsbGlwc29pZCA9IENlc2l1bS5FbGxpcHNvaWQuV0dTODRcclxuICBsZXQgY2FydG9ncmFwaGljID0gZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGNhcnRlc2lhbilcclxuICBjb25zdCB4ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgY29uc3QgeSA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpXHJcbiAgY29uc3QgeiA9IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4geyB4LCB5LCB6IH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEBleHRlbmRzIERyYXcqL1xyXG5jbGFzcyBEcmF3U3RyYWlnaHRBcnJvdyBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAcGFyYW0gW29wdGlvbnNdIHtvYmplY3R9IOmdouWxnuaAp1xyXG4gICAqIEBwYXJhbSBbb3B0aW9ucy5jb2xvcj1yZ2JhKDE4NSwxNCwxNCwwLjU4KV0ge29iamVjdH0g57q/5bGe5oCnXHJcblxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMucG9pbnRzID0gbnVsbFxyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcG9seWdvbih0aGF0LCB2aWV3ZXIgPSB0aGF0LnZpZXdlcikge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgcmV0dXJuIHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBuYW1lOiAnQXJyb3dQb2x5Z29uJyxcclxuICAgICAgICBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShlID0+IHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IHRoYXQuY29tcHV0ZVN0cmFpZ2h0QXJyb3codGhhdC5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzTmFOKGFycltpXS54KSkge1xyXG4gICAgICAgICAgICAgICAgYXJyID0gW11cclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoYXJyKVxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5jb2xvciksXHJcbiAgICAgICAgICBvdXRsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuR1JFRU4sXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB57uY5Yi26Z2iXHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UG9seWdvblxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbnMpPT57XHJcbiAgICpcclxuICAgKiB9KVxyXG4gICAqICovXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgdGhpcy50aXAgPSBuZXcgTW91c2VUaXAoJ+W3pumUruehruWumu+8jOWPs+mUruWPlua2iO+8mycsIHRoYXQuc2RrKVxyXG4gICAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQodGhhdC5zZGspXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5wb2ludHNfaWRzID0gW10gLy/lrZjmlL7lt6bplK7ngrnlh7vml7bkuLTml7bmt7vliqDnmoRwb2ludOeahGlkXHJcbiAgICAgIGxldCBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICBsZXQgY2FjaGVfODRfcG9zaXRpb24gPSBbXVxyXG4gICAgICB0aGlzLmFuY2hvcnBvaW50cyA9IFtdXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGlmICghY2FydGVzaWFuIHx8IHRoaXMuYW5jaG9ycG9pbnRzWzBdPT09Y2FydGVzaWFuKSByZXR1cm5cclxuICAgICAgICB0aGlzLmFuY2hvcnBvaW50cy5wdXNoKGNhcnRlc2lhbilcclxuXHJcbiAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgcC5sbmcgPSBOdW1iZXIocC5sbmcudG9GaXhlZCg4KSlcclxuICAgICAgICBwLmxhdCA9IE51bWJlcihwLmxhdC50b0ZpeGVkKDgpKVxyXG4gICAgICAgIGlmKGNhY2hlX3Bvc2l0aW9uc1swXSAmJiAocC5sbmcgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sbmcgJiYgcC5sYXQgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sYXQpKSByZXR1cm47XHJcbiAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2gocClcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucy5wdXNoKHApXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIGxldCBhcnJheSA9IFtjYWNoZV9wb3NpdGlvbnNbMF0sIGNhY2hlX3Bvc2l0aW9uc1sxXV1cclxuICAgICAgICAgIGNiKG51bGwsIGFycmF5KVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgdGhpcy5wb2ludHNfaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gW3RoaXMucG9zaXRpb25zWzBdLCBwXTtcclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA9PT0gMSAmJiAhQ2VzaXVtLmRlZmluZWQodGhpcy5hcnJvd1BvbHlnb24pKSB7XHJcbiAgICAgICAgICB0aGlzLmFycm93UG9seWdvbiA9IERyYXdTdHJhaWdodEFycm93LnBvbHlnb24odGhpcylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgY2IobnVsbClcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZihpbnRvID09PSAnMkQnKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYW5jaG9ycG9pbnRzLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgIGNiKG51bGwsIHRoaXMucG9zaXRpb25zKVxyXG4gICAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoIWNhcnRlc2lhbiB8fCBDZXNpdW0uZGVmaW5lZCh0aGlzLmFycm93UG9seWdvbikpIHJldHVyblxyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgdGhpcy5hbmNob3Jwb2ludHMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgICAgdGhpcy5hcnJvd1BvbHlnb24gPSBEcmF3U3RyYWlnaHRBcnJvdy5wb2x5Z29uKHRoaXMpXHJcbiAgICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGlmICghdGhpcy5faXMyRCAmJiB0aGlzLl9zZGsyRCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnQyRCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuX3NkazJEKVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZihpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaW50byA9ICcyRCdcclxuICAgICAgICAgIGlmICghY2FydGVzaWFuIHx8IHRoaXMuYW5jaG9ycG9pbnRzWzBdPT09Y2FydGVzaWFuKSByZXR1cm5cclxuICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gIFxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBwLmxuZyA9IE51bWJlcihwLmxuZy50b0ZpeGVkKDgpKVxyXG4gICAgICAgICAgcC5sYXQgPSBOdW1iZXIocC5sYXQudG9GaXhlZCg4KSlcclxuICAgICAgICAgIGlmKGNhY2hlX3Bvc2l0aW9uc1swXSAmJiAocC5sbmcgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sbmcgJiYgcC5sYXQgPT09IGNhY2hlX3Bvc2l0aW9uc1swXS5sYXQpKSByZXR1cm47XHJcbiAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChwKVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMucHVzaChwKVxyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgbGV0IGFycmF5ID0gW2NhY2hlX3Bvc2l0aW9uc1swXSwgY2FjaGVfcG9zaXRpb25zWzFdXVxyXG4gICAgICAgICAgICBjYihudWxsLCBhcnJheSlcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi54ICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICBpZiAoIWNhcnRlc2lhbiB8fCB0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW3RoaXMucG9zaXRpb25zWzBdLCBwXTtcclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID09PSAxICYmICFDZXNpdW0uZGVmaW5lZCh0aGlzLmFycm93UG9seWdvbikpIHtcclxuICAgICAgICAgICAgdGhpcy5hcnJvd1BvbHlnb24gPSBEcmF3U3RyYWlnaHRBcnJvdy5wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNiKG51bGwpXHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfSlcclxuICBcclxuICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICAgIGNiKGZhbHNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmFuY2hvcnBvaW50cy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgICAgY2IobnVsbCwgdGhpcy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4gfHwgQ2VzaXVtLmRlZmluZWQodGhpcy5hcnJvd1BvbHlnb24pKSByZXR1cm5cclxuICAgICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIgKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgICAgICAgIChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9ycG9pbnRzLnB1c2goY2FydGVzaWFuKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1BvbHlnb24gPSBEcmF3U3RyYWlnaHRBcnJvdy5wb2x5Z29uKHRoaXMsIHRoaXMuX3NkazJELnZpZXdlcilcclxuICAgICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuKSlcclxuICAgICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW5kKCkge1xyXG4gICAgc3VwZXIuZW5kKCk7XHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5hcnJvd1BvbHlnb24pXHJcbiAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgdGhpcy5fc2RrMkQudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLmFycm93UG9seWdvbilcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IERyYXdTdHJhaWdodEFycm93XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXJPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQWdOQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Draw/drawStraightArrow.js\n");
-
-/***/ }),
-
-/***/ "./src/Draw/drawThreeRect.js":
-/*!***********************************!*\
- !*** ./src/Draw/drawThreeRect.js ***!
- \***********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _draw__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n\n\n/**\r\n * @extends Draw*/\nvar DrawThreeRect = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @param [options] {object} 三点矩形属性\r\n * @param [options.color=rgba(185,14,14,0.58)] {object} 线属性\r\n * */\n function DrawThreeRect(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, DrawThreeRect);\n _this = _callSuper(this, DrawThreeRect, [sdk, options]);\n _this.polygonHasCreated = false;\n _this.rectObject = [];\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(DrawThreeRect, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(DrawThreeRect, [{\n key: \"computedLastPoint\",\n value: function computedLastPoint(arr) {\n var start = arr[0];\n var end = arr[1];\n // 计算点到线的距离\n var directionVector = Cesium.Cartesian3.subtract(end, start, new Cesium.Cartesian3());\n var pointToStart = Cesium.Cartesian3.subtract(arr[2], start, new Cesium.Cartesian3());\n var projectionLength = Cesium.Cartesian3.dot(pointToStart, directionVector) / Cesium.Cartesian3.magnitudeSquared(directionVector);\n var projectionVector = Cesium.Cartesian3.multiplyByScalar(directionVector, projectionLength, new Cesium.Cartesian3());\n var projectionPoint = Cesium.Cartesian3.add(start, projectionVector, new Cesium.Cartesian3());\n var distance = Cesium.Cartesian3.distance(arr[2], projectionPoint);\n var perp = Cesium.Cartesian3.subtract(arr[2], projectionPoint, new Cesium.Cartesian3());\n Cesium.Cartesian3.normalize(perp, perp);\n // 生成偏移向量\n var offset = Cesium.Cartesian3.multiplyByScalar(perp, distance, new Cesium.Cartesian3());\n var threePoint = Cesium.Cartesian3.add(end, offset, new Cesium.Cartesian3());\n var lastPoint = Cesium.Cartesian3.add(start, offset, new Cesium.Cartesian3());\n return [_objectSpread({}, threePoint), _objectSpread({}, lastPoint)];\n }\n /**\r\n * @desc 开始动态绘制面\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPolygon\r\n * @example draw.start((err,positions)=>{\r\n *\r\n * })\r\n * */\n }, {\n key: \"start\",\n value: function start(cb) {\n var _this2 = this;\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n this.polygonHasCreated = false;\n _superPropGet(DrawThreeRect, \"start\", this, 3)([]);\n YJ.Measure.SetMeasureStatus(true);\n var into;\n this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"]('左键确定,右键结束;CTRL+右键撤销', this.sdk);\n this.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.sdk);\n var cnt = 0;\n this.positions = [];\n this.positionsLine = [];\n this.points_ids = []; //存放左键点击时临时添加的point的id\n var cache_positions = [];\n var cache_84_position = [];\n this.event.mouse_left(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n into = '3D';\n cnt++;\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian));\n if (cnt == 3) {\n _this2.end();\n cb(null, _this2.rectObject);\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n // let positions = []\n // console.log(cache_positions)\n // cache_positions.forEach((item) => {\n // let p = this.cartesian3Towgs84(item)\n // console.log(item)\n // positions.push(p)\n // })\n _this2.end();\n cb('取消', '');\n });\n this.event.mouse_move(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n\n // this.positions = cache_positions.concat({ ...cartesian })\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (cnt == 2) {\n var arr = JSON.parse(JSON.stringify(cache_positions));\n var arr1 = arr.concat(_objectSpread({}, cartesian));\n var pointArr = _this2.computedLastPoint(arr1);\n arr = arr.concat(pointArr);\n _this2.positions = arr;\n var arr_84 = arr.map(function (item) {\n return _this2.cartesian3Towgs84(item, _this2.viewer);\n });\n _this2.rectObject = arr_84;\n }\n });\n this.event.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n }\n });\n this.event.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '2D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n if (into === '2D') {\n return;\n }\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian));\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n });\n if (!this._is2D && this._sdk2D) {\n this.event2D = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this._sdk2D);\n this.event2D.mouse_left(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n into = '2D';\n cnt++;\n _this2.positions = cache_positions.concat(_objectSpread({}, cartesian));\n _this2.tip.setPosition(cartesian, movement.position.x + _this2.viewer.canvas.width, movement.position.y);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n if (cnt == 3) {\n _this2.end();\n cb(null, _this2.rectObject);\n }\n });\n this.event2D.mouse_right(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n _this2.end();\n cb('取消', '');\n });\n this.event2D.mouse_move(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n // this.positions = cache_positions.concat({ ...cartesian })\n _this2.tip.setPosition(cartesian, movement.endPosition.x + _this2.viewer.canvas.width, movement.endPosition.y);\n if (cnt == 2) {\n var arr = JSON.parse(JSON.stringify(cache_positions));\n var arr1 = arr.concat(_objectSpread({}, cartesian));\n var pointArr = _this2.computedLastPoint(arr1);\n arr = arr.concat(pointArr);\n _this2.positions = arr;\n var arr_84 = arr.map(function (item) {\n return _this2.cartesian3Towgs84(item, _this2.viewer);\n });\n _this2.rectObject = arr_84;\n }\n });\n this.event2D.mouse_right_keyboard_ctrl(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n }\n });\n this.event2D.gesture_pinck_start_keyboard_ctrl(function () {\n if (into === '3D') {\n return;\n }\n if (_this2.points_ids.length > 1) {\n _this2.remove_entity(_this2.points_ids.pop()); //移除point\n cache_positions.pop();\n cache_84_position.pop();\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n this.event2D.gesture_pinck_start(function (movement, cartesian) {\n if (into === '3D') {\n return;\n }\n var startTime = new Date();\n _this2.event2D.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n cb(null, cache_84_position);\n _this2.end();\n } else {\n _this2.tip.setPosition(cartesian, (movement.position1.x + movement.position2.x) / 2 + _this2.viewer.canvas.width, (movement.position1.y + movement.position2.y) / 2);\n if (!_this2.polygonHasCreated) {\n var polyline_id = DrawThreeRect.create_polygon(_this2, _this2._sdk2D.viewer);\n _this2.points_ids.push(polyline_id);\n }\n cache_positions.push(cartesian);\n cache_84_position.push(_this2.cartesian3Towgs84(cartesian, _this2.viewer));\n _this2.points_ids.push(_this2.create_point(cartesian, _this2._sdk2D.viewer));\n _this2.positions = cache_positions.concat(cartesian);\n }\n });\n });\n }\n }\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var viewer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : that.viewer;\n that.polygonHasCreated = true;\n var id = that.randomString();\n viewer.entities.add(new Cesium.Entity({\n id: id,\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }),\n material: Cesium.Color.fromCssColorString(that.color),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return that.positions.concat(that.positions[0]);\n }),\n width: 2,\n material: Cesium.Color.fromCssColorString('#c1c505').withAlpha(0.5),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_draw__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawThreeRect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRHJhdy9kcmF3VGhyZWVSZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0RyYXcvZHJhd1RocmVlUmVjdC5qcz8yODRlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNb3VzZVRpcCBmcm9tICcuLi9Nb3VzZVRpcCdcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQnXHJcbmltcG9ydCBEcmF3IGZyb20gJy4vZHJhdydcclxuXHJcbi8qKlxyXG4gKiBAZXh0ZW5kcyBEcmF3Ki9cclxuY2xhc3MgRHJhd1RocmVlUmVjdCBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBbb3B0aW9uc10ge29iamVjdH0g5LiJ54K555+p5b2i5bGe5oCnXHJcbiAgICogQHBhcmFtIFtvcHRpb25zLmNvbG9yPXJnYmEoMTg1LDE0LDE0LDAuNTgpXSB7b2JqZWN0fSDnur/lsZ7mgKdcclxuXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5wb2x5Z29uSGFzQ3JlYXRlZCA9IGZhbHNlXHJcbiAgICB0aGlzLnJlY3RPYmplY3QgPSBbXVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5Z29uKHRoYXQsIHZpZXdlciA9IHRoYXQudmlld2VyKSB7XHJcbiAgICB0aGF0LnBvbHlnb25IYXNDcmVhdGVkID0gdHJ1ZVxyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBjbGFzc2lmaWNhdGlvblR5cGU6IENlc2l1bS5DbGFzc2lmaWNhdGlvblR5cGUuQk9USCxcclxuICAgICAgICAgIGhpZXJhcmNoeTogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkodGhhdC5wb3NpdGlvbnMpXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KChlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9ucy5jb25jYXQodGhhdC5wb3NpdGlvbnNbMF0pXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNjMWM1MDUnKS53aXRoQWxwaGEoMC41KSxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuICBjb21wdXRlZExhc3RQb2ludChhcnIpIHtcclxuICAgIGNvbnN0IHN0YXJ0ID0gYXJyWzBdO1xyXG4gICAgY29uc3QgZW5kID0gYXJyWzFdO1xyXG4gICAgLy8g6K6h566X54K55Yiw57q/55qE6Led56a7XHJcbiAgICBjb25zdCBkaXJlY3Rpb25WZWN0b3IgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChlbmQsIHN0YXJ0LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBwb2ludFRvU3RhcnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChhcnJbMl0sIHN0YXJ0LCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBwcm9qZWN0aW9uTGVuZ3RoID0gQ2VzaXVtLkNhcnRlc2lhbjMuZG90KHBvaW50VG9TdGFydCwgZGlyZWN0aW9uVmVjdG9yKSAvIENlc2l1bS5DYXJ0ZXNpYW4zLm1hZ25pdHVkZVNxdWFyZWQoZGlyZWN0aW9uVmVjdG9yKTtcclxuICAgIGNvbnN0IHByb2plY3Rpb25WZWN0b3IgPSBDZXNpdW0uQ2FydGVzaWFuMy5tdWx0aXBseUJ5U2NhbGFyKGRpcmVjdGlvblZlY3RvciwgcHJvamVjdGlvbkxlbmd0aCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgY29uc3QgcHJvamVjdGlvblBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuYWRkKHN0YXJ0LCBwcm9qZWN0aW9uVmVjdG9yLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBjb25zdCBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKGFyclsyXSwgcHJvamVjdGlvblBvaW50KVxyXG5cclxuICAgIGNvbnN0IHBlcnAgPSBDZXNpdW0uQ2FydGVzaWFuMy5zdWJ0cmFjdChhcnJbMl0sIHByb2plY3Rpb25Qb2ludCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpO1xyXG4gICAgQ2VzaXVtLkNhcnRlc2lhbjMubm9ybWFsaXplKHBlcnAsIHBlcnApO1xyXG4gICAgLy8g55Sf5oiQ5YGP56e75ZCR6YePXHJcbiAgICBjb25zdCBvZmZzZXQgPSBDZXNpdW0uQ2FydGVzaWFuMy5tdWx0aXBseUJ5U2NhbGFyKHBlcnAsIGRpc3RhbmNlLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSk7XHJcbiAgICBsZXQgdGhyZWVQb2ludCA9IENlc2l1bS5DYXJ0ZXNpYW4zLmFkZChlbmQsIG9mZnNldCwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpXHJcbiAgICBsZXQgbGFzdFBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuYWRkKHN0YXJ0LCBvZmZzZXQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKVxyXG4gICAgcmV0dXJuIFt7IC4uLnRocmVlUG9pbnQgfSwgeyAuLi5sYXN0UG9pbnQgfV1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlc2Mg5byA5aeL5Yqo5oCB57uY5Yi26Z2iXHJcbiAgICogQG1ldGhvZCBzdGFydFxyXG4gICAqIEBwYXJhbSBjYiB7ZnVuY3Rpb259IOWbnuiwg+WHveaVsFxyXG4gICAqIEBtZW1iZXJPZiBEcmF3UG9seWdvblxyXG4gICAqIEBleGFtcGxlIGRyYXcuc3RhcnQoKGVycixwb3NpdGlvbnMpPT57XHJcbiAgICpcclxuICAgKiB9KVxyXG4gICAqICovXHJcbiAgc3RhcnQoY2IpIHtcclxuICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBjYign5LiK5LiA5qyh5rWL6YeP5pyq57uT5p2fJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucG9seWdvbkhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gICAgICBsZXQgaW50b1xyXG4gICAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcCgn5bem6ZSu56Gu5a6a77yM5Y+z6ZSu57uT5p2f77ybQ1RSTCvlj7PplK7mkqTplIAnLCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICBsZXQgY250ID0gMFxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMucG9zaXRpb25zTGluZSA9IFtdXHJcbiAgICAgIHRoaXMucG9pbnRzX2lkcyA9IFtdIC8v5a2Y5pS+5bem6ZSu54K55Ye75pe25Li05pe25re75Yqg55qEcG9pbnTnmoRpZFxyXG4gICAgICBsZXQgY2FjaGVfcG9zaXRpb25zID0gW11cclxuICAgICAgbGV0IGNhY2hlXzg0X3Bvc2l0aW9uID0gW11cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpbnRvID0gJzNEJ1xyXG4gICAgICAgIGNudCsrXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBjYWNoZV9wb3NpdGlvbnMuY29uY2F0KHsgLi4uY2FydGVzaWFuIH0pXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi54LFxyXG4gICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgIClcclxuICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdUaHJlZVJlY3QuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYWNoZV9wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbikpXHJcbiAgICAgICAgaWYgKGNudCA9PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYihudWxsLCB0aGlzLnJlY3RPYmplY3QpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBsZXQgcG9zaXRpb25zID0gW11cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhjYWNoZV9wb3NpdGlvbnMpXHJcbiAgICAgICAgLy8gY2FjaGVfcG9zaXRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAvLyAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtKVxyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coaXRlbSlcclxuICAgICAgICAvLyAgIHBvc2l0aW9ucy5wdXNoKHApXHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoJ+WPlua2iCcsICcnKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBpZiAoaW50byA9PT0gJzJEJykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsXHJcbiAgICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55XHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNhY2hlX3Bvc2l0aW9ucykpXHJcbiAgICAgICAgICBsZXQgYXJyMSA9IGFyci5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICAgIGxldCBwb2ludEFyciA9IHRoaXMuY29tcHV0ZWRMYXN0UG9pbnQoYXJyMSlcclxuICAgICAgICAgIGFyciA9IGFyci5jb25jYXQocG9pbnRBcnIpXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGFyclxyXG4gICAgICAgICAgbGV0IGFycl84NCA9IGFyci5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMucmVjdE9iamVjdCA9IGFycl84NFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb2ludHNfaWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucG9wKClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKGludG8gPT09ICcyRCcpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfODRfcG9zaXRpb24pXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihcclxuICAgICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgICAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHBvbHlsaW5lX2lkID0gRHJhd1RocmVlUmVjdC5jcmVhdGVfcG9seWdvbih0aGlzKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHBvbHlsaW5lX2lkKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgY2FjaGVfODRfcG9zaXRpb24ucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4pKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBpZiAoIXRoaXMuX2lzMkQgJiYgdGhpcy5fc2RrMkQpIHtcclxuICAgICAgICB0aGlzLmV2ZW50MkQgPSBuZXcgTW91c2VFdmVudCh0aGlzLl9zZGsyRClcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbGVmdCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbnRvID0gJzJEJ1xyXG4gICAgICAgICAgY250KytcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhcnRlc2lhbiB9KVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oXHJcbiAgICAgICAgICAgIGNhcnRlc2lhbixcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueCArIHRoaXMudmlld2VyLmNhbnZhcy53aWR0aCxcclxuICAgICAgICAgICAgbW92ZW1lbnQucG9zaXRpb24ueVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgaWYgKCF0aGlzLnBvbHlnb25IYXNDcmVhdGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdUaHJlZVJlY3QuY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c19pZHMucHVzaChwb2x5bGluZV9pZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uLnB1c2godGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKSlcclxuICAgICAgICAgIHRoaXMucG9pbnRzX2lkcy5wdXNoKHRoaXMuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwgdGhpcy5fc2RrMkQudmlld2VyKSlcclxuICAgICAgICAgIGlmIChjbnQgPT0gMykge1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICAgIGNiKG51bGwsIHRoaXMucmVjdE9iamVjdClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgICBjYign5Y+W5raIJywgJycpXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmV2ZW50MkQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGludG8gPT09ICczRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXJ0ZXNpYW4gfSlcclxuICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4sXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnggKyB0aGlzLnZpZXdlci5jYW52YXMud2lkdGgsXHJcbiAgICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICBpZiAoY250ID09IDIpIHtcclxuICAgICAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY2FjaGVfcG9zaXRpb25zKSlcclxuICAgICAgICAgICAgbGV0IGFycjEgPSBhcnIuY29uY2F0KHsgLi4uY2FydGVzaWFuIH0pXHJcbiAgICAgICAgICAgIGxldCBwb2ludEFyciA9IHRoaXMuY29tcHV0ZWRMYXN0UG9pbnQoYXJyMSlcclxuICAgICAgICAgICAgYXJyID0gYXJyLmNvbmNhdChwb2ludEFycilcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBhcnJcclxuICAgICAgICAgICAgbGV0IGFycl84NCA9IGFyci5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMucmVjdE9iamVjdCA9IGFycl84NFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5ldmVudDJELm1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIGlmIChpbnRvID09PSAnM0QnKSB7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucG9pbnRzX2lkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eSh0aGlzLnBvaW50c19pZHMucG9wKCkpIC8v56e76ZmkcG9pbnRcclxuICAgICAgICAgICAgY2FjaGVfcG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICAgIGNhY2hlXzg0X3Bvc2l0aW9uLnBvcCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudDJELmdlc3R1cmVfcGluY2tfc3RhcnRfa2V5Ym9hcmRfY3RybCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnBvaW50c19pZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5wb2ludHNfaWRzLnBvcCgpKSAvL+enu+mZpHBvaW50XHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wb3AoKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnQyRC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaW50byA9PT0gJzNEJykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICB0aGlzLmV2ZW50MkQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgY2IobnVsbCwgY2FjaGVfODRfcG9zaXRpb24pXHJcbiAgICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgICAgICAgKChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIpICsgdGhpcy52aWV3ZXIuY2FudmFzLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMucG9seWdvbkhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBwb2x5bGluZV9pZCA9IERyYXdUaHJlZVJlY3QuY3JlYXRlX3BvbHlnb24odGhpcywgdGhpcy5fc2RrMkQudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2gocG9seWxpbmVfaWQpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgICAgICBjYWNoZV84NF9wb3NpdGlvbi5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcikpXHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludHNfaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB0aGlzLl9zZGsyRC52aWV3ZXIpKVxyXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FjaGVfcG9zaXRpb25zLmNvbmNhdChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRHJhd1RocmVlUmVjdFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF0U0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBK1FBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Draw/drawThreeRect.js\n");
-
-/***/ }),
-
-/***/ "./src/Event/index.js":
-/*!****************************!*\
- !*** ./src/Event/index.js ***!
- \****************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MouseEvent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-06-14 14:44\r\n * @description:index\r\n * @update: 2022-06-14 14:44\r\n */\nvar MouseEvent = /*#__PURE__*/function () {\n function MouseEvent(sdk) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MouseEvent);\n this.sdk = sdk;\n this.viewer = sdk.viewer;\n this.handler = new Cesium.ScreenSpaceEventHandler(this.viewer.canvas);\n }\n\n /*事件*/\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MouseEvent, [{\n key: \"mouse_left\",\n value: function mouse_left(cb) {\n var _this = this;\n // //左键点击事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this.getcartesian(movement);\n // cartesian = this.earth.czm.viewer.scene.pickPosition(movement.position)\n // if (!cartesian) {\n // cartesian = this.viewer.scene.camera.pickEllipsoid(\n // movement.position,\n // this.viewer.scene.globe.ellipsoid\n // )\n // }\n // if (cartesian) {\n // cb(movement, cartesian)\n // }\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n }\n }, {\n key: \"mouse_left_down\",\n value: function mouse_left_down(cb) {\n var _this2 = this;\n // //左键按下事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this2.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n }\n }, {\n key: \"mouse_left_up\",\n value: function mouse_left_up(cb) {\n var _this3 = this;\n // //左键抬起事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this3.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.LEFT_UP);\n }\n }, {\n key: \"mouse_move\",\n value: function mouse_move(cb) {\n var _this4 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this4.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n }\n }, {\n key: \"mouse_right\",\n value: function mouse_right(cb) {\n var _this5 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this5.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n }\n }, {\n key: \"mouse_right_down\",\n value: function mouse_right_down(cb) {\n var _this6 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this6.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n }\n }, {\n key: \"mouse_right_up\",\n value: function mouse_right_up(cb) {\n var _this7 = this;\n var allowNull = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this7.getcartesian(movement);\n if (cartesian || allowNull) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_UP);\n }\n }, {\n key: \"mouse_wheel\",\n value: function mouse_wheel(cb) {\n this.handler && this.handler.setInputAction(function () {\n cb();\n }, Cesium.ScreenSpaceEventType.WHEEL);\n }\n }, {\n key: \"getcartesian\",\n value: function getcartesian(movement) {\n // if (movement.endPosition) {\n // movement.endPosition.y -= 2\n // }\n var position = movement.position || movement.endPosition;\n if (movement.position1 && movement.position2) {\n position = {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n };\n }\n var cartesian = this.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = this.viewer.camera.getPickRay(position); //相交的射线\n var pickedObjects = this.viewer.scene.drillPickFromRay(ray, 10);\n var result = {};\n for (var i = 0; i < pickedObjects.length; i++) {\n if (pickedObjects[i].position) {\n result = pickedObjects[i];\n break;\n }\n }\n cartesian = result.position;\n if (!cartesian) {\n cartesian = this.viewer.scene.globe.pick(ray, this.viewer.scene);\n }\n }\n return cartesian;\n // return this.earth.czm.viewer.scene.pickPosition(position)\n }\n\n //鼠标右键+键盘ctrl\n }, {\n key: \"mouse_right_keyboard_ctrl\",\n value: function mouse_right_keyboard_ctrl(cb) {\n var _this8 = this;\n // //左键点击事件\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this8.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK, Cesium.KeyboardEventModifier.CTRL);\n }\n\n // 手势-双指触摸开始\n }, {\n key: \"gesture_pinck_start\",\n value: function gesture_pinck_start(cb) {\n var _this9 = this;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this9.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.PINCH_START);\n }\n\n //手势-双指触摸开始+键盘ctrl\n }, {\n key: \"gesture_pinck_start_keyboard_ctrl\",\n value: function gesture_pinck_start_keyboard_ctrl(cb) {\n var _this10 = this;\n this.handler && this.handler.setInputAction(function (movement) {\n var cartesian = _this10.getcartesian(movement);\n if (cartesian) {\n cb(movement, cartesian);\n }\n }, Cesium.ScreenSpaceEventType.PINCH_START, Cesium.KeyboardEventModifier.CTRL);\n }\n\n // 手势-双指触摸结束\n }, {\n key: \"gesture_pinck_end\",\n value: function gesture_pinck_end(cb) {\n this.handler && this.handler.setInputAction(function (movement) {\n cb();\n }, Cesium.ScreenSpaceEventType.PINCH_END);\n }\n\n // 手势-双指触摸修改\n }, {\n key: \"gesture_pinck_move\",\n value: function gesture_pinck_move(cb) {\n this.handler && this.handler.setInputAction(function (movement) {\n // let cartesian = this.getcartesian(movement)\n // if (cartesian) {\n // cb(movement, cartesian)\n // }\n }, Cesium.ScreenSpaceEventType.PINCH_MOVE);\n }\n }, {\n key: \"keyboard_ctrl_z\",\n value: function keyboard_ctrl_z(cb) {\n // // this.sdk.viewer.canvas.tabindex = 0\n // // this.sdk.viewer.canvas.focus()\n // let mapElm = this.sdk.viewer.canvas\n // mapElm.addEventListener('keydown', function(e) {\n // if (e.ctrlKey && e.key === 'z') {\n // e.preventDefault();\n // console.log('编辑器内触发 Ctrl + Z');\n // }\n // });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.handler) this.handler.destroy(); //关闭事件句柄\n this.handler = null;\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvRXZlbnQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvRXZlbnQvaW5kZXguanM/MzM1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDYtMTQgMTQ6NDRcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNi0xNCAxNDo0NFxyXG4gKi9cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vdXNlRXZlbnQge1xyXG4gIGNvbnN0cnVjdG9yKHNkaykge1xyXG4gICAgdGhpcy5zZGsgPSBzZGtcclxuICAgIHRoaXMudmlld2VyID0gc2RrLnZpZXdlclxyXG4gICAgdGhpcy5oYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihcclxuICAgICAgdGhpcy52aWV3ZXIuY2FudmFzXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKuS6i+S7tiovXHJcbiAgbW91c2VfbGVmdChjYikge1xyXG4gICAgLy8gLy/lt6bplK7ngrnlh7vkuovku7ZcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgLy8gY2FydGVzaWFuID0gdGhpcy5lYXJ0aC5jem0udmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgLy8gaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgLy8gICBjYXJ0ZXNpYW4gPSB0aGlzLnZpZXdlci5zY2VuZS5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgLy8gICAgIG1vdmVtZW50LnBvc2l0aW9uLFxyXG4gICAgICAvLyAgICAgdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkXHJcbiAgICAgIC8vICAgKVxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGlmIChjYXJ0ZXNpYW4pIHtcclxuICAgICAgLy8gICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICAvLyB9XHJcbiAgICAgIGlmIChjYXJ0ZXNpYW4pIHtcclxuICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuICB9XHJcblxyXG4gIG1vdXNlX2xlZnRfZG93bihjYikge1xyXG4gICAgLy8gLy/lt6bplK7mjInkuIvkuovku7ZcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0RPV04pXHJcbiAgfVxyXG4gIG1vdXNlX2xlZnRfdXAoY2IpIHtcclxuICAgIC8vIC8v5bem6ZSu5oqs6LW35LqL5Lu2XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcbiAgICAgIGlmIChjYXJ0ZXNpYW4pIHtcclxuICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9VUClcclxuICB9XHJcblxyXG4gIG1vdXNlX21vdmUoY2IsIGFsbG93TnVsbCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcblxyXG4gICAgICBpZiAoY2FydGVzaWFuIHx8IGFsbG93TnVsbCkge1xyXG4gICAgICAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKVxyXG4gIH1cclxuXHJcbiAgbW91c2VfcmlnaHQoY2IsIGFsbG93TnVsbCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcbiAgICAgIGlmIChjYXJ0ZXNpYW4gfHwgYWxsb3dOdWxsKSB7XHJcbiAgICAgICAgY2IobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgfVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG4gIH1cclxuXHJcbiAgbW91c2VfcmlnaHRfZG93bihjYiwgYWxsb3dOdWxsID0gZmFsc2UpIHtcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgaWYgKGNhcnRlc2lhbiB8fCBhbGxvd051bGwpIHtcclxuICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuUklHSFRfRE9XTilcclxuICB9XHJcblxyXG4gIG1vdXNlX3JpZ2h0X3VwKGNiLCBhbGxvd051bGwgPSBmYWxzZSkge1xyXG4gICAgdGhpcy5oYW5kbGVyICYmIHRoaXMuaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgICAgbGV0IGNhcnRlc2lhbiA9IHRoaXMuZ2V0Y2FydGVzaWFuKG1vdmVtZW50KVxyXG4gICAgICBpZiAoY2FydGVzaWFuIHx8IGFsbG93TnVsbCkge1xyXG4gICAgICAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9VUClcclxuICB9XHJcblxyXG4gIG1vdXNlX3doZWVsKGNiKSB7XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKCgpID0+IHtcclxuICAgICAgY2IoKVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLldIRUVMKVxyXG4gIH1cclxuXHJcbiAgZ2V0Y2FydGVzaWFuKG1vdmVtZW50KSB7XHJcbiAgICAvLyBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIC8vICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSAtPSAyXHJcbiAgICAvLyB9XHJcbiAgICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gICAgaWYobW92ZW1lbnQucG9zaXRpb24xICYmIG1vdmVtZW50LnBvc2l0aW9uMikge1xyXG4gICAgICBwb3NpdGlvbiA9IHtcclxuICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDIsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24ocG9zaXRpb24pXHJcbiAgICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgICBjb25zdCByYXkgPSB0aGlzLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGxldCBwaWNrZWRPYmplY3RzID0gdGhpcy52aWV3ZXIuc2NlbmUuZHJpbGxQaWNrRnJvbVJheShyYXksIDEwKTtcclxuICAgICAgbGV0IHJlc3VsdCA9IHt9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGlja2VkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChwaWNrZWRPYmplY3RzW2ldLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBwaWNrZWRPYmplY3RzW2ldXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjYXJ0ZXNpYW4gPSByZXN1bHQucG9zaXRpb25cclxuICAgICAgaWYoIWNhcnRlc2lhbikge1xyXG4gICAgICAgIGNhcnRlc2lhbiA9IHRoaXMudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCB0aGlzLnZpZXdlci5zY2VuZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjYXJ0ZXNpYW5cclxuICAgIC8vIHJldHVybiB0aGlzLmVhcnRoLmN6bS52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKHBvc2l0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy/pvKDmoIflj7PplK4r6ZSu55uYY3RybFxyXG4gIG1vdXNlX3JpZ2h0X2tleWJvYXJkX2N0cmwoY2IpIHtcclxuICAgIC8vIC8v5bem6ZSu54K55Ye75LqL5Lu2XHJcbiAgICB0aGlzLmhhbmRsZXIgJiYgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKFxyXG4gICAgICAobW92ZW1lbnQpID0+IHtcclxuICAgICAgICBsZXQgY2FydGVzaWFuID0gdGhpcy5nZXRjYXJ0ZXNpYW4obW92ZW1lbnQpXHJcbiAgICAgICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAgICAgY2IobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9DTElDSyxcclxuICAgICAgQ2VzaXVtLktleWJvYXJkRXZlbnRNb2RpZmllci5DVFJMXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvLyDmiYvlir8t5Y+M5oyH6Kem5pG45byA5aeLXHJcbiAgZ2VzdHVyZV9waW5ja19zdGFydChjYikge1xyXG4gICAgdGhpcy5oYW5kbGVyICYmIHRoaXMuaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgICAgbGV0IGNhcnRlc2lhbiA9IHRoaXMuZ2V0Y2FydGVzaWFuKG1vdmVtZW50KVxyXG4gICAgICBpZiAoY2FydGVzaWFuKSB7XHJcbiAgICAgICAgY2IobW92ZW1lbnQsIGNhcnRlc2lhbilcclxuICAgICAgfVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlBJTkNIX1NUQVJUKVxyXG4gIH1cclxuXHJcbiAgLy/miYvlir8t5Y+M5oyH6Kem5pG45byA5aeLK+mUruebmGN0cmxcclxuICBnZXN0dXJlX3BpbmNrX3N0YXJ0X2tleWJvYXJkX2N0cmwoY2IpIHtcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oXHJcbiAgICAgIChtb3ZlbWVudCkgPT4ge1xyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgICBpZiAoY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICBjYihtb3ZlbWVudCwgY2FydGVzaWFuKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlBJTkNIX1NUQVJULFxyXG4gICAgICBDZXNpdW0uS2V5Ym9hcmRFdmVudE1vZGlmaWVyLkNUUkxcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8vIOaJi+WKvy3lj4zmjIfop6bmkbjnu5PmnZ9cclxuICBnZXN0dXJlX3BpbmNrX2VuZChjYikge1xyXG4gICAgdGhpcy5oYW5kbGVyICYmIHRoaXMuaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgICAgY2IoKVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlBJTkNIX0VORClcclxuICB9XHJcblxyXG4gIC8vIOaJi+WKvy3lj4zmjIfop6bmkbjkv67mlLlcclxuICBnZXN0dXJlX3BpbmNrX21vdmUoY2IpIHtcclxuICAgIHRoaXMuaGFuZGxlciAmJiB0aGlzLmhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIC8vIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLmdldGNhcnRlc2lhbihtb3ZlbWVudClcclxuICAgICAgLy8gaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAvLyAgIGNiKG1vdmVtZW50LCBjYXJ0ZXNpYW4pXHJcbiAgICAgIC8vIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5QSU5DSF9NT1ZFKVxyXG4gIH1cclxuXHJcbiAga2V5Ym9hcmRfY3RybF96KGNiKSB7XHJcbiAgICAvLyAvLyB0aGlzLnNkay52aWV3ZXIuY2FudmFzLnRhYmluZGV4ID0gMFxyXG4gICAgLy8gLy8gdGhpcy5zZGsudmlld2VyLmNhbnZhcy5mb2N1cygpXHJcbiAgICAvLyBsZXQgbWFwRWxtID0gdGhpcy5zZGsudmlld2VyLmNhbnZhc1xyXG4gICAgLy8gbWFwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7XHJcbiAgICAvLyAgIGlmIChlLmN0cmxLZXkgJiYgZS5rZXkgPT09ICd6Jykge1xyXG4gICAgLy8gICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZygn57yW6L6R5Zmo5YaF6Kem5Y+RIEN0cmwgKyBaJyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmhhbmRsZXIpXHJcbiAgICAgIHRoaXMuaGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHRoaXMuaGFuZGxlciA9IG51bGxcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFTQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFFQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Event/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/ClickCallback/index.js":
-/*!*******************************************!*\
- !*** ./src/Global/ClickCallback/index.js ***!
- \*******************************************/
-/*! exports provided: openLeftClick, closeLeftClick, regLeftClickCallback, unRegLeftClickCallback, openRightClick, closeRightClick, regRightClickCallback, unRegRightClickCallback, openMove, closeMove, regMoveCallback, unregMoveCallback, getLeftClickState, getRightClickState, getMoveState */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openLeftClick\", function() { return openLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeLeftClick\", function() { return closeLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regLeftClickCallback\", function() { return regLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegLeftClickCallback\", function() { return unRegLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openRightClick\", function() { return openRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRightClick\", function() { return closeRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regRightClickCallback\", function() { return regRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegRightClickCallback\", function() { return unRegRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openMove\", function() { return openMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeMove\", function() { return closeMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regMoveCallback\", function() { return regMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregMoveCallback\", function() { return unregMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLeftClickState\", function() { return getLeftClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRightClickState\", function() { return getRightClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMoveState\", function() { return getMoveState; });\n/**\r\n * @name: click\r\n * @author: Administrator\r\n * @date: 2023-05-28 11:05\r\n * @description:click\r\n * @update: 2023-05-28 11:05\r\n */\nvar leftClickHandler = null;\nvar rightClickHandler = null;\nvar MoveHandler = null;\nvar leftClickCallbackMap = new Map();\nvar rightClickCallbackMap = new Map();\nvar MoveCallbackMap = new Map();\nvar selectedFeature;\nfunction cartesian3Towgs84(cartesian, viewer) {\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n}\nfunction getcartesian(sdk, movement) {\n if (movement.endPosition) {\n movement.endPosition.y -= 2;\n }\n var position = movement.position || movement.endPosition;\n // 获取世界坐标系地表坐标,考虑地形,不包括模型,倾斜摄影模型表面;\n var cartesian = sdk.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n return cartesian;\n}\nfunction openLeftClick(sdk, cb) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n var click = true;\n leftClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n leftClickHandler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(movement.position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n if (!cartesian) {\n return;\n }\n var pos84 = cartesian3Towgs84(cartesian, sdk.viewer);\n cb && cb(pos84);\n if (click) {\n click = false;\n setTimeout(function () {\n click = true;\n }, 600);\n if (!YJ.Measure.GetMeasureStatus() && cartesian) {\n var flag = false;\n for (var i = leftClickCallbackMap.size - 1; i >= 0; i--) {\n var key = Array.from(leftClickCallbackMap.keys())[i];\n var obj = leftClickCallbackMap.get(key);\n if (obj) {\n if (obj.that && obj.that.show) {\n // 是否为多边形\n if (obj.that.type === 'PolygonObject') {\n // 是否可点击y\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var pt = turf.point([pos84.lng, pos84.lat]);\n var polyPos = [];\n for (var _i = 0; _i < obj.that.options.positions.length; _i++) {\n polyPos.push([obj.that.options.positions[_i].lng, obj.that.options.positions[_i].lat]);\n }\n polyPos.push([obj.that.options.positions[0].lng, obj.that.options.positions[0].lat]);\n var poly = turf.polygon([polyPos]);\n var contain = turf.booleanPointInPolygon(pt, poly);\n if (contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 聚集地\n else if (obj.that.type === 'AssembleObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var positions = obj.that.computeAssemble(obj.that.options.positions, true);\n var _pt = turf.point([pos84.lng, pos84.lat]);\n var _polyPos = [];\n for (var _i2 = 0; _i2 < positions.length; _i2 += 2) {\n _polyPos.push([positions[_i2], positions[_i2 + 1]]);\n }\n var _poly = turf.polygon([_polyPos]);\n var _contain = turf.booleanPointInPolygon(_pt, _poly);\n if (_contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 单箭头\n else if (obj.that.type === 'AttackArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var _pt2 = turf.point([pos84.lng, pos84.lat]);\n var _positions = obj.that.computeAttackArrow(obj.that.options.positions);\n var _polyPos2 = [];\n for (var m = 0; m < _positions.length; m++) {\n var _pos = cartesian3Towgs84(_positions[m], sdk.viewer);\n _polyPos2.push([_pos.lng, _pos.lat]);\n }\n var _poly2 = turf.polygon([_polyPos2]);\n var _contain2 = turf.booleanPointInPolygon(_pt2, _poly2);\n if (_contain2) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 双箭头\n else if (obj.that.type === 'PincerArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 5) {\n var _pt3 = turf.point([pos84.lng, pos84.lat]);\n var _positions2 = obj.that.computePincerArrow(obj.that.options.positions);\n var _polyPos3 = [];\n for (var _m = 0; _m < _positions2.length; _m++) {\n var _pos2 = cartesian3Towgs84(_positions2[_m], sdk.viewer);\n _polyPos3.push([_pos2.lng, _pos2.lat]);\n }\n var pos84_0 = cartesian3Towgs84(_positions2[0], sdk.viewer);\n _polyPos3.push([pos84_0.lng, pos84_0.lat]);\n var _poly3 = turf.polygon([_polyPos3]);\n var _contain3 = turf.booleanPointInPolygon(_pt3, _poly3);\n if (_contain3) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 圆\n else if (obj.that.type === 'CircleObject') {\n if (obj.that.picking) {\n var _pt4 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius) {\n var center = [obj.that.options.center.lng, obj.that.options.center.lat];\n var radius = obj.that.options.radius / 1000;\n var options = {\n steps: 360,\n units: 'kilometers'\n };\n var circle = turf.circle(center, radius, options);\n var _contain4 = turf.booleanPointInPolygon(_pt4, circle);\n if (_contain4) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 扇形\n else if (obj.that.type === 'SectorObject') {\n if (obj.that.picking) {\n var _pt5 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius && obj.that.options.startAngle && obj.that.options.endAngle) {\n var _positions3 = obj.that.calSector(obj.that.options.center, obj.that.options.radius, obj.that.options.startAngle, obj.that.options.endAngle, undefined, true);\n var _polyPos4 = [];\n for (var _m2 = 0; _m2 < _positions3.length; _m2++) {\n _polyPos4.push([_positions3[_m2].lng, _positions3[_m2].lat]);\n }\n var _poly4 = turf.polygon([_polyPos4]);\n var _contain5 = turf.booleanPointInPolygon(_pt5, _poly4);\n if (_contain5) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n }\n }\n }\n if (!flag) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n var entityId;\n // 矢量\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var _obj = leftClickCallbackMap.get(pick.id.parentId);\n if (_obj && _obj.that && _obj.that.picking && _obj.that.geojson && _obj.that.show) {\n for (var _i3 = 0; _i3 < _obj.that.geojson.features.length; _i3++) {\n if (_obj.that.geojson.features[_i3].id === pick.id._id) {\n _obj.callback(movement, _obj.that.geojson.features[_i3].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj.that);\n }\n }\n }\n } else if (typeof pick.id.id == 'string') {\n var array = pick.id.id.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n }\n if (pick.id.properties && pick.id.properties.id && leftClickCallbackMap.has(pick.id.properties.id._value)) {\n var _obj2 = leftClickCallbackMap.get(pick.id.properties.id._value);\n if (_obj2 && _obj2.that && _obj2.that.picking && _obj2.that.show) {\n _obj2.callback(movement, pick.id.properties.id._value, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj2.that);\n }\n } else if (leftClickCallbackMap.has(pick.id.id)) {\n var _obj3 = leftClickCallbackMap.get(pick.id.id);\n if (_obj3 && _obj3.that && _obj3.that.picking && _obj3.that.show) {\n _obj3.callback(movement, pick.id.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj3.that);\n }\n } else if (entityId && leftClickCallbackMap.has(entityId)) {\n var _obj4 = leftClickCallbackMap.get(entityId);\n if (_obj4 && _obj4.that && _obj4.that.picking && _obj4.that.show) {\n _obj4.callback(movement, entityId, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj4.that);\n }\n } else if (pick.primitive) {\n if (typeof pick.id == 'string' && leftClickCallbackMap.has(pick.id)) {\n var _obj5 = leftClickCallbackMap.get(pick.id);\n if (_obj5 && _obj5.that && _obj5.that.picking && _obj5.that.show) {\n _obj5.callback(movement, pick.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj5.that);\n }\n }\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n if (leftClickCallbackMap.has(pick.primitive.id)) {\n var _obj6 = leftClickCallbackMap.get(pick.primitive.id);\n if (_obj6 && _obj6.that && _obj6.that.picking && _obj6.that.show) {\n if (_obj6.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj6.callback(movement, pick.primitive, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n } else {\n _obj6.callback(movement, pick.primitive.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n }\n }\n }\n }\n if (pick.content && (!pick.primitive || !pick.primitive.id)) {\n if (leftClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj7 = leftClickCallbackMap.get(pick.content.tileset.id);\n if (_obj7 && _obj7.that && _obj7.that.picking && _obj7.that.show) {\n if (_obj7.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj7.callback(movement, pick.content.tileset, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n } else {\n _obj7.callback(movement, pick.content.tileset.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // if (click) {\n // click = false\n // setTimeout(() => {\n // click = true\n // }, 300);\n // if (!YJ.Measure.GetMeasureStatus()) {\n\n // }\n // }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n\n // leftClickHandler.setInputAction(function (movement) {\n // const feature = sdk.viewer.scene.pick(movement.endPosition);\n // // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // selectedFeature.color = Cesium.Color.WHITE;\n // }\n // selectedFeature = feature\n // if (feature) {\n // feature.color = Cesium.Color.YELLOW;\n // }\n // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // }\n}\nfunction closeLeftClick(sdk) {\n leftClickHandler.destroy(); //关闭事件句柄\n leftClickHandler = null;\n // }\n}\nfunction openRightClick(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n rightClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n rightClickHandler.setInputAction(function (movement) {\n if (!YJ.Measure.GetMeasureStatus()) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id) {\n var id;\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var obj = rightClickCallbackMap.get(pick.id.parentId);\n if (obj && obj.that && obj.that.picking && obj.that.geojson && obj.that.show) {\n for (var i = 0; i < obj.that.geojson.features.length; i++) {\n if (obj.that.geojson.features[i].id === pick.id._id) {\n obj.callback(movement, obj.that.geojson.features[i].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n }\n }\n }\n } else {\n if (typeof pick.id === 'string') {\n id = pick.id;\n } else {\n id = pick.id.id;\n }\n if (rightClickCallbackMap.has(id)) {\n var _obj8 = rightClickCallbackMap.get(id);\n if (_obj8 && _obj8.that && _obj8.that.picking && _obj8.that.show) {\n var cartesian = getcartesian(sdk, movement);\n if (!cartesian) {\n return;\n }\n _obj8.callback(movement, id, cartesian3Towgs84(cartesian, sdk.viewer), _obj8.that);\n }\n }\n }\n }\n if (pick && pick.content) {\n if (rightClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj9 = rightClickCallbackMap.get(pick.content.tileset.id);\n if (_obj9 && _obj9.that && _obj9.that.picking && _obj9.that.show) {\n if (_obj9.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n var _cartesian = getcartesian(sdk, movement);\n if (!_cartesian) {\n return;\n }\n _obj9.callback(movement, pick.getProperty('id'), cartesian3Towgs84(_cartesian, sdk.viewer), _obj9.that);\n }\n } else {\n var _cartesian2 = getcartesian(sdk, movement);\n if (!_cartesian2) {\n return;\n }\n _obj9.callback(movement, pick.content.tileset.id, cartesian3Towgs84(_cartesian2, sdk.viewer), _obj9.that);\n }\n }\n }\n }\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n}\nfunction closeRightClick() {\n if (rightClickHandler) {\n rightClickHandler.destroy(); //关闭事件句柄\n rightClickHandler = null;\n }\n}\nfunction openMove(sdk) {\n MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n // if (pick && pick.id) { }\n // if (pick && pick.content) {\n // if (MoveCallbackMap.has(pick.content.tileset.id)) {\n // let obj = MoveCallbackMap.get(pick.content.tileset.id)\n // if (obj.that.picking) {\n // if (obj.that.type === 'bim') {\n // if (YJ.Global.getBimPickStatus(sdk)) {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // else {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction closeMove() {\n if (MoveHandler) {\n MoveHandler.destroy(); //关闭事件句柄\n MoveHandler = null;\n }\n}\n\n/*注册左键回调*/\nfunction regLeftClickCallback(id, callback, that) {\n leftClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unRegLeftClickCallback(id) {\n leftClickCallbackMap.delete(id);\n}\n\n/*注册右键回调*/\nfunction regRightClickCallback(id, callback, that) {\n rightClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消右键回调*/\nfunction unRegRightClickCallback(id) {\n rightClickCallbackMap.delete(id);\n}\n\n/*注册左键回调*/\nfunction regMoveCallback(id, callback, that) {\n MoveCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unregMoveCallback(id) {\n MoveCallbackMap.delete(id);\n}\nfunction getLeftClickState() {\n if (leftClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getRightClickState() {\n if (rightClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getMoveState() {\n if (MoveHandler) {\n return true;\n } else {\n false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0NsaWNrQ2FsbGJhY2svaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0NsaWNrQ2FsbGJhY2svaW5kZXguanM/Mzc4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGNsaWNrXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMDUtMjggMTE6MDVcclxuICogQGRlc2NyaXB0aW9u77yaY2xpY2tcclxuICogQHVwZGF0ZTogMjAyMy0wNS0yOCAxMTowNVxyXG4gKi9cclxubGV0IGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbmxldCByaWdodENsaWNrSGFuZGxlciA9IG51bGxcclxubGV0IE1vdmVIYW5kbGVyID0gbnVsbFxyXG5sZXQgbGVmdENsaWNrQ2FsbGJhY2tNYXAgPSBuZXcgTWFwKClcclxubGV0IHJpZ2h0Q2xpY2tDYWxsYmFja01hcCA9IG5ldyBNYXAoKVxyXG5sZXQgTW92ZUNhbGxiYWNrTWFwID0gbmV3IE1hcCgpXHJcbmxldCBzZWxlY3RlZEZlYXR1cmU7XHJcblxyXG5cclxuZnVuY3Rpb24gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB2aWV3ZXIpIHtcclxuICB2YXIgZWxsaXBzb2lkID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgY2FydGVzaWFuLngsXHJcbiAgICBjYXJ0ZXNpYW4ueSxcclxuICAgIGNhcnRlc2lhbi56XHJcbiAgKVxyXG4gIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICB2YXIgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4ge1xyXG4gICAgbG5nOiBsbmcsXHJcbiAgICBsYXQ6IGxhdCxcclxuICAgIGFsdDogYWx0LFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpIHtcclxuICBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLT0gMlxyXG4gIH1cclxuICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gIC8vIOiOt+WPluS4lueVjOWdkOagh+ezu+WcsOihqOWdkOagh++8jOiAg+iZkeWcsOW9ou+8jOS4jeWMheaLrOaooeWei++8jOWAvuaWnOaRhOW9seaooeWei+ihqOmdou+8m1xyXG4gIGxldCBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihwb3NpdGlvbilcclxuICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCBzZGsudmlld2VyLnNjZW5lKTtcclxuICB9XHJcbiAgcmV0dXJuIGNhcnRlc2lhblxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuTGVmdENsaWNrKHNkaywgY2IpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjbGljayA9IHRydWVcclxuICBsZWZ0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5wb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXksIHNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG5cclxuICAgIGNiICYmIGNiKHBvczg0KVxyXG5cclxuICAgIGlmIChjbGljaykge1xyXG4gICAgICBjbGljayA9IGZhbHNlXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNsaWNrID0gdHJ1ZVxyXG4gICAgICB9LCA2MDApO1xyXG4gICAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpICYmIGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICBmb3IgKGxldCBpID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gQXJyYXkuZnJvbShsZWZ0Q2xpY2tDYWxsYmFja01hcC5rZXlzKCkpW2ldXHJcbiAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KGtleSlcclxuICAgICAgICAgIGlmIChvYmopIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdCAmJiBvYmoudGhhdC5zaG93KSB7XHJcbiAgICAgICAgICAgICAgLy8g5piv5ZCm5Li65aSa6L655b2iXHJcbiAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnR5cGUgPT09ICdQb2x5Z29uT2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgLy8g5piv5ZCm5Y+v54K55Ye7eVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zICYmIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9uc1tpXS5sYXRcclxuICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9uc1swXS5sYXRcclxuICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOiBmumbhuWcsFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdBc3NlbWJsZU9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jb21wdXRlQXNzZW1ibGUob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpICs9IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tpXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zW2kgKyAxXVxyXG4gICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHkgPSB0dXJmLnBvbHlnb24oW3BvbHlQb3NdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBwb2x5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5Y2V566t5aS0XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ0F0dGFja0Fycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zICYmIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gb2JqLnRoYXQuY29tcHV0ZUF0dGFja0Fycm93KG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5UG9zID0gW11cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zW21dLCBzZGsudmlld2VyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWPjOeureWktFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNvbXB1dGVQaW5jZXJBcnJvdyhvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3M4NCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1ttXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zODQubG5nLCBwb3M4NC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zODRfMCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1swXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW3Bvczg0XzAubG5nLCBwb3M4NF8wLmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHkgPSB0dXJmLnBvbHlnb24oW3BvbHlQb3NdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBwb2x5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5ZyGXHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ0NpcmNsZU9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLmNlbnRlciAmJiBvYmoudGhhdC5vcHRpb25zLnJhZGl1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjZW50ZXIgPSBbb2JqLnRoYXQub3B0aW9ucy5jZW50ZXIubG5nLCBvYmoudGhhdC5vcHRpb25zLmNlbnRlci5sYXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByYWRpdXMgPSBvYmoudGhhdC5vcHRpb25zLnJhZGl1cyAvIDEwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IHN0ZXBzOiAzNjAsIHVuaXRzOiAna2lsb21ldGVycycgfTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2lyY2xlID0gdHVyZi5jaXJjbGUoY2VudGVyLCByYWRpdXMsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIGNpcmNsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDmiYflvaJcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnU2VjdG9yT2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHB0ID0gdHVyZi5wb2ludChbcG9zODQubG5nLCBwb3M4NC5sYXRdKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lm9wdGlvbnMuY2VudGVyICYmIG9iai50aGF0Lm9wdGlvbnMucmFkaXVzICYmIG9iai50aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSAmJiBvYmoudGhhdC5vcHRpb25zLmVuZEFuZ2xlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNhbFNlY3RvcihvYmoudGhhdC5vcHRpb25zLmNlbnRlciwgb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMsIG9iai50aGF0Lm9wdGlvbnMuc3RhcnRBbmdsZSwgb2JqLnRoYXQub3B0aW9ucy5lbmRBbmdsZSwgdW5kZWZpbmVkLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5UG9zID0gW11cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3NpdGlvbnNbbV0ubG5nLCBwb3NpdGlvbnNbbV0ubGF0XSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHkgPSB0dXJmLnBvbHlnb24oW3BvbHlQb3NdKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBwb2x5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgICAgIGlmIChwaWNrKSB7XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmlkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGVudGl0eUlkXHJcbiAgICAgICAgICAgICAgLy8g55+i6YePXHJcbiAgICAgICAgICAgICAgaWYgKHBpY2suaWQudHlwZSAmJiBwaWNrLmlkLnR5cGUgPT09ICd2ZWN0b3InICYmIHBpY2suaWQucGFyZW50SWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5pZC5wYXJlbnRJZClcclxuICAgICAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLnRoYXQgJiYgb2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5nZW9qc29uICYmIG9iai50aGF0LnNob3cpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQgPT09IHBpY2suaWQuX2lkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBpY2suaWQuaWQgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IHBpY2suaWQuaWQuc3BsaXQoJy0nKVxyXG4gICAgICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGFycmF5Lmxlbmd0aCAtIDEsIDEpXHJcbiAgICAgICAgICAgICAgICBlbnRpdHlJZCA9IGFycmF5LmpvaW4oJy0nKVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHBpY2suaWQucHJvcGVydGllcyAmJiBwaWNrLmlkLnByb3BlcnRpZXMuaWQgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgcGljay5pZC5wcm9wZXJ0aWVzLmlkLl92YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAobGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgcGljay5pZC5pZCxcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5SWQgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKGVudGl0eUlkKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChlbnRpdHlJZClcclxuICAgICAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLnRoYXQgJiYgb2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5zaG93KSB7XHJcbiAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHlJZCxcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAocGljay5wcmltaXRpdmUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PSAnc3RyaW5nJyAmJiBsZWZ0Q2xpY2tDYWxsYmFja01hcC5oYXMocGljay5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkKVxyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGljay5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLnByaW1pdGl2ZSAmJiBwaWNrLnByaW1pdGl2ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLnByaW1pdGl2ZS5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLnByaW1pdGl2ZS5pZClcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iaiAmJiBvYmoudGhhdCAmJiBvYmoudGhhdC5waWNraW5nICYmIG9iai50aGF0LnNob3cpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChZSi5HbG9iYWwuZ2V0QmltUGlja1N0YXR1cyhzZGspKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmNvbnRlbnQgJiYgKCFwaWNrLnByaW1pdGl2ZSB8fCAhcGljay5wcmltaXRpdmUuaWQpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmNvbnRlbnQudGlsZXNldC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGljay5jb250ZW50LnRpbGVzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpY2suY29udGVudC50aWxlc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaWYgKGNsaWNrKSB7XHJcbiAgICAvLyAgIGNsaWNrID0gZmFsc2VcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgY2xpY2sgPSB0cnVlXHJcbiAgICAvLyAgIH0sIDMwMCk7XHJcbiAgICAvLyAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuXHJcbiAgLy8gbGVmdENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbiAobW92ZW1lbnQpIHtcclxuICAvLyAgIGNvbnN0IGZlYXR1cmUgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQuZW5kUG9zaXRpb24pO1xyXG4gIC8vICAgLy8gdW5zZWxlY3RGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSk7XHJcbiAgLy8gICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XHJcbiAgLy8gICAgIHNlbGVjdGVkRmVhdHVyZS5jb2xvciA9IENlc2l1bS5Db2xvci5XSElURTtcclxuICAvLyAgIH1cclxuICAvLyAgIHNlbGVjdGVkRmVhdHVyZSA9IGZlYXR1cmVcclxuICAvLyAgIGlmIChmZWF0dXJlKSB7XHJcbiAgLy8gICAgIGZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKTtcclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZUxlZnRDbGljayhzZGspIHtcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gIGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbiAgLy8gfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuUmlnaHRDbGljayhzZGspIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICByaWdodENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCkge1xyXG4gICAgICAgIGxldCBpZFxyXG4gICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gcmlnaHRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnBhcmVudElkKVxyXG4gICAgICAgICAgaWYgKG9iaiAmJiBvYmoudGhhdCAmJiBvYmoudGhhdC5waWNraW5nICYmIG9iai50aGF0Lmdlb2pzb24gJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAob2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9PT0gcGljay5pZC5faWQpIHtcclxuICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgIG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRDbGlja0NhbGxiYWNrTWFwLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQoaWQpXHJcbiAgICAgICAgICAgIGlmIChvYmogJiYgb2JqLnRoYXQgJiYgb2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5zaG93KSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaWNrICYmIHBpY2suY29udGVudCkge1xyXG4gICAgICAgIGlmIChyaWdodENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suY29udGVudC50aWxlc2V0LmlkKSkge1xyXG4gICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICBpZiAob2JqICYmIG9iai50aGF0ICYmIG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuc2hvdykge1xyXG4gICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICBwaWNrLmdldFByb3BlcnR5KCdpZCcpLFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBwaWNrLmNvbnRlbnQudGlsZXNldC5pZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVJpZ2h0Q2xpY2soKSB7XHJcbiAgaWYgKHJpZ2h0Q2xpY2tIYW5kbGVyKSB7XHJcbiAgICByaWdodENsaWNrSGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbnVsbFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gb3Blbk1vdmUoc2RrKSB7XHJcbiAgTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIE1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICAvLyB1bnNlbGVjdEZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlKTtcclxuICAgIC8vIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHBpY2sgJiYgcGljay5pZCkgeyB9XHJcbiAgICAvLyBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgIC8vICAgaWYgKE1vdmVDYWxsYmFja01hcC5oYXMocGljay5jb250ZW50LnRpbGVzZXQuaWQpKSB7XHJcbiAgICAvLyAgICAgbGV0IG9iaiA9IE1vdmVDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAvLyAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgIC8vICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnYmltJykge1xyXG4gICAgLy8gICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgLy8gICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IHBpY2tcclxuICAgIC8vICAgICAgICAgICBwaWNrLmNvbG9yID0gQ2VzaXVtLkNvbG9yLllFTExPVztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBudWxsXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBwaWNrXHJcbiAgICAvLyAgICAgICAgIHBpY2suY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IG51bGxcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3NlTW92ZSgpIHtcclxuICBpZiAoTW92ZUhhbmRsZXIpIHtcclxuICAgIE1vdmVIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gICAgTW92ZUhhbmRsZXIgPSBudWxsXHJcbiAgfVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGlkLCBjYWxsYmFjaywgdGhhdCkge1xyXG5cclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5zZXQoaWQsIHsgY2FsbGJhY2ssIHRoYXQgfSlcclxufS8q5Y+W5raI5bem6ZSu5Zue6LCDKi9cclxuZnVuY3Rpb24gdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjayhpZCwpIHtcclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICByaWdodENsaWNrQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVuUmVnUmlnaHRDbGlja0NhbGxiYWNrKGlkLCkge1xyXG4gIHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ01vdmVDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICBNb3ZlQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVucmVnTW92ZUNhbGxiYWNrKGlkLCkge1xyXG4gIE1vdmVDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMZWZ0Q2xpY2tTdGF0ZSgpIHtcclxuICBpZiAobGVmdENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UmlnaHRDbGlja1N0YXRlKCkge1xyXG4gIGlmIChyaWdodENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TW92ZVN0YXRlKCkge1xyXG4gIGlmIChNb3ZlSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IG9wZW5MZWZ0Q2xpY2ssIGNsb3NlTGVmdENsaWNrLCByZWdMZWZ0Q2xpY2tDYWxsYmFjaywgdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjaywgb3BlblJpZ2h0Q2xpY2ssIGNsb3NlUmlnaHRDbGljaywgcmVnUmlnaHRDbGlja0NhbGxiYWNrLCB1blJlZ1JpZ2h0Q2xpY2tDYWxsYmFjaywgb3Blbk1vdmUsIGNsb3NlTW92ZSwgcmVnTW92ZUNhbGxiYWNrLCB1bnJlZ01vdmVDYWxsYmFjaywgZ2V0TGVmdENsaWNrU3RhdGUsIGdldFJpZ2h0Q2xpY2tTdGF0ZSwgZ2V0TW92ZVN0YXRlIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/ClickCallback/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/Contour/_element.js":
-/*!****************************************!*\
- !*** ./src/Global/Contour/_element.js ***!
- \****************************************/
-/*! exports provided: html */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n \\n
\\n
\\n \\u7B49\\u9AD8\\u7EBF\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\u7B49\\u9AD8\\u8DDD\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n
\\u9009\\u4E2D\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\u8BA1\\u66F2\\u7EBF\\n \\n
\\n
\\n
\\u8BA1\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n
\\u8BA1\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u9996\\u66F2\\u7EBF\\n \\n
\\n
\\n
\\u9996\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n
\\u9996\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u95F4\\u66F2\\u7EBF\\n \\n
\\n
\\n
\\u95F4\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n
\\u95F4\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n
\\n \\u52A9\\u66F2\\u7EBF\\n \\n
\\n
\\n
\\u52A9\\u66F2\\u7EBF\\u989C\\u8272\\n
\\n
\\n
\\n
\\u52A9\\u66F2\\u7EBF\\u5BBD\\u5EA6\\n
\\n \\n px\\n \\n
\\n
\\n
\\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0NvbnRvdXIvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0NvbnRvdXIvX2VsZW1lbnQuanM/ZGJmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuetiemrmOe6vzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2ggc2hvd1wiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7nrYnpq5jot508L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBlcXVhbC1oZWlnaHQtZGlzdGFuY2VcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiMTAwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIiAgc3R5bGU9XCJmbGV4OiAwIDAgNjBweDtcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCIgc3R5bGU9XCJmbGV4OiAwIDAgMTU3cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6YCJ5Lit57q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGl2ZS1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJmbGV4OiAwIDAgMTIwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6K6h5puy57q/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLXN3aXRjaCBpbmRleC1jb250b3VyLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7orqHmm7Lnur/popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5kZXgtY29udG91ci1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7orqHmm7Lnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpbmRleC1jb250b3VyLXdpZHRoXCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgc3RlcD1cIjAuMVwiIG1pbj1cIjFcIiBtYXg9XCIxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pppbmm7Lnur88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoIGludGVybWVkaWF0ZS1jb250b3VyLXN3aXRjaFwiIHR5cGU9XCJjaGVja2JveFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pppbmm7Lnur/popzoibI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW50ZXJtZWRpYXRlLWNvbnRvdXItY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6aaW5puy57q/5a695bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaW50ZXJtZWRpYXRlLWNvbnRvdXItd2lkdGhcIiB0eXBlPVwibnVtYmVyXCIgc3RlcD1cIjAuMVwiIHRpdGxlPVwiXCIgbWluPVwiMVwiIG1heD1cIjEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCI+cHg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiZmxleDogMCAwIDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumXtOabsue6vzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2ggaGFsZkludGVydmFsLWNvbnRvdXItc3dpdGNoXCIgdHlwZT1cImNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGlucHV0LXNlbGVjdC11bml0LWJveFwiIHN0eWxlPVwiZmxleDogMCAwIDEyMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumXtOabsue6v+minOiJsjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYWxmSW50ZXJ2YWwtY29udG91ci1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7pl7Tmm7Lnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBoYWxmSW50ZXJ2YWwtY29udG91ci13aWR0aFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCIxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPnB4PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cImZsZXg6IDAgMCAxMjBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqnmm7Lnur88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tc3dpdGNoIHN1cHBsZW1lbnRhcnktY29udG91ci1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgaW5wdXQtc2VsZWN0LXVuaXQtYm94XCIgc3R5bGU9XCJmbGV4OiAwIDAgMTIwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Yqp5puy57q/6aKc6ImyPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cHBsZW1lbnRhcnktY29udG91ci1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBpbnB1dC1zZWxlY3QtdW5pdC1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7liqnmm7Lnur/lrr3luqY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtbnVtYmVyIGlucHV0LW51bWJlci11bml0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBzdXBwbGVtZW50YXJ5LWNvbnRvdXItd2lkdGhcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5weDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUF5R0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/Contour/_element.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/Contour/index.js":
-/*!*************************************!*\
- !*** ./src/Global/Contour/index.js ***!
- \*************************************/
-/*! exports provided: dialog, startDraw, reset, setVal */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dialog\", function() { return dialog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startDraw\", function() { return startDraw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return reset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVal\", function() { return setVal; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Obj/Element/yj-color-picker */ \"./src/Obj/Element/yj-color-picker.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_element */ \"./src/Global/Contour/_element.js\");\n\n\n/**\r\n * 等高线\r\n */\n\n\n\n\n\nvar _DialogObject = null;\nvar material = null;\nvar handler = null;\nvar activeHeightElm = null;\nvar tools;\nvar _sdk;\nvar secondaryLinesCount = 19;\nvar show = true;\nvar equalHeightDistance = 10;\nvar activeColor = '#ffd000';\nvar indexContourShow = true;\nvar indexContourWidth = 2.5;\nvar indexContourColor = '#43cf7c';\nvar intermediateContourShow = true;\nvar intermediateContourWidth = 1.8;\nvar intermediateContourColor = '#ff0000';\nvar halfIntervalContourShow = false;\nvar halfIntervalContourWidth = 1.0;\nvar halfIntervalContourColor = '#64b6d9';\nvar supplementaryContourShow = false;\nvar supplementaryContourWidth = 1.0;\nvar supplementaryContourColor = '#d084d1';\nvar paramData = {};\nactiveHeightElm = document.createElement('div');\nactiveHeightElm.className = 'YJ-customize-active-height-elm';\nactiveHeightElm.style.position = 'absolute';\nactiveHeightElm.style.left = '10px';\nactiveHeightElm.style.top = '10px';\nactiveHeightElm.style.width = '100px';\n// activeHeightElm.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'\nactiveHeightElm.style.textAlign = 'center';\nactiveHeightElm.style.pointerEvents = 'none';\nactiveHeightElm.style.color = '#ff0000';\nactiveHeightElm.style.display = 'none';\nfunction accordingToCameraHeight() {\n if (_sdk) {\n var camera = _sdk.viewer.camera;\n var position = camera.positionCartographic;\n\n // 计算相机高度(相对于椭球面)\n var cameraHeight = Cesium.Math.toDegrees(position.height);\n if (cameraHeight < 1000000) {\n if (!_sdk.viewer.scene.globe.material && show === true) {\n showContour(_sdk);\n }\n // if (material) {\n // if (cameraHeight > 450000) {\n // material.uniforms.supplementaryContourShow = false\n // }\n // else if (supplementaryContourShow) {\n // material.uniforms.supplementaryContourShow = true\n // }\n // }\n } else {\n hideContour(_sdk);\n }\n // console.log(cameraHeight)\n }\n}\nfunction startDraw(sdk, showData) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n if (showData) {\n var terrainAvailability = sdk.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n return '未加载地形数据!';\n }\n }\n show = showData;\n Object.keys(paramData).forEach(function (item) {\n material.uniforms[item] = paramData[item];\n });\n if (show) {\n var height = sdk.viewer.camera.positionCartographic.height;\n if (height > 16360) {\n var cartographic = sdk.viewer.camera.positionCartographic;\n var options = {\n position: {\n lng: Cesium.Math.toDegrees(cartographic.longitude),\n lat: Cesium.Math.toDegrees(cartographic.latitude),\n alt: 16360\n }\n };\n Object(_global__WEBPACK_IMPORTED_MODULE_4__[\"flyTo\"])(sdk, options, 0.5);\n }\n showContour(sdk);\n } else {\n hideContour(sdk);\n }\n}\nfunction reset() {\n // if (handler) {\n // handler.destroy()\n // }\n secondaryLinesCount = 19;\n // show = true\n equalHeightDistance = 10;\n activeColor = '#ffd000';\n indexContourShow = true;\n indexContourWidth = 2.5;\n indexContourColor = '#43cf7c';\n intermediateContourShow = true;\n intermediateContourWidth = 1.8;\n intermediateContourColor = '#ff0000';\n halfIntervalContourShow = false;\n halfIntervalContourWidth = 1.0;\n halfIntervalContourColor = '#64b6d9';\n supplementaryContourShow = false;\n supplementaryContourWidth = 1.0;\n supplementaryContourColor = '#d084d1';\n}\nfunction setVal(data) {\n secondaryLinesCount = data['secondaryLinesCount'];\n // show = true\n equalHeightDistance = data['equalHeightDistance'];\n activeColor = rgbaFromObject(data['activeColor']);\n indexContourShow = data['indexContourShow'];\n indexContourWidth = data['indexContourWidth'];\n indexContourColor = rgbaFromObject(data['indexContourColor']);\n intermediateContourShow = data['intermediateContourShow'];\n intermediateContourWidth = data['intermediateContourWidth'];\n intermediateContourColor = rgbaFromObject(data['intermediateContourColor']);\n halfIntervalContourShow = data['halfIntervalContourShow'];\n halfIntervalContourWidth = data['halfIntervalContourWidth'];\n halfIntervalContourColor = rgbaFromObject(data['halfIntervalContourColor']);\n supplementaryContourShow = data['supplementaryContourShow'];\n supplementaryContourWidth = data['supplementaryContourWidth'];\n supplementaryContourColor = rgbaFromObject(data['supplementaryContourColor']);\n}\nfunction rgbaFromObject(colorObj) {\n var red = colorObj.red,\n green = colorObj.green,\n blue = colorObj.blue,\n _colorObj$alpha = colorObj.alpha,\n alpha = _colorObj$alpha === void 0 ? 1 : _colorObj$alpha;\n return \"rgba(\".concat(red * 255, \", \").concat(green * 255, \", \").concat(blue * 255, \", \").concat(alpha, \")\");\n}\nfunction dialog(_x) {\n return _dialog.apply(this, arguments);\n}\nfunction _dialog() {\n _dialog = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(sdk) {\n var contentElm, equalHeightDistanceInput, activeColorPicker, indexContourSwitch, indexContourColorPicker, indexContourWidthInput, intermediateContourSwitch, intermediateContourColorPicker, intermediateContourWidthInput, halfIntervalContourSwitch, halfIntervalContourColorPicker, halfIntervalContourWidthInput, supplementaryContourSwitch, supplementaryContourColorPicker, supplementaryContourWidthInput, initInputValue;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n initInputValue = function _initInputValue(e) {\n var value = e.target.value;\n if (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n return value;\n };\n _sdk = sdk;\n if (!(!sdk || _DialogObject)) {\n _context.next = 4;\n break;\n }\n return _context.abrupt(\"return\");\n case 4:\n if (!material) {\n createMaterial();\n }\n if (!tools) {\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n }\n\n // _DialogObject = await new Dialog(sdk, {}, {\n // title: \"全局等高线\", left: '180px',\n // top: '100px',\n // closeCallBack: () => {\n // _DialogObject = null\n // }\n // });\n\n // _DialogObject._element.body.className =\n // _DialogObject._element.body.className + ' contour'\n // let contentElm = document.createElement('div')\n // contentElm.innerHTML = html(this)\n\n // _DialogObject.contentAppChild(contentElm)\n contentElm = document.getElementsByClassName('contour')[0];\n sdk.viewer.scene.postRender.removeEventListener(accordingToCameraHeight);\n sdk.viewer.scene.postRender.addEventListener(accordingToCameraHeight);\n\n // 显示\n // let showBtn = contentElm.getElementsByClassName('show')[0]\n // showBtn.checked = show\n // if (showBtn.checked) {\n // let height = sdk.viewer.camera.positionCartographic.height\n // if (height > 16360) {\n // let cartographic = sdk.viewer.camera.positionCartographic\n // let options = {\n // position: {\n // lng: Cesium.Math.toDegrees(cartographic.longitude),\n // lat: Cesium.Math.toDegrees(cartographic.latitude),\n // alt: 16360,\n // },\n // }\n // flyTo(sdk, options, 0.5)\n // }\n // showContour(sdk)\n // }\n // showBtn.addEventListener('change', (e) => {\n // if (e.target.checked) {\n // show = true\n // let height = sdk.viewer.camera.positionCartographic.height\n // if (height > 16360) {\n // let cartographic = sdk.viewer.camera.positionCartographic\n // let options = {\n // position: {\n // lng: Cesium.Math.toDegrees(cartographic.longitude),\n // lat: Cesium.Math.toDegrees(cartographic.latitude),\n // alt: 16360,\n // },\n // }\n // flyTo(sdk, options, 0.5)\n // }\n // showContour(sdk)\n // } else {\n // show = false\n // hideContour(sdk)\n // }\n // })\n // 等高距\n equalHeightDistanceInput = contentElm.getElementsByClassName('equal-height-distance')[0];\n equalHeightDistanceInput.value = equalHeightDistance;\n equalHeightDistanceInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n equalHeightDistance = value;\n equalHeightDistanceInput.value = value;\n if (material) {\n // material.uniforms.spacing = equalHeightDistance * 5\n paramData.spacing = equalHeightDistance * 5;\n }\n });\n\n // 选中颜色\n // let activeColorPicker = new YJColorPicker({\n // el: contentElm.getElementsByClassName('active-color')[0],\n // size: \"mini\",\n // isLog: false,\n // alpha: true, //是否开启透明度\n // disabled: false, //是否禁止打开颜色选择器\n // predefineColor: true, // 预定义颜色\n // defaultColor: '#ffffff',\n // sure: color => {\n // activeColor = color\n // if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n // }\n // },\n // clear: () => {\n // activeColor = 'rgba(255,255,255,1)'\n // if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n // }\n // }\n // })\n activeColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('active-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: activeColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n activeColor = color;\n if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n paramData.activeColor = Cesium.Color.fromCssColorString(activeColor);\n }\n },\n clear: function clear() {\n activeColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.activeColor = Cesium.Color.fromCssColorString(activeColor)\n paramData.activeColor = Cesium.Color.fromCssColorString(activeColor);\n }\n }\n }); // 计曲线开关\n indexContourSwitch = contentElm.getElementsByClassName('index-contour-switch')[0];\n indexContourSwitch.checked = indexContourShow;\n indexContourSwitch.addEventListener('change', function (e) {\n indexContourShow = e.target.checked;\n if (material) {\n // material.uniforms.indexContourShow = indexContourShow\n paramData.indexContourShow = indexContourShow;\n }\n });\n // 计曲线颜色\n indexContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('index-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: indexContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n indexContourColor = color;\n if (material) {\n // material.uniforms.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor)\n paramData.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor);\n }\n },\n clear: function clear() {\n indexContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor)\n paramData.indexContourColor = Cesium.Color.fromCssColorString(indexContourColor);\n }\n }\n }); // 计曲线宽度\n indexContourWidthInput = contentElm.getElementsByClassName('index-contour-width')[0];\n indexContourWidthInput.value = indexContourWidth;\n indexContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n indexContourWidth = value;\n indexContourWidthInput.value = value;\n if (material) {\n // material.uniforms.indexContourWidth = indexContourWidth\n paramData.indexContourWidth = indexContourWidth;\n }\n });\n\n // 首曲线开关\n intermediateContourSwitch = contentElm.getElementsByClassName('intermediate-contour-switch')[0];\n intermediateContourSwitch.checked = intermediateContourShow;\n intermediateContourSwitch.addEventListener('change', function (e) {\n intermediateContourShow = e.target.checked;\n if (material) {\n // material.uniforms.intermediateContourShow = intermediateContourShow\n paramData.intermediateContourShow = intermediateContourShow;\n }\n });\n // 首曲线颜色\n intermediateContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('intermediate-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: intermediateContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n intermediateContourColor = color;\n if (material) {\n // material.uniforms.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor)\n paramData.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor);\n }\n },\n clear: function clear() {\n intermediateContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor)\n paramData.intermediateContourColor = Cesium.Color.fromCssColorString(intermediateContourColor);\n }\n }\n }); // 首曲线宽度\n intermediateContourWidthInput = contentElm.getElementsByClassName('intermediate-contour-width')[0];\n intermediateContourWidthInput.value = intermediateContourWidth;\n intermediateContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n intermediateContourWidth = value;\n intermediateContourWidthInput.value = value;\n if (material) {\n // material.uniforms.intermediateContourWidth = intermediateContourWidth\n paramData.intermediateContourWidth = intermediateContourWidth;\n }\n });\n\n // 间曲线开关\n halfIntervalContourSwitch = contentElm.getElementsByClassName('halfInterval-contour-switch')[0];\n halfIntervalContourSwitch.checked = halfIntervalContourShow;\n halfIntervalContourSwitch.addEventListener('change', function (e) {\n halfIntervalContourShow = e.target.checked;\n if (material) {\n // material.uniforms.halfIntervalContourShow = halfIntervalContourShow\n paramData.halfIntervalContourShow = halfIntervalContourShow;\n }\n });\n // 间曲线颜色\n halfIntervalContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('halfInterval-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: halfIntervalContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n halfIntervalContourColor = color;\n if (material) {\n // material.uniforms.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor)\n paramData.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor);\n }\n },\n clear: function clear() {\n halfIntervalContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor)\n paramData.halfIntervalContourColor = Cesium.Color.fromCssColorString(halfIntervalContourColor);\n }\n }\n }); // 间曲线宽度\n halfIntervalContourWidthInput = contentElm.getElementsByClassName('halfInterval-contour-width')[0];\n halfIntervalContourWidthInput.value = halfIntervalContourWidth;\n halfIntervalContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n halfIntervalContourWidth = value;\n halfIntervalContourWidthInput.value = value;\n if (material) {\n // material.uniforms.halfIntervalContourWidth = halfIntervalContourWidth\n paramData.halfIntervalContourWidth = halfIntervalContourWidth;\n }\n });\n\n // 助曲线开关\n supplementaryContourSwitch = contentElm.getElementsByClassName('supplementary-contour-switch')[0];\n supplementaryContourSwitch.checked = supplementaryContourShow;\n supplementaryContourSwitch.addEventListener('change', function (e) {\n supplementaryContourShow = e.target.checked;\n if (material) {\n // material.uniforms.supplementaryContourShow = supplementaryContourShow\n paramData.supplementaryContourShow = supplementaryContourShow;\n }\n });\n // 助曲线颜色\n supplementaryContourColorPicker = new _Obj_Element_yj_color_picker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n el: contentElm.getElementsByClassName('supplementary-contour-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: true,\n //是否开启透明度\n defaultColor: supplementaryContourColor,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n supplementaryContourColor = color;\n if (material) {\n // material.uniforms.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor)\n paramData.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor);\n }\n },\n clear: function clear() {\n supplementaryContourColor = 'rgba(255,255,255,1)';\n if (material) {\n // material.uniforms.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor)\n paramData.supplementaryContourColor = Cesium.Color.fromCssColorString(supplementaryContourColor);\n }\n }\n }); // 助曲线宽度\n supplementaryContourWidthInput = contentElm.getElementsByClassName('supplementary-contour-width')[0];\n supplementaryContourWidthInput.value = supplementaryContourWidth;\n supplementaryContourWidthInput.addEventListener('blur', function (e) {\n var value = initInputValue(e);\n supplementaryContourWidth = value;\n supplementaryContourWidthInput.value = value;\n if (material) {\n // material.uniforms.supplementaryContourWidth = supplementaryContourWidth\n paramData.supplementaryContourWidth = supplementaryContourWidth;\n }\n });\n case 41:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _dialog.apply(this, arguments);\n}\nfunction showContour(sdk) {\n var camera = sdk.viewer.camera;\n var position = camera.positionCartographic;\n // 计算相机高度(相对于椭球面)\n var cameraHeight = Cesium.Math.toDegrees(position.height);\n if (cameraHeight > 1000000) {\n return;\n }\n if (handler) {\n handler.destroy();\n }\n if (!sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {\n sdk.viewer.container.appendChild(activeHeightElm);\n }\n handler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n handler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.endPosition);\n if (cartesian) {\n var top = 0;\n var left = 0;\n if (sdk.viewer && sdk.viewer._element) {\n var element = sdk.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0];\n top = element.getBoundingClientRect().top + window.scrollY;\n left = element.getBoundingClientRect().left + window.scrollX;\n }\n activeHeightElm.style.left = movement.endPosition.x - 50 + left + 'px';\n activeHeightElm.style.top = movement.endPosition.y - 40 + top + 'px';\n activeHeightElm.style.display = 'block';\n // let pos = sdk.viewer.scene.clampToHeight(cartesian)\n var pos84 = tools.cartesian3Towgs84(cartesian, sdk.viewer);\n // pos84.alt = height\n var mainContourHeight = Math.floor(pos84.alt / material.uniforms.spacing) * material.uniforms.spacing;\n var gap = pos84.alt - mainContourHeight;\n var gap2 = material.uniforms.spacing / (material.uniforms.secondaryLinesCount + 1);\n var activeHeight = Math.floor(gap / gap2) * gap2 + mainContourHeight;\n if (pos84.alt < 0) {\n pos84.alt = 0;\n }\n if (pos84.alt - activeHeight > gap2 / 2) {\n activeHeight = activeHeight + gap2;\n }\n material.uniforms.mouseHeight = pos84.alt;\n material.uniforms.mousePosition = cartesian;\n activeHeightElm.innerHTML = \"\".concat(activeHeight.toFixed(0));\n } else {\n activeHeightElm.style.display = 'none';\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n sdk.viewer.scene.globe.material = material;\n}\nfunction hideContour(sdk) {\n if (handler) {\n handler.destroy();\n handler = null;\n }\n if (sdk.viewer.container.getElementsByClassName('YJ-customize-active-height-elm')[0]) {\n activeHeightElm.style.display = 'none';\n sdk.viewer.container.removeChild(activeHeightElm);\n }\n sdk.viewer.scene.globe.material = null;\n}\nfunction createMaterial() {\n Cesium.Material._materialCache._materials.ElevationContour.fabric.source = \"\\nuniform vec4 activeColor; // \\u9009\\u4E2D\\u989C\\u8272\\nuniform float spacing; // \\u7B49\\u9AD8\\u8DDD\\n\\n// \\u8BA1\\u66F2\\u7EBF\\nuniform bool indexContourShow;\\nuniform float indexContourWidth;\\nuniform vec4 indexContourColor;\\n// \\u9996\\u66F2\\u7EBF\\nuniform bool intermediateContourShow;\\nuniform float intermediateContourWidth;\\nuniform vec4 intermediateContourColor;\\n// \\u95F4\\u66F2\\u7EBF\\nuniform bool halfIntervalContourShow;\\nuniform float halfIntervalContourWidth;\\nuniform vec4 halfIntervalContourColor;\\n// \\u52A9\\u66F2\\u7EBF\\nuniform bool supplementaryContourShow;\\nuniform float supplementaryContourWidth;\\nuniform vec4 supplementaryContourColor;\\n\\nuniform float mouseHeight;\\n\\nuniform float secondaryLinesCount; // 0=\\u65E0\\u6B21\\u7EBF, 1=1\\u6761\\u6B21\\u7EBF, 2=2\\u6761\\u6B21\\u7EBF...\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput)\\n{\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n\\n // \\u4E3B\\u7B49\\u9AD8\\u7EBF\\u8BA1\\u7B97\\n float distanceToMainContour = mod(materialInput.height, spacing);\\n\\n // \\u6297\\u952F\\u9F7F\\u8BA1\\u7B97\\n#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))\\n float dxc = abs(dFdx(materialInput.height));\\n float dyc = abs(dFdy(materialInput.height));\\n float dFMain = max(dxc, dyc) * czm_pixelRatio * indexContourWidth;\\n#else\\n float dFMain = czm_pixelRatio * indexContourWidth;\\n#endif\\n\\n bool isMainContour = distanceToMainContour < dFMain;\\n bool isSecondaryContour = false;\\n float dFSecondary = 0.0;\\n float secondarySpacing = 0.0;\\n bool isHalfInterval = false;\\n bool isIntermediate= false;\\n\\n // \\u8BA1\\u7B97\\u5F53\\u524D\\u9AD8\\u5EA6\\u6240\\u5C5E\\u7684\\u7B49\\u9AD8\\u7EBF\\u9AD8\\u5EA6\\n float mainContourHeight = floor(materialInput.height / spacing) * spacing;\\n float secondaryContourHeight = floor(materialInput.height / spacing * (secondaryLinesCount + 1.0)) * spacing / (secondaryLinesCount + 1.0);\\n\\n // \\u8BA1\\u7B97\\u6B21\\u7EBF\\u5728\\u4E24\\u6761\\u4E3B\\u7B49\\u9AD8\\u7EBF\\u4E4B\\u95F4\\u7684\\u76F8\\u5BF9\\u4F4D\\u7F6E\\n float relativeHeight = materialInput.height - mainContourHeight;\\n float normalizedPosition = relativeHeight / spacing;\\n\\n // \\u8BA1\\u7B97\\u6B21\\u7EBF\\u7D22\\u5F15\\uFF08\\u4ECE\\u4E3B\\u7B49\\u9AD8\\u7EBF\\u5F00\\u59CB\\u8BA1\\u6570\\uFF09\\n float lineIndex = floor(normalizedPosition * (secondaryLinesCount + 1.0));\\n\\n // \\u53EA\\u6709\\u5F53\\u5B58\\u5728\\u6B21\\u7EBF\\u65F6\\u624D\\u8BA1\\u7B97\\u6B21\\u7EBF\\n if(secondaryLinesCount > 0.0) {\\n float secondaryLinesWidth = supplementaryContourWidth;\\n secondarySpacing = spacing / (secondaryLinesCount + 1.0);\\n float distanceToSecondaryContour = mod(materialInput.height, secondarySpacing);\\n\\n // \\u786E\\u4FDD\\u6B21\\u7EBF\\u4E0D\\u4F1A\\u4E0E\\u4E3B\\u7EBF\\u91CD\\u53E0\\n float minDistanceToMain = min(distanceToMainContour, spacing - distanceToMainContour);\\n bool notCloseToMain = minDistanceToMain > dFMain * 2.0; // 2\\u500D\\u7EBF\\u5BBD\\u7F13\\u51B2\\n\\n\\n if (lineIndex > 0.0 && lineIndex < secondaryLinesCount) {\\n // \\u4F7F\\u7528mod\\u51FD\\u6570\\u68C0\\u67E5\\u4F59\\u6570\\u662F\\u5426\\u63A5\\u8FD10\\uFF08\\u8003\\u8651\\u6D6E\\u70B9\\u6570\\u7CBE\\u5EA6\\u95EE\\u9898\\uFF09\\n isHalfInterval = abs(mod(lineIndex, 2.0)) < 0.01;\\n if(isHalfInterval) {\\n secondaryLinesWidth = halfIntervalContourWidth;\\n }\\n // \\u4F7F\\u7528mod\\u51FD\\u6570\\u68C0\\u67E5\\u4F59\\u6570\\u662F\\u5426\\u63A5\\u8FD10\\uFF08\\u8003\\u8651\\u6D6E\\u70B9\\u6570\\u7CBE\\u5EA6\\u95EE\\u9898\\uFF09\\n isIntermediate = abs(mod(lineIndex, 4.0)) < 0.01;\\n if(isIntermediate) {\\n secondaryLinesWidth = intermediateContourWidth;\\n }\\n }\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives))\\n dFSecondary = max(dxc, dyc) * czm_pixelRatio * secondaryLinesWidth;\\n#else\\n dFSecondary = czm_pixelRatio * secondaryLinesWidth;\\n#endif\\n\\n isSecondaryContour = (distanceToSecondaryContour < dFSecondary) && notCloseToMain;\\n }\\n\\n // \\u9AD8\\u4EAE\\u5224\\u65AD\\n bool shouldHighlight = false;\\n if(isMainContour && abs(mainContourHeight - mouseHeight) < 0.5 * (spacing/(secondaryLinesCount+1.0))) {\\n shouldHighlight = true;\\n } else if(isSecondaryContour && abs(secondaryContourHeight - mouseHeight) < 0.5 * (spacing/(secondaryLinesCount+1.0))) {\\n shouldHighlight = true;\\n }\\n\\n // \\u989C\\u8272\\u8F93\\u51FA\\n vec4 outColor;\\n if(shouldHighlight) {\\n outColor = czm_gammaCorrect(vec4(activeColor.rgb, activeColor.a));\\n } else if(isMainContour) {\\n float a = indexContourColor.a;\\n if(!indexContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(indexContourColor.rgb, a));\\n } else if(isSecondaryContour) {\\n float a = supplementaryContourColor.a;\\n if(!supplementaryContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(supplementaryContourColor.rgb, a));\\n if(isHalfInterval) {\\n float a = halfIntervalContourColor.a;\\n if(!halfIntervalContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(halfIntervalContourColor.rgb, a));\\n }\\n if(isIntermediate) {\\n float a = intermediateContourColor.a;\\n if(!intermediateContourShow) {\\n a = 0.0;\\n }\\n outColor = czm_gammaCorrect(vec4(intermediateContourColor.rgb, a));\\n }\\n } else {\\n outColor = vec4(0.0);\\n }\\n\\n if(materialInput.height<0.0) {\\n outColor = vec4(0.0);\\n }\\n\\n material.diffuse = outColor.rgb;\\n material.alpha = outColor.a;\\n return material;\\n}\\n\";\n material = new Cesium.Material({\n fabric: {\n type: \"ElevationContour\",\n uniforms: {\n spacing: 10 * 5,\n activeColor: Cesium.Color.fromCssColorString(activeColor),\n mouseHeight: -100000,\n mousePosition: new Cesium.Cartesian3(0, 0, 0),\n secondaryLinesCount: secondaryLinesCount,\n cameraHeight: 0,\n indexContourShow: indexContourShow,\n indexContourWidth: indexContourWidth,\n indexContourColor: Cesium.Color.fromCssColorString(indexContourColor),\n intermediateContourShow: intermediateContourShow,\n intermediateContourWidth: intermediateContourWidth,\n intermediateContourColor: Cesium.Color.fromCssColorString(intermediateContourColor),\n halfIntervalContourShow: halfIntervalContourShow,\n halfIntervalContourWidth: halfIntervalContourWidth,\n halfIntervalContourColor: Cesium.Color.fromCssColorString(halfIntervalContourColor),\n supplementaryContourShow: supplementaryContourShow,\n supplementaryContourWidth: supplementaryContourWidth,\n supplementaryContourColor: Cesium.Color.fromCssColorString(supplementaryContourColor)\n }\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0NvbnRvdXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0NvbnRvdXIvaW5kZXguanM/MDkxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog562J6auY57q/XHJcbiAqL1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gXCIuLi8uLi9PYmovRWxlbWVudC9EaWFsb2dcIjtcclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi9Ub29sc1wiO1xyXG5pbXBvcnQgeyBmbHlUbyB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IFlKQ29sb3JQaWNrZXIgZnJvbSBcIi4uLy4uL09iai9FbGVtZW50L3lqLWNvbG9yLXBpY2tlclwiO1xyXG5cclxuaW1wb3J0IHsgaHRtbCB9IGZyb20gXCIuL19lbGVtZW50XCI7XHJcblxyXG5sZXQgX0RpYWxvZ09iamVjdCA9IG51bGw7XHJcbmxldCBtYXRlcmlhbCA9IG51bGw7XHJcbmxldCBoYW5kbGVyID0gbnVsbDtcclxubGV0IGFjdGl2ZUhlaWdodEVsbSA9IG51bGw7XHJcbmxldCB0b29sc1xyXG5sZXQgX3Nka1xyXG5sZXQgc2Vjb25kYXJ5TGluZXNDb3VudCA9IDE5XHJcbmxldCBzaG93ID0gdHJ1ZVxyXG5sZXQgZXF1YWxIZWlnaHREaXN0YW5jZSA9IDEwXHJcbmxldCBhY3RpdmVDb2xvciA9ICcjZmZkMDAwJ1xyXG5sZXQgaW5kZXhDb250b3VyU2hvdyA9IHRydWVcclxubGV0IGluZGV4Q29udG91cldpZHRoID0gMi41XHJcbmxldCBpbmRleENvbnRvdXJDb2xvciA9ICcjNDNjZjdjJ1xyXG5sZXQgaW50ZXJtZWRpYXRlQ29udG91clNob3cgPSB0cnVlXHJcbmxldCBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGggPSAxLjhcclxubGV0IGludGVybWVkaWF0ZUNvbnRvdXJDb2xvciA9ICcjZmYwMDAwJ1xyXG5sZXQgaGFsZkludGVydmFsQ29udG91clNob3cgPSBmYWxzZVxyXG5sZXQgaGFsZkludGVydmFsQ29udG91cldpZHRoID0gMS4wXHJcbmxldCBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSAnIzY0YjZkOSdcclxubGV0IHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdyA9IGZhbHNlXHJcbmxldCBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoID0gMS4wXHJcbmxldCBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yID0gJyNkMDg0ZDEnXHJcbmxldCBwYXJhbURhdGEgPSB7fVxyXG5cclxuXHJcbmFjdGl2ZUhlaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbmFjdGl2ZUhlaWdodEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9taXplLWFjdGl2ZS1oZWlnaHQtZWxtJ1xyXG5hY3RpdmVIZWlnaHRFbG0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS5sZWZ0ID0gJzEwcHgnXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS50b3AgPSAnMTBweCdcclxuYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLndpZHRoID0gJzEwMHB4J1xyXG4vLyBhY3RpdmVIZWlnaHRFbG0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwgMCwgMCwgMC41KSdcclxuYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXHJcbmFjdGl2ZUhlaWdodEVsbS5zdHlsZS5jb2xvciA9ICcjZmYwMDAwJ1xyXG5hY3RpdmVIZWlnaHRFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG5cclxuXHJcblxyXG5mdW5jdGlvbiBhY2NvcmRpbmdUb0NhbWVyYUhlaWdodCgpIHtcclxuICBpZiAoX3Nkaykge1xyXG4gICAgY29uc3QgY2FtZXJhID0gX3Nkay52aWV3ZXIuY2FtZXJhO1xyXG4gICAgY29uc3QgcG9zaXRpb24gPSBjYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWM7XHJcblxyXG4gICAgLy8g6K6h566X55u45py66auY5bqm77yI55u45a+55LqO5qSt55CD6Z2i77yJXHJcbiAgICBsZXQgY2FtZXJhSGVpZ2h0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBvc2l0aW9uLmhlaWdodCk7XHJcbiAgICBpZiAoY2FtZXJhSGVpZ2h0IDwgMTAwMDAwMCkge1xyXG4gICAgICBpZiAoIV9zZGsudmlld2VyLnNjZW5lLmdsb2JlLm1hdGVyaWFsICYmIHNob3cgPT09IHRydWUpIHtcclxuICAgICAgICBzaG93Q29udG91cihfc2RrKVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAvLyAgIGlmIChjYW1lcmFIZWlnaHQgPiA0NTAwMDApIHtcclxuICAgICAgLy8gICAgIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyU2hvdyA9IGZhbHNlXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGVsc2UgaWYgKHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdykge1xyXG4gICAgICAvLyAgICAgbWF0ZXJpYWwudW5pZm9ybXMuc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gdHJ1ZVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGhpZGVDb250b3VyKF9zZGspXHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhjYW1lcmFIZWlnaHQpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnREcmF3KHNkaywgc2hvd0RhdGEpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzaG93RGF0YSkge1xyXG4gICAgbGV0IHRlcnJhaW5BdmFpbGFiaWxpdHkgPSBzZGsudmlld2VyLnRlcnJhaW5Qcm92aWRlci5hdmFpbGFiaWxpdHk7XHJcbiAgICBpZiAoIXRlcnJhaW5BdmFpbGFiaWxpdHkpIHtcclxuICAgICAgcmV0dXJuICfmnKrliqDovb3lnLDlvaLmlbDmja7vvIEnXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3cgPSBzaG93RGF0YVxyXG5cclxuICBPYmplY3Qua2V5cyhwYXJhbURhdGEpLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICBtYXRlcmlhbC51bmlmb3Jtc1tpdGVtXSA9IHBhcmFtRGF0YVtpdGVtXVxyXG4gIH0pXHJcblxyXG4gIGlmIChzaG93KSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICBpZiAoaGVpZ2h0ID4gMTYzNjApIHtcclxuICAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljXHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICBsbmc6IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKSxcclxuICAgICAgICAgIGxhdDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAgICAgICBhbHQ6IDE2MzYwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgICAgZmx5VG8oc2RrLCBvcHRpb25zLCAwLjUpXHJcbiAgICB9XHJcbiAgICBzaG93Q29udG91cihzZGspXHJcbiAgfSBlbHNlIHtcclxuICAgIGhpZGVDb250b3VyKHNkaylcclxuICB9XHJcbn1cclxuZnVuY3Rpb24gcmVzZXQoKSB7XHJcbiAgLy8gaWYgKGhhbmRsZXIpIHtcclxuICAvLyAgIGhhbmRsZXIuZGVzdHJveSgpXHJcbiAgLy8gfVxyXG4gIHNlY29uZGFyeUxpbmVzQ291bnQgPSAxOVxyXG4gIC8vIHNob3cgPSB0cnVlXHJcbiAgZXF1YWxIZWlnaHREaXN0YW5jZSA9IDEwXHJcbiAgYWN0aXZlQ29sb3IgPSAnI2ZmZDAwMCdcclxuICBpbmRleENvbnRvdXJTaG93ID0gdHJ1ZVxyXG4gIGluZGV4Q29udG91cldpZHRoID0gMi41XHJcbiAgaW5kZXhDb250b3VyQ29sb3IgPSAnIzQzY2Y3YydcclxuICBpbnRlcm1lZGlhdGVDb250b3VyU2hvdyA9IHRydWVcclxuICBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGggPSAxLjhcclxuICBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSAnI2ZmMDAwMCdcclxuICBoYWxmSW50ZXJ2YWxDb250b3VyU2hvdyA9IGZhbHNlXHJcbiAgaGFsZkludGVydmFsQ29udG91cldpZHRoID0gMS4wXHJcbiAgaGFsZkludGVydmFsQ29udG91ckNvbG9yID0gJyM2NGI2ZDknXHJcbiAgc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gZmFsc2VcclxuICBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoID0gMS4wXHJcbiAgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvciA9ICcjZDA4NGQxJ1xyXG59XHJcbmZ1bmN0aW9uIHNldFZhbChkYXRhKSB7XHJcbiAgc2Vjb25kYXJ5TGluZXNDb3VudCA9IGRhdGFbJ3NlY29uZGFyeUxpbmVzQ291bnQnXVxyXG4gIC8vIHNob3cgPSB0cnVlXHJcbiAgZXF1YWxIZWlnaHREaXN0YW5jZSA9IGRhdGFbJ2VxdWFsSGVpZ2h0RGlzdGFuY2UnXVxyXG4gIGFjdGl2ZUNvbG9yID0gcmdiYUZyb21PYmplY3QoZGF0YVsnYWN0aXZlQ29sb3InXSlcclxuICBpbmRleENvbnRvdXJTaG93ID0gZGF0YVsnaW5kZXhDb250b3VyU2hvdyddXHJcbiAgaW5kZXhDb250b3VyV2lkdGggPSBkYXRhWydpbmRleENvbnRvdXJXaWR0aCddXHJcbiAgaW5kZXhDb250b3VyQ29sb3IgPSByZ2JhRnJvbU9iamVjdChkYXRhWydpbmRleENvbnRvdXJDb2xvciddKVxyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gZGF0YVsnaW50ZXJtZWRpYXRlQ29udG91clNob3cnXVxyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aCA9IGRhdGFbJ2ludGVybWVkaWF0ZUNvbnRvdXJXaWR0aCddXHJcbiAgaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yID0gcmdiYUZyb21PYmplY3QoZGF0YVsnaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yJ10pXHJcbiAgaGFsZkludGVydmFsQ29udG91clNob3cgPSBkYXRhWydoYWxmSW50ZXJ2YWxDb250b3VyU2hvdyddXHJcbiAgaGFsZkludGVydmFsQ29udG91cldpZHRoID0gZGF0YVsnaGFsZkludGVydmFsQ29udG91cldpZHRoJ11cclxuICBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSByZ2JhRnJvbU9iamVjdChkYXRhWydoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3InXSlcclxuICBzdXBwbGVtZW50YXJ5Q29udG91clNob3cgPSBkYXRhWydzdXBwbGVtZW50YXJ5Q29udG91clNob3cnXVxyXG4gIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGggPSBkYXRhWydzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoJ11cclxuICBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yID0gcmdiYUZyb21PYmplY3QoZGF0YVsnc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvciddKVxyXG59XHJcbmZ1bmN0aW9uIHJnYmFGcm9tT2JqZWN0KGNvbG9yT2JqKSB7XHJcbiAgY29uc3QgeyByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSA9IDEgfSA9IGNvbG9yT2JqO1xyXG4gIHJldHVybiBgcmdiYSgke3JlZCAqIDI1NX0sICR7Z3JlZW4gKiAyNTV9LCAke2JsdWUgKiAyNTV9LCAke2FscGhhfSlgO1xyXG59XHJcbmFzeW5jIGZ1bmN0aW9uIGRpYWxvZyhzZGspIHtcclxuICBfc2RrID0gc2RrXHJcblxyXG4gIGlmICghc2RrIHx8IF9EaWFsb2dPYmplY3QpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoIW1hdGVyaWFsKSB7XHJcbiAgICBjcmVhdGVNYXRlcmlhbCgpXHJcbiAgfVxyXG4gIGlmICghdG9vbHMpIHtcclxuICAgIHRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICB9XHJcblxyXG4gIC8vIF9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHNkaywge30sIHtcclxuICAvLyAgIHRpdGxlOiBcIuWFqOWxgOetiemrmOe6v1wiLCBsZWZ0OiAnMTgwcHgnLFxyXG4gIC8vICAgdG9wOiAnMTAwcHgnLFxyXG4gIC8vICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gIC8vICAgICBfRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gIC8vICAgfVxyXG4gIC8vIH0pO1xyXG5cclxuICAvLyBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID1cclxuICAvLyAgIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGNvbnRvdXInXHJcbiAgLy8gbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCh0aGlzKVxyXG5cclxuICAvLyBfRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29udG91cicpWzBdXHJcblxyXG4gIHNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKGFjY29yZGluZ1RvQ2FtZXJhSGVpZ2h0KVxyXG4gIHNkay52aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5hZGRFdmVudExpc3RlbmVyKGFjY29yZGluZ1RvQ2FtZXJhSGVpZ2h0KVxyXG5cclxuICAvLyDmmL7npLpcclxuICAvLyBsZXQgc2hvd0J0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2hvdycpWzBdXHJcbiAgLy8gc2hvd0J0bi5jaGVja2VkID0gc2hvd1xyXG4gIC8vIGlmIChzaG93QnRuLmNoZWNrZWQpIHtcclxuICAvLyAgIGxldCBoZWlnaHQgPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAvLyAgIGlmIChoZWlnaHQgPiAxNjM2MCkge1xyXG4gIC8vICAgICBsZXQgY2FydG9ncmFwaGljID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWNcclxuICAvLyAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgLy8gICAgICAgcG9zaXRpb246IHtcclxuICAvLyAgICAgICAgIGxuZzogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gIC8vICAgICAgICAgbGF0OiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKSxcclxuICAvLyAgICAgICAgIGFsdDogMTYzNjAsXHJcbiAgLy8gICAgICAgfSxcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBmbHlUbyhzZGssIG9wdGlvbnMsIDAuNSlcclxuICAvLyAgIH1cclxuICAvLyAgIHNob3dDb250b3VyKHNkaylcclxuICAvLyB9XHJcbiAgLy8gc2hvd0J0bi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gIC8vICAgaWYgKGUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAvLyAgICAgc2hvdyA9IHRydWVcclxuICAvLyBsZXQgaGVpZ2h0ID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgLy8gaWYgKGhlaWdodCA+IDE2MzYwKSB7XHJcbiAgLy8gICBsZXQgY2FydG9ncmFwaGljID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWNcclxuICAvLyAgIGxldCBvcHRpb25zID0ge1xyXG4gIC8vICAgICBwb3NpdGlvbjoge1xyXG4gIC8vICAgICAgIGxuZzogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gIC8vICAgICAgIGxhdDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgLy8gICAgICAgYWx0OiAxNjM2MCxcclxuICAvLyAgICAgfSxcclxuICAvLyAgIH1cclxuICAvLyAgIGZseVRvKHNkaywgb3B0aW9ucywgMC41KVxyXG4gIC8vIH1cclxuICAvLyBzaG93Q29udG91cihzZGspXHJcbiAgLy8gfSBlbHNlIHtcclxuICAvLyBzaG93ID0gZmFsc2VcclxuICAvLyBoaWRlQ29udG91cihzZGspXHJcbiAgLy8gfVxyXG4gIC8vIH0pXHJcbiAgLy8g562J6auY6LedXHJcbiAgbGV0IGVxdWFsSGVpZ2h0RGlzdGFuY2VJbnB1dCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZXF1YWwtaGVpZ2h0LWRpc3RhbmNlJylbMF1cclxuICBlcXVhbEhlaWdodERpc3RhbmNlSW5wdXQudmFsdWUgPSBlcXVhbEhlaWdodERpc3RhbmNlXHJcbiAgZXF1YWxIZWlnaHREaXN0YW5jZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGVxdWFsSGVpZ2h0RGlzdGFuY2UgPSB2YWx1ZVxyXG4gICAgZXF1YWxIZWlnaHREaXN0YW5jZUlucHV0LnZhbHVlID0gdmFsdWVcclxuICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5zcGFjaW5nID0gZXF1YWxIZWlnaHREaXN0YW5jZSAqIDVcclxuICAgICAgcGFyYW1EYXRhLnNwYWNpbmcgPSBlcXVhbEhlaWdodERpc3RhbmNlICogNVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIC8vIOmAieS4reminOiJslxyXG4gIC8vIGxldCBhY3RpdmVDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAvLyAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FjdGl2ZS1jb2xvcicpWzBdLFxyXG4gIC8vICAgc2l6ZTogXCJtaW5pXCIsXHJcbiAgLy8gICBpc0xvZzogZmFsc2UsXHJcbiAgLy8gICBhbHBoYTogdHJ1ZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAvLyAgIGRpc2FibGVkOiBmYWxzZSwgLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAvLyAgIHByZWRlZmluZUNvbG9yOiB0cnVlLCAvLyDpooTlrprkuYnpopzoibJcclxuICAvLyAgIGRlZmF1bHRDb2xvcjogJyNmZmZmZmYnLFxyXG4gIC8vICAgc3VyZTogY29sb3IgPT4ge1xyXG4gIC8vICAgICBhY3RpdmVDb2xvciA9IGNvbG9yXHJcbiAgLy8gICAgIGlmIChtYXRlcmlhbCkge1xyXG4gIC8vICAgICAgIG1hdGVyaWFsLnVuaWZvcm1zLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSxcclxuICAvLyAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgLy8gICAgIGFjdGl2ZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgLy8gICAgIGlmIChtYXRlcmlhbCkge1xyXG4gIC8vICAgICAgIG1hdGVyaWFsLnVuaWZvcm1zLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH0pXHJcbiAgbGV0IGFjdGl2ZUNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWN0aXZlLWNvbG9yJylbMF0sXHJcbiAgICBzaXplOiAnbWluaScsLy/popzoibJib3jnsbvlnotcclxuICAgIGFscGhhOiB0cnVlLC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICBkZWZhdWx0Q29sb3I6IGFjdGl2ZUNvbG9yLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgYWN0aXZlQ29sb3IgPSBjb2xvclxyXG4gICAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5hY3RpdmVDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoYWN0aXZlQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNsZWFyOiAoKSA9PiB7XHJcbiAgICAgIGFjdGl2ZUNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmFjdGl2ZUNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhhY3RpdmVDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuYWN0aXZlQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGFjdGl2ZUNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgLy8g6K6h5puy57q/5byA5YWzXHJcbiAgbGV0IGluZGV4Q29udG91clN3aXRjaCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5kZXgtY29udG91ci1zd2l0Y2gnKVswXVxyXG4gIGluZGV4Q29udG91clN3aXRjaC5jaGVja2VkID0gaW5kZXhDb250b3VyU2hvd1xyXG4gIGluZGV4Q29udG91clN3aXRjaC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgaW5kZXhDb250b3VyU2hvdyA9IGUudGFyZ2V0LmNoZWNrZWRcclxuICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5pbmRleENvbnRvdXJTaG93ID0gaW5kZXhDb250b3VyU2hvd1xyXG4gICAgICBwYXJhbURhdGEuaW5kZXhDb250b3VyU2hvdyA9IGluZGV4Q29udG91clNob3dcclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOiuoeabsue6v+minOiJslxyXG4gIGxldCBpbmRleENvbnRvdXJDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2luZGV4LWNvbnRvdXItY29sb3InKVswXSxcclxuICAgIHNpemU6ICdtaW5pJywvL+minOiJsmJveOexu+Wei1xyXG4gICAgYWxwaGE6IHRydWUsLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgIGRlZmF1bHRDb2xvcjogaW5kZXhDb250b3VyQ29sb3IsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICBpbmRleENvbnRvdXJDb2xvciA9IGNvbG9yXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmluZGV4Q29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhpbmRleENvbnRvdXJDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuaW5kZXhDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGluZGV4Q29udG91ckNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgaW5kZXhDb250b3VyQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaW5kZXhDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGluZGV4Q29udG91ckNvbG9yKVxyXG4gICAgICAgIHBhcmFtRGF0YS5pbmRleENvbnRvdXJDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoaW5kZXhDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOiuoeabsue6v+WuveW6plxyXG4gIGxldCBpbmRleENvbnRvdXJXaWR0aElucHV0ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbmRleC1jb250b3VyLXdpZHRoJylbMF1cclxuICBpbmRleENvbnRvdXJXaWR0aElucHV0LnZhbHVlID0gaW5kZXhDb250b3VyV2lkdGhcclxuICBpbmRleENvbnRvdXJXaWR0aElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGluZGV4Q29udG91cldpZHRoID0gdmFsdWVcclxuICAgIGluZGV4Q29udG91cldpZHRoSW5wdXQudmFsdWUgPSB2YWx1ZVxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmluZGV4Q29udG91cldpZHRoID0gaW5kZXhDb250b3VyV2lkdGhcclxuICAgICAgcGFyYW1EYXRhLmluZGV4Q29udG91cldpZHRoID0gaW5kZXhDb250b3VyV2lkdGhcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyDpppbmm7Lnur/lvIDlhbNcclxuICBsZXQgaW50ZXJtZWRpYXRlQ29udG91clN3aXRjaCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW50ZXJtZWRpYXRlLWNvbnRvdXItc3dpdGNoJylbMF1cclxuICBpbnRlcm1lZGlhdGVDb250b3VyU3dpdGNoLmNoZWNrZWQgPSBpbnRlcm1lZGlhdGVDb250b3VyU2hvd1xyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJTd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgIGludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gaW50ZXJtZWRpYXRlQ29udG91clNob3dcclxuICAgICAgcGFyYW1EYXRhLmludGVybWVkaWF0ZUNvbnRvdXJTaG93ID0gaW50ZXJtZWRpYXRlQ29udG91clNob3dcclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOmmluabsue6v+minOiJslxyXG4gIGxldCBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnRlcm1lZGlhdGUtY29udG91ci1jb2xvcicpWzBdLFxyXG4gICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgZGVmYXVsdENvbG9yOiBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSBjb2xvclxyXG4gICAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5pbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGludGVybWVkaWF0ZUNvbnRvdXJDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLmludGVybWVkaWF0ZUNvbnRvdXJDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuICAvLyDpppbmm7Lnur/lrr3luqZcclxuICBsZXQgaW50ZXJtZWRpYXRlQ29udG91cldpZHRoSW5wdXQgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ludGVybWVkaWF0ZS1jb250b3VyLXdpZHRoJylbMF1cclxuICBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aFxyXG4gIGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGludGVybWVkaWF0ZUNvbnRvdXJXaWR0aCA9IHZhbHVlXHJcbiAgICBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IHZhbHVlXHJcbiAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaW50ZXJtZWRpYXRlQ29udG91cldpZHRoID0gaW50ZXJtZWRpYXRlQ29udG91cldpZHRoXHJcbiAgICAgIHBhcmFtRGF0YS5pbnRlcm1lZGlhdGVDb250b3VyV2lkdGggPSBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGhcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyDpl7Tmm7Lnur/lvIDlhbNcclxuICBsZXQgaGFsZkludGVydmFsQ29udG91clN3aXRjaCA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGFsZkludGVydmFsLWNvbnRvdXItc3dpdGNoJylbMF1cclxuICBoYWxmSW50ZXJ2YWxDb250b3VyU3dpdGNoLmNoZWNrZWQgPSBoYWxmSW50ZXJ2YWxDb250b3VyU2hvd1xyXG4gIGhhbGZJbnRlcnZhbENvbnRvdXJTd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgIGhhbGZJbnRlcnZhbENvbnRvdXJTaG93ID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLmhhbGZJbnRlcnZhbENvbnRvdXJTaG93ID0gaGFsZkludGVydmFsQ29udG91clNob3dcclxuICAgICAgcGFyYW1EYXRhLmhhbGZJbnRlcnZhbENvbnRvdXJTaG93ID0gaGFsZkludGVydmFsQ29udG91clNob3dcclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOmXtOabsue6v+minOiJslxyXG4gIGxldCBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3JQaWNrZXIgPSBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoYWxmSW50ZXJ2YWwtY29udG91ci1jb2xvcicpWzBdLFxyXG4gICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgZGVmYXVsdENvbG9yOiBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsLy/mmK/lkKbnpoHmraLmiZPlvIDpopzoibLpgInmi6nlmahcclxuICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSBjb2xvclxyXG4gICAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgICAvLyBtYXRlcmlhbC51bmlmb3Jtcy5oYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGhhbGZJbnRlcnZhbENvbnRvdXJDb2xvcilcclxuICAgICAgICBwYXJhbURhdGEuaGFsZkludGVydmFsQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IgPSAncmdiYSgyNTUsMjU1LDI1NSwxKSdcclxuICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaGFsZkludGVydmFsQ29udG91ckNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLmhhbGZJbnRlcnZhbENvbnRvdXJDb2xvciA9IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoaGFsZkludGVydmFsQ29udG91ckNvbG9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSlcclxuICAvLyDpl7Tmm7Lnur/lrr3luqZcclxuICBsZXQgaGFsZkludGVydmFsQ29udG91cldpZHRoSW5wdXQgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hhbGZJbnRlcnZhbC1jb250b3VyLXdpZHRoJylbMF1cclxuICBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aFxyXG4gIGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlID0gaW5pdElucHV0VmFsdWUoZSlcclxuICAgIGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aCA9IHZhbHVlXHJcbiAgICBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IHZhbHVlXHJcbiAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuaGFsZkludGVydmFsQ29udG91cldpZHRoID0gaGFsZkludGVydmFsQ29udG91cldpZHRoXHJcbiAgICAgIHBhcmFtRGF0YS5oYWxmSW50ZXJ2YWxDb250b3VyV2lkdGggPSBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGhcclxuICAgIH1cclxuICB9KVxyXG5cclxuICAvLyDliqnmm7Lnur/lvIDlhbNcclxuICBsZXQgc3VwcGxlbWVudGFyeUNvbnRvdXJTd2l0Y2ggPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1cHBsZW1lbnRhcnktY29udG91ci1zd2l0Y2gnKVswXVxyXG4gIHN1cHBsZW1lbnRhcnlDb250b3VyU3dpdGNoLmNoZWNrZWQgPSBzdXBwbGVtZW50YXJ5Q29udG91clNob3dcclxuICBzdXBwbGVtZW50YXJ5Q29udG91clN3aXRjaC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gZS50YXJnZXQuY2hlY2tlZFxyXG4gICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyU2hvdyA9IHN1cHBsZW1lbnRhcnlDb250b3VyU2hvd1xyXG4gICAgICBwYXJhbURhdGEuc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93ID0gc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93XHJcbiAgICB9XHJcbiAgfSlcclxuICAvLyDliqnmm7Lnur/popzoibJcclxuICBsZXQgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvclBpY2tlciA9IG5ldyBZSkNvbG9yUGlja2VyKHtcclxuICAgIGVsOiBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1cHBsZW1lbnRhcnktY29udG91ci1jb2xvcicpWzBdLFxyXG4gICAgc2l6ZTogJ21pbmknLC8v6aKc6ImyYm9457G75Z6LXHJcbiAgICBhbHBoYTogdHJ1ZSwvL+aYr+WQpuW8gOWQr+mAj+aYjuW6plxyXG4gICAgZGVmYXVsdENvbG9yOiBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICBvcGVuUGlja2VyQW5pOiAnb3BhY2l0eScsLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvciA9IGNvbG9yXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICBzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yID0gJ3JnYmEoMjU1LDI1NSwyNTUsMSknXHJcbiAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgIC8vIG1hdGVyaWFsLnVuaWZvcm1zLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgICAgcGFyYW1EYXRhLnN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KVxyXG4gIC8vIOWKqeabsue6v+WuveW6plxyXG4gIGxldCBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoSW5wdXQgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1cHBsZW1lbnRhcnktY29udG91ci13aWR0aCcpWzBdXHJcbiAgc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aElucHV0LnZhbHVlID0gc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aFxyXG4gIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGhJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKGUpID0+IHtcclxuICAgIGxldCB2YWx1ZSA9IGluaXRJbnB1dFZhbHVlKGUpXHJcbiAgICBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoID0gdmFsdWVcclxuICAgIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGhJbnB1dC52YWx1ZSA9IHZhbHVlXHJcbiAgICBpZiAobWF0ZXJpYWwpIHtcclxuICAgICAgLy8gbWF0ZXJpYWwudW5pZm9ybXMuc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aCA9IHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGhcclxuICAgICAgcGFyYW1EYXRhLnN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGggPSBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBmdW5jdGlvbiBpbml0SW5wdXRWYWx1ZShlKSB7XHJcbiAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgaWYgKGUudGFyZ2V0LnZhbHVlIHx8IChlLnRhcmdldC5kYXRhc2V0Lm51bGwgIT09ICd1bmRlZmluZWQnICYmIGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJycgJiYgIUJvb2xlYW4oZS50YXJnZXQuZGF0YXNldC5udWxsKSkpIHtcclxuICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpXHJcbiAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93Q29udG91cihzZGspIHtcclxuICBjb25zdCBjYW1lcmEgPSBzZGsudmlld2VyLmNhbWVyYTtcclxuICBjb25zdCBwb3NpdGlvbiA9IGNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYztcclxuICAvLyDorqHnrpfnm7jmnLrpq5jluqbvvIjnm7jlr7nkuo7mpK3nkIPpnaLvvIlcclxuICBsZXQgY2FtZXJhSGVpZ2h0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBvc2l0aW9uLmhlaWdodCk7XHJcbiAgaWYgKGNhbWVyYUhlaWdodCA+IDEwMDAwMDApIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoaGFuZGxlcikge1xyXG4gICAgaGFuZGxlci5kZXN0cm95KClcclxuICB9XHJcbiAgaWYgKCFzZGsudmlld2VyLmNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b21pemUtYWN0aXZlLWhlaWdodC1lbG0nKVswXSkge1xyXG4gICAgc2RrLnZpZXdlci5jb250YWluZXIuYXBwZW5kQ2hpbGQoYWN0aXZlSGVpZ2h0RWxtKVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICBzZGsudmlld2VyLmNhbnZhc1xyXG4gIClcclxuICBoYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LmVuZFBvc2l0aW9uKVxyXG4gICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICBsZXQgdG9wID0gMFxyXG4gICAgICBsZXQgbGVmdCA9IDBcclxuICAgICAgaWYgKHNkay52aWV3ZXIgJiYgc2RrLnZpZXdlci5fZWxlbWVudCkge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0td2lkZ2V0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdXHJcbiAgICAgICAgdG9wID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWVxyXG4gICAgICAgIGxlZnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyB3aW5kb3cuc2Nyb2xsWFxyXG4gICAgICB9XHJcbiAgICAgIGFjdGl2ZUhlaWdodEVsbS5zdHlsZS5sZWZ0ID0gbW92ZW1lbnQuZW5kUG9zaXRpb24ueCAtIDUwICsgbGVmdCArICdweCdcclxuICAgICAgYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLnRvcCA9IG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLSA0MCArIHRvcCArICdweCdcclxuICAgICAgYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcbiAgICAgIC8vIGxldCBwb3MgPSBzZGsudmlld2VyLnNjZW5lLmNsYW1wVG9IZWlnaHQoY2FydGVzaWFuKVxyXG4gICAgICBsZXQgcG9zODQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpXHJcbiAgICAgIC8vIHBvczg0LmFsdCA9IGhlaWdodFxyXG4gICAgICBsZXQgbWFpbkNvbnRvdXJIZWlnaHQgPSBNYXRoLmZsb29yKHBvczg0LmFsdCAvIG1hdGVyaWFsLnVuaWZvcm1zLnNwYWNpbmcpICogbWF0ZXJpYWwudW5pZm9ybXMuc3BhY2luZ1xyXG4gICAgICBsZXQgZ2FwID0gcG9zODQuYWx0IC0gbWFpbkNvbnRvdXJIZWlnaHRcclxuICAgICAgbGV0IGdhcDIgPSBtYXRlcmlhbC51bmlmb3Jtcy5zcGFjaW5nIC8gKG1hdGVyaWFsLnVuaWZvcm1zLnNlY29uZGFyeUxpbmVzQ291bnQgKyAxKVxyXG4gICAgICBsZXQgYWN0aXZlSGVpZ2h0ID0gTWF0aC5mbG9vcihnYXAgLyBnYXAyKSAqIGdhcDIgKyBtYWluQ29udG91ckhlaWdodFxyXG4gICAgICBpZiAocG9zODQuYWx0IDwgMCkge1xyXG4gICAgICAgIHBvczg0LmFsdCA9IDBcclxuICAgICAgfVxyXG4gICAgICBpZiAoKHBvczg0LmFsdCAtIGFjdGl2ZUhlaWdodCkgPiBnYXAyIC8gMikge1xyXG4gICAgICAgIGFjdGl2ZUhlaWdodCA9IGFjdGl2ZUhlaWdodCArIGdhcDJcclxuICAgICAgfVxyXG4gICAgICBtYXRlcmlhbC51bmlmb3Jtcy5tb3VzZUhlaWdodCA9IHBvczg0LmFsdFxyXG4gICAgICBtYXRlcmlhbC51bmlmb3Jtcy5tb3VzZVBvc2l0aW9uID0gY2FydGVzaWFuXHJcbiAgICAgIGFjdGl2ZUhlaWdodEVsbS5pbm5lckhUTUwgPSBgJHthY3RpdmVIZWlnaHQudG9GaXhlZCgwKX1gXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYWN0aXZlSGVpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSlcclxuICBzZGsudmlld2VyLnNjZW5lLmdsb2JlLm1hdGVyaWFsID0gbWF0ZXJpYWw7XHJcbn1cclxuZnVuY3Rpb24gaGlkZUNvbnRvdXIoc2RrKSB7XHJcbiAgaWYgKGhhbmRsZXIpIHtcclxuICAgIGhhbmRsZXIuZGVzdHJveSgpXHJcbiAgICBoYW5kbGVyID0gbnVsbFxyXG4gIH1cclxuICBpZiAoc2RrLnZpZXdlci5jb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9taXplLWFjdGl2ZS1oZWlnaHQtZWxtJylbMF0pIHtcclxuICAgIGFjdGl2ZUhlaWdodEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICBzZGsudmlld2VyLmNvbnRhaW5lci5yZW1vdmVDaGlsZChhY3RpdmVIZWlnaHRFbG0pXHJcbiAgfVxyXG4gIHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUubWF0ZXJpYWwgPSBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVNYXRlcmlhbCgpIHtcclxuICBDZXNpdW0uTWF0ZXJpYWwuX21hdGVyaWFsQ2FjaGUuX21hdGVyaWFscy5FbGV2YXRpb25Db250b3VyLmZhYnJpYy5zb3VyY2UgPSBgXHJcbnVuaWZvcm0gdmVjNCBhY3RpdmVDb2xvcjsgLy8g6YCJ5Lit6aKc6ImyXHJcbnVuaWZvcm0gZmxvYXQgc3BhY2luZzsgLy8g562J6auY6LedXHJcblxyXG4vLyDorqHmm7Lnur9cclxudW5pZm9ybSBib29sIGluZGV4Q29udG91clNob3c7XHJcbnVuaWZvcm0gZmxvYXQgaW5kZXhDb250b3VyV2lkdGg7XHJcbnVuaWZvcm0gdmVjNCBpbmRleENvbnRvdXJDb2xvcjtcclxuLy8g6aaW5puy57q/XHJcbnVuaWZvcm0gYm9vbCBpbnRlcm1lZGlhdGVDb250b3VyU2hvdztcclxudW5pZm9ybSBmbG9hdCBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGg7XHJcbnVuaWZvcm0gdmVjNCBpbnRlcm1lZGlhdGVDb250b3VyQ29sb3I7XHJcbi8vIOmXtOabsue6v1xyXG51bmlmb3JtIGJvb2wgaGFsZkludGVydmFsQ29udG91clNob3c7XHJcbnVuaWZvcm0gZmxvYXQgaGFsZkludGVydmFsQ29udG91cldpZHRoO1xyXG51bmlmb3JtIHZlYzQgaGFsZkludGVydmFsQ29udG91ckNvbG9yO1xyXG4vLyDliqnmm7Lnur9cclxudW5pZm9ybSBib29sIHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdztcclxudW5pZm9ybSBmbG9hdCBzdXBwbGVtZW50YXJ5Q29udG91cldpZHRoO1xyXG51bmlmb3JtIHZlYzQgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvcjtcclxuXHJcbnVuaWZvcm0gZmxvYXQgbW91c2VIZWlnaHQ7XHJcblxyXG51bmlmb3JtIGZsb2F0IHNlY29uZGFyeUxpbmVzQ291bnQ7IC8vIDA95peg5qyh57q/LCAxPTHmnaHmrKHnur8sIDI9Muadoeasoee6vy4uLlxyXG5cclxuY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KVxyXG57XHJcbiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpO1xyXG5cclxuICAgIC8vIOS4u+etiemrmOe6v+iuoeeul1xyXG4gICAgZmxvYXQgZGlzdGFuY2VUb01haW5Db250b3VyID0gbW9kKG1hdGVyaWFsSW5wdXQuaGVpZ2h0LCBzcGFjaW5nKTtcclxuXHJcbiAgICAvLyDmipfplK/pvb/orqHnrpdcclxuI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKVxyXG4gICAgZmxvYXQgZHhjID0gYWJzKGRGZHgobWF0ZXJpYWxJbnB1dC5oZWlnaHQpKTtcclxuICAgIGZsb2F0IGR5YyA9IGFicyhkRmR5KG1hdGVyaWFsSW5wdXQuaGVpZ2h0KSk7XHJcbiAgICBmbG9hdCBkRk1haW4gPSBtYXgoZHhjLCBkeWMpICogY3ptX3BpeGVsUmF0aW8gKiBpbmRleENvbnRvdXJXaWR0aDtcclxuI2Vsc2VcclxuICAgIGZsb2F0IGRGTWFpbiA9IGN6bV9waXhlbFJhdGlvICogaW5kZXhDb250b3VyV2lkdGg7XHJcbiNlbmRpZlxyXG5cclxuICAgIGJvb2wgaXNNYWluQ29udG91ciA9IGRpc3RhbmNlVG9NYWluQ29udG91ciA8IGRGTWFpbjtcclxuICAgIGJvb2wgaXNTZWNvbmRhcnlDb250b3VyID0gZmFsc2U7XHJcbiAgICBmbG9hdCBkRlNlY29uZGFyeSA9IDAuMDtcclxuICAgIGZsb2F0IHNlY29uZGFyeVNwYWNpbmcgPSAwLjA7XHJcbiAgICBib29sIGlzSGFsZkludGVydmFsID0gZmFsc2U7XHJcbiAgICBib29sIGlzSW50ZXJtZWRpYXRlPSBmYWxzZTtcclxuXHJcbiAgICAvLyDorqHnrpflvZPliY3pq5jluqbmiYDlsZ7nmoTnrYnpq5jnur/pq5jluqZcclxuICAgIGZsb2F0IG1haW5Db250b3VySGVpZ2h0ID0gZmxvb3IobWF0ZXJpYWxJbnB1dC5oZWlnaHQgLyBzcGFjaW5nKSAqIHNwYWNpbmc7XHJcbiAgICBmbG9hdCBzZWNvbmRhcnlDb250b3VySGVpZ2h0ID0gZmxvb3IobWF0ZXJpYWxJbnB1dC5oZWlnaHQgLyBzcGFjaW5nICogKHNlY29uZGFyeUxpbmVzQ291bnQgKyAxLjApKSAqIHNwYWNpbmcgLyAoc2Vjb25kYXJ5TGluZXNDb3VudCArIDEuMCk7XHJcblxyXG4gICAgLy8g6K6h566X5qyh57q/5Zyo5Lik5p2h5Li7562J6auY57q/5LmL6Ze055qE55u45a+55L2N572uXHJcbiAgICBmbG9hdCByZWxhdGl2ZUhlaWdodCA9IG1hdGVyaWFsSW5wdXQuaGVpZ2h0IC0gbWFpbkNvbnRvdXJIZWlnaHQ7XHJcbiAgICBmbG9hdCBub3JtYWxpemVkUG9zaXRpb24gPSByZWxhdGl2ZUhlaWdodCAvIHNwYWNpbmc7XHJcblxyXG4gICAgLy8g6K6h566X5qyh57q/57Si5byV77yI5LuO5Li7562J6auY57q/5byA5aeL6K6h5pWw77yJXHJcbiAgICBmbG9hdCBsaW5lSW5kZXggPSBmbG9vcihub3JtYWxpemVkUG9zaXRpb24gKiAoc2Vjb25kYXJ5TGluZXNDb3VudCArIDEuMCkpO1xyXG5cclxuICAgIC8vIOWPquacieW9k+WtmOWcqOasoee6v+aXtuaJjeiuoeeul+asoee6v1xyXG4gICAgaWYoc2Vjb25kYXJ5TGluZXNDb3VudCA+IDAuMCkge1xyXG4gICAgICBmbG9hdCBzZWNvbmRhcnlMaW5lc1dpZHRoID0gc3VwcGxlbWVudGFyeUNvbnRvdXJXaWR0aDtcclxuICAgICAgICBzZWNvbmRhcnlTcGFjaW5nID0gc3BhY2luZyAvIChzZWNvbmRhcnlMaW5lc0NvdW50ICsgMS4wKTtcclxuICAgICAgICBmbG9hdCBkaXN0YW5jZVRvU2Vjb25kYXJ5Q29udG91ciA9IG1vZChtYXRlcmlhbElucHV0LmhlaWdodCwgc2Vjb25kYXJ5U3BhY2luZyk7XHJcblxyXG4gICAgICAgIC8vIOehruS/neasoee6v+S4jeS8muS4juS4u+e6v+mHjeWPoFxyXG4gICAgICAgIGZsb2F0IG1pbkRpc3RhbmNlVG9NYWluID0gbWluKGRpc3RhbmNlVG9NYWluQ29udG91ciwgc3BhY2luZyAtIGRpc3RhbmNlVG9NYWluQ29udG91cik7XHJcbiAgICAgICAgYm9vbCBub3RDbG9zZVRvTWFpbiA9IG1pbkRpc3RhbmNlVG9NYWluID4gZEZNYWluICogMi4wOyAvLyAy5YCN57q/5a6957yT5YayXHJcblxyXG5cclxuICAgICAgICBpZiAobGluZUluZGV4ID4gMC4wICYmIGxpbmVJbmRleCA8IHNlY29uZGFyeUxpbmVzQ291bnQpIHtcclxuICAgICAgICAgIC8vIOS9v+eUqG1vZOWHveaVsOajgOafpeS9meaVsOaYr+WQpuaOpei/kTDvvIjogIPomZHmta7ngrnmlbDnsr7luqbpl67popjvvIlcclxuICAgICAgICAgIGlzSGFsZkludGVydmFsID0gYWJzKG1vZChsaW5lSW5kZXgsIDIuMCkpIDwgMC4wMTtcclxuICAgICAgICAgIGlmKGlzSGFsZkludGVydmFsKSB7XHJcbiAgICAgICAgICAgIHNlY29uZGFyeUxpbmVzV2lkdGggPSBoYWxmSW50ZXJ2YWxDb250b3VyV2lkdGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyDkvb/nlKhtb2Tlh73mlbDmo4Dmn6XkvZnmlbDmmK/lkKbmjqXov5Ew77yI6ICD6JmR5rWu54K55pWw57K+5bqm6Zeu6aKY77yJXHJcbiAgICAgICAgICBpc0ludGVybWVkaWF0ZSA9IGFicyhtb2QobGluZUluZGV4LCA0LjApKSA8IDAuMDE7XHJcbiAgICAgICAgICBpZihpc0ludGVybWVkaWF0ZSkge1xyXG4gICAgICAgICAgICBzZWNvbmRhcnlMaW5lc1dpZHRoID0gaW50ZXJtZWRpYXRlQ29udG91cldpZHRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKVxyXG4gICAgICAgIGRGU2Vjb25kYXJ5ID0gbWF4KGR4YywgZHljKSAqIGN6bV9waXhlbFJhdGlvICogc2Vjb25kYXJ5TGluZXNXaWR0aDtcclxuI2Vsc2VcclxuICAgICAgICBkRlNlY29uZGFyeSA9IGN6bV9waXhlbFJhdGlvICogc2Vjb25kYXJ5TGluZXNXaWR0aDtcclxuI2VuZGlmXHJcblxyXG4gICAgICAgIGlzU2Vjb25kYXJ5Q29udG91ciA9IChkaXN0YW5jZVRvU2Vjb25kYXJ5Q29udG91ciA8IGRGU2Vjb25kYXJ5KSAmJiBub3RDbG9zZVRvTWFpbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDpq5jkuq7liKTmlq1cclxuICAgIGJvb2wgc2hvdWxkSGlnaGxpZ2h0ID0gZmFsc2U7XHJcbiAgICBpZihpc01haW5Db250b3VyICYmIGFicyhtYWluQ29udG91ckhlaWdodCAtIG1vdXNlSGVpZ2h0KSA8IDAuNSAqIChzcGFjaW5nLyhzZWNvbmRhcnlMaW5lc0NvdW50KzEuMCkpKSB7XHJcbiAgICAgICAgc2hvdWxkSGlnaGxpZ2h0ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZihpc1NlY29uZGFyeUNvbnRvdXIgJiYgYWJzKHNlY29uZGFyeUNvbnRvdXJIZWlnaHQgLSBtb3VzZUhlaWdodCkgPCAwLjUgKiAoc3BhY2luZy8oc2Vjb25kYXJ5TGluZXNDb3VudCsxLjApKSkge1xyXG4gICAgICAgIHNob3VsZEhpZ2hsaWdodCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g6aKc6Imy6L6T5Ye6XHJcbiAgICB2ZWM0IG91dENvbG9yO1xyXG4gICAgaWYoc2hvdWxkSGlnaGxpZ2h0KSB7XHJcbiAgICAgICAgb3V0Q29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZlYzQoYWN0aXZlQ29sb3IucmdiLCBhY3RpdmVDb2xvci5hKSk7XHJcbiAgICB9IGVsc2UgaWYoaXNNYWluQ29udG91cikge1xyXG4gICAgICAgIGZsb2F0IGEgPSBpbmRleENvbnRvdXJDb2xvci5hO1xyXG4gICAgICAgIGlmKCFpbmRleENvbnRvdXJTaG93KSB7XHJcbiAgICAgICAgICBhID0gMC4wO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QodmVjNChpbmRleENvbnRvdXJDb2xvci5yZ2IsIGEpKTtcclxuICAgIH0gZWxzZSBpZihpc1NlY29uZGFyeUNvbnRvdXIpIHtcclxuICAgICAgICBmbG9hdCBhID0gc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvci5hO1xyXG4gICAgICAgIGlmKCFzdXBwbGVtZW50YXJ5Q29udG91clNob3cpIHtcclxuICAgICAgICAgIGEgPSAwLjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG91dENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh2ZWM0KHN1cHBsZW1lbnRhcnlDb250b3VyQ29sb3IucmdiLCBhKSk7XHJcbiAgICAgICAgaWYoaXNIYWxmSW50ZXJ2YWwpIHtcclxuICAgICAgICAgIGZsb2F0IGEgPSBoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IuYTtcclxuICAgICAgICAgIGlmKCFoYWxmSW50ZXJ2YWxDb250b3VyU2hvdykge1xyXG4gICAgICAgICAgICBhID0gMC4wO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3V0Q29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZlYzQoaGFsZkludGVydmFsQ29udG91ckNvbG9yLnJnYiwgYSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihpc0ludGVybWVkaWF0ZSkge1xyXG4gICAgICAgICAgZmxvYXQgYSA9IGludGVybWVkaWF0ZUNvbnRvdXJDb2xvci5hO1xyXG4gICAgICAgICAgaWYoIWludGVybWVkaWF0ZUNvbnRvdXJTaG93KSB7XHJcbiAgICAgICAgICAgIGEgPSAwLjA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QodmVjNChpbnRlcm1lZGlhdGVDb250b3VyQ29sb3IucmdiLCBhKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBvdXRDb2xvciA9IHZlYzQoMC4wKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihtYXRlcmlhbElucHV0LmhlaWdodDwwLjApIHtcclxuICAgICAgb3V0Q29sb3IgPSB2ZWM0KDAuMCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWF0ZXJpYWwuZGlmZnVzZSA9IG91dENvbG9yLnJnYjtcclxuICAgIG1hdGVyaWFsLmFscGhhID0gb3V0Q29sb3IuYTtcclxuICAgIHJldHVybiBtYXRlcmlhbDtcclxufVxyXG5gXHJcblxyXG4gIG1hdGVyaWFsID0gbmV3IENlc2l1bS5NYXRlcmlhbCh7XHJcbiAgICBmYWJyaWM6IHtcclxuICAgICAgdHlwZTogXCJFbGV2YXRpb25Db250b3VyXCIsXHJcbiAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgc3BhY2luZzogMTAgKiA1LFxyXG4gICAgICAgIGFjdGl2ZUNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGFjdGl2ZUNvbG9yKSxcclxuICAgICAgICBtb3VzZUhlaWdodDogLTEwMDAwMCxcclxuICAgICAgICBtb3VzZVBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoMCwgMCwgMCksXHJcbiAgICAgICAgc2Vjb25kYXJ5TGluZXNDb3VudDogc2Vjb25kYXJ5TGluZXNDb3VudCxcclxuICAgICAgICBjYW1lcmFIZWlnaHQ6IDAsXHJcblxyXG4gICAgICAgIGluZGV4Q29udG91clNob3c6IGluZGV4Q29udG91clNob3csXHJcbiAgICAgICAgaW5kZXhDb250b3VyV2lkdGg6IGluZGV4Q29udG91cldpZHRoLFxyXG4gICAgICAgIGluZGV4Q29udG91ckNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGluZGV4Q29udG91ckNvbG9yKSxcclxuICAgICAgICBpbnRlcm1lZGlhdGVDb250b3VyU2hvdzogaW50ZXJtZWRpYXRlQ29udG91clNob3csXHJcbiAgICAgICAgaW50ZXJtZWRpYXRlQ29udG91cldpZHRoOiBpbnRlcm1lZGlhdGVDb250b3VyV2lkdGgsXHJcbiAgICAgICAgaW50ZXJtZWRpYXRlQ29udG91ckNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGludGVybWVkaWF0ZUNvbnRvdXJDb2xvciksXHJcbiAgICAgICAgaGFsZkludGVydmFsQ29udG91clNob3c6IGhhbGZJbnRlcnZhbENvbnRvdXJTaG93LFxyXG4gICAgICAgIGhhbGZJbnRlcnZhbENvbnRvdXJXaWR0aDogaGFsZkludGVydmFsQ29udG91cldpZHRoLFxyXG4gICAgICAgIGhhbGZJbnRlcnZhbENvbnRvdXJDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhoYWxmSW50ZXJ2YWxDb250b3VyQ29sb3IpLFxyXG4gICAgICAgIHN1cHBsZW1lbnRhcnlDb250b3VyU2hvdzogc3VwcGxlbWVudGFyeUNvbnRvdXJTaG93LFxyXG4gICAgICAgIHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGg6IHN1cHBsZW1lbnRhcnlDb250b3VyV2lkdGgsXHJcbiAgICAgICAgc3VwcGxlbWVudGFyeUNvbnRvdXJDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhzdXBwbGVtZW50YXJ5Q29udG91ckNvbG9yKSxcclxuICAgICAgfSxcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IHsgZGlhbG9nLCBzdGFydERyYXcsIHJlc2V0LCBzZXRWYWwgfVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOFRBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNVVBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQXdKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/Contour/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/DTH/index.js":
-/*!*********************************!*\
- !*** ./src/Global/DTH/index.js ***!
- \*********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../on */ \"./src/on/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nvar DTH = /*#__PURE__*/function () {\n function DTH(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, DTH);\n this.sdk = sdk;\n this.primitives = {\n building: [],\n unit: [],\n dth: []\n };\n this.options = _objectSpread({}, options);\n this.options.host = this.options.host || Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getHost\"])();\n this.temporaryDth = [];\n this.dth = {};\n this.PickBuildingEvent = new Cesium.Event();\n this.initEvents();\n this.activeBuilding;\n }\n\n /**\r\n * @description 注册点击的事件回调\r\n * @memberOf DTH\r\n * */\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(DTH, [{\n key: \"PickCallback\",\n value: function PickCallback(that, cb) {\n this.PickBuildingEvent.addEventListener(cb, that);\n }\n\n //场景事件\n }, {\n key: \"initEvents\",\n value: function initEvents() {\n var _this2 = this;\n new Cesium.ScreenSpaceEventHandler(this.sdk.viewer.scene.canvas).setInputAction(function (e) {\n if (YJ.Measure.GetMeasureStatus()) {\n return;\n }\n if (!_this2.isActivate) return;\n var pickFeature = _this2.sdk.viewer.scene.pick(e.position);\n if (pickFeature) {\n //点击了已有的分户单体化\n if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && (pickFeature.id.type == \"yj-dth-dth\" || pickFeature.id.type == \"yj-dth-highlight\")) {\n _this2.getIDBypickFeature(pickFeature); //处理点击到的楼层\n return;\n }\n if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && pickFeature.id.type == \"yj-dth-unit\") {\n _this2.highlightPrimitive && _this2.sdk.viewer.scene.primitives.remove(_this2.highlightPrimitive);\n _this2.handlePickEvent(pickFeature.id);\n return;\n }\n\n // if (pickFeature.id && pickFeature.id.type === 'yj-dth-highlight') {\n // return;\n // }\n }\n _this2.highlightPrimitive && _this2.sdk.viewer.scene.primitives.remove(_this2.highlightPrimitive);\n var position = _this2.sdk.viewer.scene.pickPosition(e.position); //屏幕坐标转为笛卡尔空间坐标\n if (!position) return;\n var c = Cesium.Cartographic.fromCartesian(position); //笛卡尔坐标转为经纬度(弧度)\n var point = [Cesium.Math.toDegrees(c.longitude), Cesium.Math.toDegrees(c.latitude)]; //转为经纬度点\n _this2.queryByPoint(point, c.height);\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n var coverLabelEntity = this.sdk.viewer.entities.getOrCreateEntity('yj-dth-cover-label');\n coverLabelEntity.show = false;\n // this.sdk.viewer.entities.add({\n // position: Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222),\n // label: {\n // text: \"Philadelphia\",\n // font: \"24px Helvetica\",\n // fillColor: Cesium.Color.SKYBLUE,\n // outlineColor: Cesium.Color.BLACK,\n // outlineWidth: 2,\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // },\n // });\n var lastPickTime = 0;\n var _this = this;\n var timeoutEvent;\n new Cesium.ScreenSpaceEventHandler(this.sdk.viewer.scene.canvas).setInputAction(function (movement) {\n if (YJ.Measure.GetMeasureStatus()) {\n return;\n }\n try {\n var now = Date.now();\n if (now - lastPickTime < 100) {\n clearTimeout(timeoutEvent);\n timeoutEvent = setTimeout(function () {\n pick(movement);\n }, 100);\n return;\n }\n clearTimeout(timeoutEvent);\n lastPickTime = now;\n pick(movement);\n } catch (error) {}\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n function pick(e) {\n var pickFeature = _this.sdk.viewer.scene.pick(e.endPosition);\n if (pickFeature) {\n var labelText = '';\n if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && (pickFeature.id.type === \"yj-dth-dth\" || pickFeature.id.type === \"yj-dth-highlight\")) {\n labelText = pickFeature.id.build_info.name + ' - ' + pickFeature.id.unit_info.name + ' - ' + pickFeature.id.room_num;\n } else if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && pickFeature.id.type === \"yj-dth-unit\") {\n if (pickFeature.id.build_info.name) {\n labelText = pickFeature.id.build_info.name + ' - ' + pickFeature.id.name;\n }\n } else if (pickFeature.primitive && pickFeature.primitive instanceof Cesium.ClassificationPrimitive && pickFeature.id && pickFeature.id.type === \"yj-dth-build\") {\n if (pickFeature.id.name) {\n labelText = pickFeature.id.name;\n }\n } else if (pickFeature.primitive && pickFeature.primitive.id && pickFeature.primitive.id.id && pickFeature.primitive.id.id === 'yj-dth-cover-label') {\n coverLabelEntity.position = _this.sdk.viewer.scene.pickPosition(e.endPosition);\n return;\n } else {\n coverLabelEntity.show = false;\n return;\n }\n if (labelText) {\n coverLabelEntity.position = _this.sdk.viewer.scene.pickPosition(e.endPosition);\n coverLabelEntity.label = new Cesium.LabelGraphics({\n text: labelText,\n font: \"20px Helvetica\",\n pixelOffset: {\n x: 0,\n y: -30\n },\n fillColor: Cesium.Color.fromCssColorString('#ffffff'),\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 1,\n showBackground: true,\n backgroundColor: Cesium.Color.fromCssColorString('#000000').withAlpha(0.8),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n });\n coverLabelEntity.show = true;\n }\n }\n }\n }\n\n /*根据用户信息查询单体化*/\n }, {\n key: \"queryByUserInfo\",\n value: function queryByUserInfo(data) {\n this.queryByPoint([data.position.lng, data.position.lat], data.position.alt, data.id);\n }\n\n //点查询 点击查询是查询分层的数据\n }, {\n key: \"queryByPoint\",\n value: function () {\n var _queryByPoint = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee(point) {\n var url, response, data;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n url = \"\";\n if (this.options.host.endsWith(\"yjearth4.0\")) {\n url = this.options.host + '/api/v1/dth/build/query_by_point';\n } else {\n url = this.options.host + '/yjearth4.0/api/v1/dth/build/query_by_point';\n }\n url += '?point=' + JSON.stringify({\n 'lng': point[0],\n 'lat': point[1]\n });\n _context.next = 5;\n return fetch(url, {\n method: 'get',\n // body: JSON.stringify({point: {'lng': point[0],'lat': point[1]}}),\n headers: {\n 'Content-Type': 'application/json',\n \"token\": Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getToken\"])(),\n \"Authorization\": \"Bearer \" + Object(_on__WEBPACK_IMPORTED_MODULE_5__[\"getToken\"])()\n }\n });\n case 5:\n response = _context.sent;\n if (!(response.status === 200)) {\n _context.next = 11;\n break;\n }\n _context.next = 9;\n return response.json();\n case 9:\n data = _context.sent;\n if (data.code === 200 || data.code === 0) {\n this.processQueryByPointResults(data.data);\n } else {\n window.ELEMENT && window.ELEMENT.Message({\n message: data.msg || data.message,\n type: 'warning',\n duration: 1500\n });\n }\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function queryByPoint(_x) {\n return _queryByPoint.apply(this, arguments);\n }\n return queryByPoint;\n }() // 处理查询结果\n }, {\n key: \"processQueryByPointResults\",\n value: function () {\n var _processQueryByPointResults = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2(data, isflyto) {\n var offset,\n range,\n i,\n _i,\n _i2,\n primitivesData,\n pickFeature,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n offset = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {\n heading: 0.0,\n pitch: -90.0,\n roll: 0.0\n };\n data.build_info && this.handlePickEvent(data);\n this.clearAllDthPrimitive();\n this.clearAllUnitPrimitive();\n if (this.activeBuilding) {\n this.clearBuildingPrimitive(this.activeBuilding);\n this.activeBuilding = null;\n }\n if (!data.build_info) {\n _context2.next = 26;\n break;\n }\n range = JSON.parse(data.build_info.range);\n if (data.dan_yuan.length > 0) {\n for (i = 0; i < data.dan_yuan.length; i++) {\n if (data.dan_yuan[i].children.length > 0) {\n this.addDthPrimitive(data.dan_yuan[i].children, data.build_info, data.dan_yuan[i]);\n } else {\n this.addUnitPrimitive([data.dan_yuan[i]], data.build_info, data.dan_yuan[i]);\n }\n }\n } else {\n this.activeBuilding = data.build_info.ID || data.build_info.id;\n this.addBuildingPrimitive([data.build_info]);\n }\n if (!isflyto) {\n _context2.next = 26;\n break;\n }\n if (data.info && data.info.dan_yuan) {\n range = JSON.parse(data.info.dan_yuan.range);\n }\n if (!(data.info && data.info.hu)) {\n _context2.next = 25;\n break;\n }\n range = JSON.parse(data.info.hu.range);\n for (_i = 0; _i < range.length; _i++) {\n range[_i].alt = data.info.hu.bottom;\n }\n _i2 = 0;\n case 14:\n if (!(_i2 < this.primitives.dth.length)) {\n _context2.next = 25;\n break;\n }\n _context2.next = 17;\n return this.primitives.dth[_i2].readyPromise;\n case 17:\n primitivesData = this.primitives.dth[_i2]._primitiveOptions.geometryInstances[0].id;\n if (!(primitivesData.ID === data.info.hu.ID && primitivesData.room_num === data.info.hu.room_num)) {\n _context2.next = 22;\n break;\n }\n pickFeature = {\n id: _objectSpread(_objectSpread({}, data.info.hu), {}, {\n build_info: _objectSpread({}, data.build_info),\n unit_info: data.info.dan_yuan\n }),\n primitive: this.primitives.dth[_i2]\n };\n this.getIDBypickFeature(pickFeature);\n return _context2.abrupt(\"break\", 25);\n case 22:\n _i2++;\n _context2.next = 14;\n break;\n case 25:\n this.flyTo(range, offset);\n case 26:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function processQueryByPointResults(_x2, _x3) {\n return _processQueryByPointResults.apply(this, arguments);\n }\n return processQueryByPointResults;\n }() // 添加房屋Primitive\n }, {\n key: \"addBuildingPrimitive\",\n value: function () {\n var _addBuildingPrimitive = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee3(array) {\n var i, fromDegreesArray, extrudedHeight, positions, m, polygonGeometry;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n for (i = 0; i < array.length; i++) {\n fromDegreesArray = [];\n extrudedHeight = 0;\n positions = JSON.parse(array[i].range);\n for (m = 0; m < positions.length; m++) {\n if (extrudedHeight < positions[m].alt) {\n extrudedHeight = positions[m].alt;\n }\n fromDegreesArray.push(positions[m].lng, positions[m].lat, 0);\n }\n polygonGeometry = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n // perPositionHeight: true, //使用z坐标 否则高度从0开始\n extrudedHeight: 100000000 //拉伸高度\n });\n this.primitives.building.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread({\n type: 'yj-dth-build'\n }, array[i]),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometry),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(255, 235, 59, 0.4)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n }\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function addBuildingPrimitive(_x4) {\n return _addBuildingPrimitive.apply(this, arguments);\n }\n return addBuildingPrimitive;\n }() // 根据id删除房屋Primitive\n }, {\n key: \"clearBuildingPrimitive\",\n value: function clearBuildingPrimitive(id) {\n for (var i = this.primitives.building.length - 1; i >= 0; i--) {\n if (id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.ID || id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.id) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.building[i]);\n this.primitives.building.splice(i, 1);\n break;\n }\n }\n }\n // 删除全部房屋Primitive\n }, {\n key: \"clearAllBuildingPrimitive\",\n value: function clearAllBuildingPrimitive() {\n for (var i = this.primitives.building.length - 1; i >= 0; i--) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.building[i]);\n }\n this.primitives.building = [];\n }\n\n // 添加单元Primitive\n }, {\n key: \"addUnitPrimitive\",\n value: function () {\n var _addUnitPrimitive = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee4(array, build_info, unit_info) {\n var i, fromDegreesArray, extrudedHeight, positions, m, polygonGeometry;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n for (i = 0; i < array.length; i++) {\n fromDegreesArray = [];\n extrudedHeight = 0;\n positions = JSON.parse(array[i].range);\n for (m = 0; m < positions.length; m++) {\n if (extrudedHeight < positions[m].alt) {\n extrudedHeight = positions[m].alt;\n }\n fromDegreesArray.push(positions[m].lng, positions[m].lat, 0);\n }\n polygonGeometry = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n // perPositionHeight: true, //使用z坐标 否则高度从0开始\n extrudedHeight: 100000000 //拉伸高度\n });\n this.primitives.unit.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread(_objectSpread({\n type: 'yj-dth-unit'\n }, array[i]), {}, {\n build_info: _objectSpread({}, build_info),\n unit_info: _objectSpread({}, unit_info)\n }),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometry),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(255, 235, 59, 0.4)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n this.primitives.unit.push(this.sdk.viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: new Cesium.GroundPolylineGeometry({\n positions: Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray),\n width: 2.0\n }),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('#00ff0a').withAlpha(0.8))\n }\n }),\n appearance: new Cesium.PolylineColorAppearance()\n })));\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function addUnitPrimitive(_x5, _x6, _x7) {\n return _addUnitPrimitive.apply(this, arguments);\n }\n return addUnitPrimitive;\n }() // 根据id删除单元Primitive\n }, {\n key: \"clearUnitPrimitive\",\n value: function clearUnitPrimitive(id) {\n for (var i = this.primitives.building.length - 1; i >= 0; i--) {\n if (id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.ID || id === this.primitives.building[i]._primitiveOptions.geometryInstances[0].id.id) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.unit[i]);\n this.primitives.unit.splice(i, 1);\n break;\n }\n }\n }\n\n // 删除全部单元Primitive\n }, {\n key: \"clearAllUnitPrimitive\",\n value: function clearAllUnitPrimitive() {\n for (var i = this.primitives.unit.length - 1; i >= 0; i--) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.unit[i]);\n }\n this.primitives.unit = [];\n }\n\n // 添加单体化Primitive\n }, {\n key: \"addDthPrimitive\",\n value: function addDthPrimitive(array, build_info, unit_info) {\n for (var i = 0; i < array.length; i++) {\n var positions = JSON.parse(array[i].range);\n var fromDegreesArray = [];\n for (var m = 0; m < positions.length; m++) {\n fromDegreesArray.push(positions[m].lng, positions[m].lat, array[i].bottom + 0.3);\n }\n var polygonGeometry = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n perPositionHeight: true,\n //使用z坐标 否则高度从0开始\n extrudedHeight: array[i].height + array[i].bottom //拉伸高度\n });\n var polygonGeometryBorder = new Cesium.PolygonGeometry({\n polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)),\n perPositionHeight: true,\n //使用z坐标 否则高度从0开始\n extrudedHeight: array[i].bottom //拉伸高度\n });\n this.primitives.dth.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread(_objectSpread({\n type: 'yj-dth-dth'\n }, array[i]), {}, {\n build_info: _objectSpread({}, build_info),\n unit_info: _objectSpread({}, unit_info)\n }),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometry),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(0, 64, 255, 0.4)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n this.primitives.dth.push(this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread({\n type: 'yj-dth-dth-border'\n }, array[i]),\n geometry: Cesium.PolygonGeometry.createGeometry(polygonGeometryBorder),\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('rgb(0, 0, 0, 1)')),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n })));\n }\n }\n // 根据id删除单体化Primitive\n }, {\n key: \"clearDthPrimitive\",\n value: function clearDthPrimitive(id) {\n for (var i = this.primitives.dth.length - 1; i >= 0; i--) {\n if (id === this.primitives.dth[i]._primitiveOptions.geometryInstances[0].id.ID || id === this.primitives.dth[i]._primitiveOptions.geometryInstances[0].id.id) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.dth[i]);\n this.primitives.dth.splice(i, 1);\n }\n }\n }\n\n // 删除全部单体化Primitive\n }, {\n key: \"clearAllDthPrimitive\",\n value: function clearAllDthPrimitive() {\n this.highlightPrimitive && this.sdk.viewer.scene.primitives.remove(this.highlightPrimitive);\n for (var i = this.primitives.dth.length - 1; i >= 0; i--) {\n this.sdk.viewer.scene.primitives.remove(this.primitives.dth[i]);\n }\n this.primitives.dth = [];\n }\n }, {\n key: \"getIDBypickFeature\",\n value: function getIDBypickFeature(pickFeature) {\n //恢复上一个贴对象面显示\n if (this.clickHighlightPrimitive) {\n this.clickHighlightPrimitive.show = true;\n }\n this.highlightPrimitive && this.sdk.viewer.scene.primitives.remove(this.highlightPrimitive);\n this.highlightPrimitive = this.sdk.viewer.scene.primitives.add(new Cesium.ClassificationPrimitive({\n geometryInstances: new Cesium.GeometryInstance({\n id: _objectSpread(_objectSpread({}, pickFeature.id), {}, {\n type: 'yj-dth-highlight'\n }),\n geometry: pickFeature.primitive._primitiveOptions.geometryInstances[0].geometry,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromCssColorString('#ff9800').withAlpha(0.8)),\n show: new Cesium.ShowGeometryInstanceAttribute(true)\n }\n }),\n classificationType: Cesium.ClassificationType.CESIUM_3D_TILE\n }));\n this.highlightPrimitive.readyPromise.then(function () {\n //设置当前点击的贴对象面不显示\n pickFeature.primitive.show = false;\n });\n this.clickHighlightPrimitive = pickFeature.primitive;\n var range = pickFeature.id.range;\n if (typeof pickFeature.id.range === 'string') {\n range = JSON.parse(pickFeature.id.range);\n }\n this.getHilightArea(range);\n this.handlePickEvent(pickFeature.id);\n }\n\n //处理点击事件\n }, {\n key: \"handlePickEvent\",\n value: function handlePickEvent(id) {\n this.PickBuildingEvent.raiseEvent(id); //触发选中事件 通知界面更新\n }\n }, {\n key: \"getHilightArea\",\n value: function getHilightArea(points) {\n var radius = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var arr = [];\n points.forEach(function (point) {\n arr.push([point.lng, point.lat]);\n });\n arr.push(arr[0]);\n var poly = turf.polygon([arr]);\n var buffered = turf.buffer(poly, Number(radius) / 1000);\n return buffered.geometry.coordinates;\n }\n }, {\n key: \"flyTo\",\n value: function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee5(positions) {\n var offset,\n tools,\n height,\n positionArray,\n i,\n a,\n BoundingSphere,\n _args5 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n offset = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {\n heading: 0.0,\n pitch: -90.0,\n roll: 0.0\n };\n tools = new YJ.Tools(this.sdk);\n height = 0;\n positionArray = [];\n i = 0;\n case 5:\n if (!(i < positions.length)) {\n _context5.next = 18;\n break;\n }\n if (!positions[i].alt) {\n _context5.next = 10;\n break;\n }\n height = positions[i].alt;\n _context5.next = 13;\n break;\n case 10:\n _context5.next = 12;\n return tools.getClampToHeight(positions[i]);\n case 12:\n height = _context5.sent;\n case 13:\n a = Cesium.Cartesian3.fromDegrees(positions[i].lng, positions[i].lat, height);\n positionArray.push(a.x, a.y, a.z);\n case 15:\n i++;\n _context5.next = 5;\n break;\n case 18:\n _context5.next = 20;\n return Cesium.BoundingSphere.fromVertices(positionArray);\n case 20:\n BoundingSphere = _context5.sent;\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(offset.heading || 0),\n pitch: Cesium.Math.toRadians(offset.pitch || offset.pitch === 0 ? offset.pitch : -90),\n roll: Cesium.Math.toRadians(offset.roll || 0)\n }\n });\n case 22:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function flyTo(_x8) {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n }, {\n key: \"activate\",\n value: function activate() {\n this.isActivate = true;\n }\n }, {\n key: \"deactivate\",\n value: function deactivate() {\n this.isActivate = false;\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (DTH);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0RUSC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvRFRIL2luZGV4LmpzPzUzZjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0SG9zdCwgZ2V0VG9rZW4gfSBmcm9tIFwiLi4vLi4vb25cIjtcclxuY2xhc3MgRFRIIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy5zZGsgPSBzZGtcclxuICAgIHRoaXMucHJpbWl0aXZlcyA9IHtcclxuICAgICAgYnVpbGRpbmc6IFtdLFxyXG4gICAgICB1bml0OiBbXSxcclxuICAgICAgZHRoOiBbXVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5vcHRpb25zIH1cclxuICAgIHRoaXMub3B0aW9ucy5ob3N0ID0gdGhpcy5vcHRpb25zLmhvc3QgfHwgZ2V0SG9zdCgpXHJcbiAgICB0aGlzLnRlbXBvcmFyeUR0aCA9IFtdXHJcbiAgICB0aGlzLmR0aCA9IHt9XHJcbiAgICB0aGlzLlBpY2tCdWlsZGluZ0V2ZW50ID0gbmV3IENlc2l1bS5FdmVudCgpO1xyXG4gICAgdGhpcy5pbml0RXZlbnRzKClcclxuICAgIHRoaXMuYWN0aXZlQnVpbGRpbmdcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDms6jlhozngrnlh7vnmoTkuovku7blm57osINcclxuICAgKiBAbWVtYmVyT2YgRFRIXHJcbiAgICogKi9cclxuICBQaWNrQ2FsbGJhY2sodGhhdCwgY2IpIHtcclxuICAgIHRoaXMuUGlja0J1aWxkaW5nRXZlbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgY2IsXHJcbiAgICAgIHRoYXRcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8v5Zy65pmv5LqL5Lu2XHJcbiAgaW5pdEV2ZW50cygpIHtcclxuICAgIG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIodGhpcy5zZGsudmlld2VyLnNjZW5lLmNhbnZhcykuc2V0SW5wdXRBY3Rpb24oKChlKSA9PiB7XHJcbiAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5pc0FjdGl2YXRlKSByZXR1cm47XHJcbiAgICAgIGxldCBwaWNrRmVhdHVyZSA9IHRoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKGUucG9zaXRpb24pO1xyXG4gICAgICBpZiAocGlja0ZlYXR1cmUpIHtcclxuICAgICAgICAvL+eCueWHu+S6huW3suacieeahOWIhuaIt+WNleS9k+WMllxyXG4gICAgICAgIGlmIChwaWNrRmVhdHVyZS5wcmltaXRpdmUgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlIGluc3RhbmNlb2YgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLmlkICYmIChwaWNrRmVhdHVyZS5pZC50eXBlID09IFwieWotZHRoLWR0aFwiIHx8IHBpY2tGZWF0dXJlLmlkLnR5cGUgPT0gXCJ5ai1kdGgtaGlnaGxpZ2h0XCIpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldElEQnlwaWNrRmVhdHVyZShwaWNrRmVhdHVyZSk7IC8v5aSE55CG54K55Ye75Yiw55qE5qW85bGCXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwaWNrRmVhdHVyZS5wcmltaXRpdmUgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlIGluc3RhbmNlb2YgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLmlkICYmIHBpY2tGZWF0dXJlLmlkLnR5cGUgPT0gXCJ5ai1kdGgtdW5pdFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSAmJiB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5oaWdobGlnaHRQcmltaXRpdmUpXHJcbiAgICAgICAgICB0aGlzLmhhbmRsZVBpY2tFdmVudChwaWNrRmVhdHVyZS5pZClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmIChwaWNrRmVhdHVyZS5pZCAmJiBwaWNrRmVhdHVyZS5pZC50eXBlID09PSAneWotZHRoLWhpZ2hsaWdodCcpIHtcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlICYmIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSlcclxuICAgICAgbGV0IHBvc2l0aW9uID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihlLnBvc2l0aW9uKTsgLy/lsY/luZXlnZDmoIfovazkuLrnrJvljaHlsJTnqbrpl7TlnZDmoIdcclxuICAgICAgaWYgKCFwb3NpdGlvbikgcmV0dXJuO1xyXG5cclxuICAgICAgbGV0IGMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4ocG9zaXRpb24pOyAvL+esm+WNoeWwlOWdkOagh+i9rOS4uue7j+e6rOW6pu+8iOW8p+W6pu+8iVxyXG4gICAgICBsZXQgcG9pbnQgPSBbQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGMubG9uZ2l0dWRlKSwgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGMubGF0aXR1ZGUpXTsgLy/ovazkuLrnu4/nuqzluqbngrlcclxuICAgICAgdGhpcy5xdWVyeUJ5UG9pbnQocG9pbnQsIGMuaGVpZ2h0KTtcclxuICAgIH0pLCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSyk7XHJcblxyXG4gICAgbGV0IGNvdmVyTGFiZWxFbnRpdHkgPSB0aGlzLnNkay52aWV3ZXIuZW50aXRpZXMuZ2V0T3JDcmVhdGVFbnRpdHkoJ3lqLWR0aC1jb3Zlci1sYWJlbCcpXHJcbiAgICBjb3ZlckxhYmVsRW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgLy8gdGhpcy5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAvLyAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcygtNzUuMTY0MTY2NywgMzkuOTUyMjIyMiksXHJcbiAgICAvLyAgIGxhYmVsOiB7XHJcbiAgICAvLyAgICAgdGV4dDogXCJQaGlsYWRlbHBoaWFcIixcclxuICAgIC8vICAgICBmb250OiBcIjI0cHggSGVsdmV0aWNhXCIsXHJcbiAgICAvLyAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuU0tZQkxVRSxcclxuICAgIC8vICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5CTEFDSyxcclxuICAgIC8vICAgICBvdXRsaW5lV2lkdGg6IDIsXHJcbiAgICAvLyAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkUsXHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyB9KTtcclxuICAgIGxldCBsYXN0UGlja1RpbWUgPSAwO1xyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgbGV0IHRpbWVvdXRFdmVudFxyXG4gICAgbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcih0aGlzLnNkay52aWV3ZXIuc2NlbmUuY2FudmFzKS5zZXRJbnB1dEFjdGlvbigoKG1vdmVtZW50KSA9PiB7XHJcbiAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAobm93IC0gbGFzdFBpY2tUaW1lIDwgMTAwKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEV2ZW50KVxyXG4gICAgICAgICAgdGltZW91dEV2ZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHBpY2sobW92ZW1lbnQpXHJcbiAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0RXZlbnQpXHJcbiAgICAgICAgbGFzdFBpY2tUaW1lID0gbm93O1xyXG4gICAgICAgIHBpY2sobW92ZW1lbnQpXHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIH1cclxuICAgIH0pLCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbiAgICBmdW5jdGlvbiBwaWNrKGUpIHtcclxuICAgICAgbGV0IHBpY2tGZWF0dXJlID0gX3RoaXMuc2RrLnZpZXdlci5zY2VuZS5waWNrKGUuZW5kUG9zaXRpb24pO1xyXG4gICAgICBpZiAocGlja0ZlYXR1cmUpIHtcclxuICAgICAgICBsZXQgbGFiZWxUZXh0ID0gJydcclxuICAgICAgICBpZiAocGlja0ZlYXR1cmUucHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLnByaW1pdGl2ZSBpbnN0YW5jZW9mIENlc2l1bS5DbGFzc2lmaWNhdGlvblByaW1pdGl2ZSAmJiBwaWNrRmVhdHVyZS5pZCAmJiAocGlja0ZlYXR1cmUuaWQudHlwZSA9PT0gXCJ5ai1kdGgtZHRoXCIgfHwgcGlja0ZlYXR1cmUuaWQudHlwZSA9PT0gXCJ5ai1kdGgtaGlnaGxpZ2h0XCIpKSB7XHJcbiAgICAgICAgICBsYWJlbFRleHQgPSBwaWNrRmVhdHVyZS5pZC5idWlsZF9pbmZvLm5hbWUgKyAnIC0gJyArIHBpY2tGZWF0dXJlLmlkLnVuaXRfaW5mby5uYW1lICsgJyAtICcgKyBwaWNrRmVhdHVyZS5pZC5yb29tX251bVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwaWNrRmVhdHVyZS5wcmltaXRpdmUgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlIGluc3RhbmNlb2YgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLmlkICYmIHBpY2tGZWF0dXJlLmlkLnR5cGUgPT09IFwieWotZHRoLXVuaXRcIikge1xyXG4gICAgICAgICAgaWYgKHBpY2tGZWF0dXJlLmlkLmJ1aWxkX2luZm8ubmFtZSkge1xyXG4gICAgICAgICAgICBsYWJlbFRleHQgPSBwaWNrRmVhdHVyZS5pZC5idWlsZF9pbmZvLm5hbWUgKyAnIC0gJyArIHBpY2tGZWF0dXJlLmlkLm5hbWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocGlja0ZlYXR1cmUucHJpbWl0aXZlICYmIHBpY2tGZWF0dXJlLnByaW1pdGl2ZSBpbnN0YW5jZW9mIENlc2l1bS5DbGFzc2lmaWNhdGlvblByaW1pdGl2ZSAmJiBwaWNrRmVhdHVyZS5pZCAmJiBwaWNrRmVhdHVyZS5pZC50eXBlID09PSBcInlqLWR0aC1idWlsZFwiKSB7XHJcbiAgICAgICAgICBpZiAocGlja0ZlYXR1cmUuaWQubmFtZSkge1xyXG4gICAgICAgICAgICBsYWJlbFRleHQgPSBwaWNrRmVhdHVyZS5pZC5uYW1lXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHBpY2tGZWF0dXJlLnByaW1pdGl2ZSAmJiBwaWNrRmVhdHVyZS5wcmltaXRpdmUuaWQgJiYgcGlja0ZlYXR1cmUucHJpbWl0aXZlLmlkLmlkICYmIHBpY2tGZWF0dXJlLnByaW1pdGl2ZS5pZC5pZCA9PT0gJ3lqLWR0aC1jb3Zlci1sYWJlbCcpIHtcclxuICAgICAgICAgIGNvdmVyTGFiZWxFbnRpdHkucG9zaXRpb24gPSBfdGhpcy5zZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihlLmVuZFBvc2l0aW9uKVxyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY292ZXJMYWJlbEVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGxhYmVsVGV4dCkge1xyXG4gICAgICAgICAgY292ZXJMYWJlbEVudGl0eS5wb3NpdGlvbiA9IF90aGlzLnNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKGUuZW5kUG9zaXRpb24pXHJcbiAgICAgICAgICBjb3ZlckxhYmVsRW50aXR5LmxhYmVsID0gbmV3IENlc2l1bS5MYWJlbEdyYXBoaWNzKHtcclxuICAgICAgICAgICAgdGV4dDogbGFiZWxUZXh0LFxyXG4gICAgICAgICAgICBmb250OiBcIjIwcHggSGVsdmV0aWNhXCIsXHJcbiAgICAgICAgICAgIHBpeGVsT2Zmc2V0OiB7IHg6IDAsIHk6IC0zMCB9LFxyXG4gICAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZmZmZmYnKSxcclxuICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuQkxBQ0ssXHJcbiAgICAgICAgICAgIG91dGxpbmVXaWR0aDogMSxcclxuICAgICAgICAgICAgc2hvd0JhY2tncm91bmQ6IHRydWUsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwMDAwMCcpLndpdGhBbHBoYSgwLjgpLFxyXG4gICAgICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY292ZXJMYWJlbEVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyrmoLnmja7nlKjmiLfkv6Hmga/mn6Xor6LljZXkvZPljJYqL1xyXG4gIHF1ZXJ5QnlVc2VySW5mbyhkYXRhKSB7XHJcbiAgICB0aGlzLnF1ZXJ5QnlQb2ludChbZGF0YS5wb3NpdGlvbi5sbmcsIGRhdGEucG9zaXRpb24ubGF0XSwgZGF0YS5wb3NpdGlvbi5hbHQsIGRhdGEuaWQpXHJcbiAgfVxyXG5cclxuICAvL+eCueafpeivoiAg54K55Ye75p+l6K+i5piv5p+l6K+i5YiG5bGC55qE5pWw5o2uXHJcbiAgYXN5bmMgcXVlcnlCeVBvaW50KHBvaW50KSB7XHJcbiAgICBsZXQgdXJsID0gXCJcIlxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ob3N0LmVuZHNXaXRoKFwieWplYXJ0aDQuMFwiKSkge1xyXG4gICAgICB1cmwgPSB0aGlzLm9wdGlvbnMuaG9zdCArICcvYXBpL3YxL2R0aC9idWlsZC9xdWVyeV9ieV9wb2ludCdcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB1cmwgPSB0aGlzLm9wdGlvbnMuaG9zdCArICcveWplYXJ0aDQuMC9hcGkvdjEvZHRoL2J1aWxkL3F1ZXJ5X2J5X3BvaW50J1xyXG4gICAgfVxyXG4gICAgdXJsICs9ICc/cG9pbnQ9JyArIEpTT04uc3RyaW5naWZ5KHsgJ2xuZyc6IHBvaW50WzBdLCAnbGF0JzogcG9pbnRbMV0gfSlcclxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdnZXQnLFxyXG4gICAgICAvLyBib2R5OiBKU09OLnN0cmluZ2lmeSh7cG9pbnQ6IHsnbG5nJzogcG9pbnRbMF0sJ2xhdCc6IHBvaW50WzFdfX0pLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBcInRva2VuXCI6IGdldFRva2VuKCksXHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6IFwiQmVhcmVyIFwiICsgZ2V0VG9rZW4oKSxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxyXG4gICAgICBpZiAoZGF0YS5jb2RlID09PSAyMDAgfHwgZGF0YS5jb2RlID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzUXVlcnlCeVBvaW50UmVzdWx0cyhkYXRhLmRhdGEpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICBtZXNzYWdlOiBkYXRhLm1zZyB8fCBkYXRhLm1lc3NhZ2UsXHJcbiAgICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDlpITnkIbmn6Xor6Lnu5PmnpxcclxuICBhc3luYyBwcm9jZXNzUXVlcnlCeVBvaW50UmVzdWx0cyhkYXRhLCBpc2ZseXRvLCBvZmZzZXQgPSB7IGhlYWRpbmc6IDAuMCwgcGl0Y2g6IC05MC4wLCByb2xsOiAwLjAgfSkge1xyXG4gICAgZGF0YS5idWlsZF9pbmZvICYmIHRoaXMuaGFuZGxlUGlja0V2ZW50KGRhdGEpXHJcbiAgICBsZXQgcmFuZ2VcclxuICAgIHRoaXMuY2xlYXJBbGxEdGhQcmltaXRpdmUoKVxyXG4gICAgdGhpcy5jbGVhckFsbFVuaXRQcmltaXRpdmUoKVxyXG4gICAgaWYgKHRoaXMuYWN0aXZlQnVpbGRpbmcpIHtcclxuICAgICAgdGhpcy5jbGVhckJ1aWxkaW5nUHJpbWl0aXZlKHRoaXMuYWN0aXZlQnVpbGRpbmcpXHJcbiAgICAgIHRoaXMuYWN0aXZlQnVpbGRpbmcgPSBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEuYnVpbGRfaW5mbykge1xyXG4gICAgICByYW5nZSA9IEpTT04ucGFyc2UoZGF0YS5idWlsZF9pbmZvLnJhbmdlKVxyXG4gICAgICBpZiAoZGF0YS5kYW5feXVhbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmRhbl95dWFuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5kYW5feXVhbltpXS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRHRoUHJpbWl0aXZlKGRhdGEuZGFuX3l1YW5baV0uY2hpbGRyZW4sIGRhdGEuYnVpbGRfaW5mbywgZGF0YS5kYW5feXVhbltpXSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFVuaXRQcmltaXRpdmUoW2RhdGEuZGFuX3l1YW5baV1dLCBkYXRhLmJ1aWxkX2luZm8sIGRhdGEuZGFuX3l1YW5baV0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlQnVpbGRpbmcgPSBkYXRhLmJ1aWxkX2luZm8uSUQgfHwgZGF0YS5idWlsZF9pbmZvLmlkXHJcbiAgICAgICAgdGhpcy5hZGRCdWlsZGluZ1ByaW1pdGl2ZShbZGF0YS5idWlsZF9pbmZvXSlcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNmbHl0bykge1xyXG4gICAgICAgIGlmIChkYXRhLmluZm8gJiYgZGF0YS5pbmZvLmRhbl95dWFuKSB7XHJcbiAgICAgICAgICByYW5nZSA9IEpTT04ucGFyc2UoZGF0YS5pbmZvLmRhbl95dWFuLnJhbmdlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0YS5pbmZvICYmIGRhdGEuaW5mby5odSkge1xyXG4gICAgICAgICAgcmFuZ2UgPSBKU09OLnBhcnNlKGRhdGEuaW5mby5odS5yYW5nZSlcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmFuZ2VbaV0uYWx0ID0gZGF0YS5pbmZvLmh1LmJvdHRvbVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByaW1pdGl2ZXMuZHRoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJpbWl0aXZlcy5kdGhbaV0ucmVhZHlQcm9taXNlXHJcbiAgICAgICAgICAgIGxldCBwcmltaXRpdmVzRGF0YSA9IHRoaXMucHJpbWl0aXZlcy5kdGhbaV0uX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uaWRcclxuICAgICAgICAgICAgaWYgKHByaW1pdGl2ZXNEYXRhLklEID09PSBkYXRhLmluZm8uaHUuSUQgJiYgcHJpbWl0aXZlc0RhdGEucm9vbV9udW0gPT09IGRhdGEuaW5mby5odS5yb29tX251bSkge1xyXG4gICAgICAgICAgICAgIGxldCBwaWNrRmVhdHVyZSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiB7IC4uLmRhdGEuaW5mby5odSwgYnVpbGRfaW5mbzogeyAuLi5kYXRhLmJ1aWxkX2luZm8gfSwgdW5pdF9pbmZvOiBkYXRhLmluZm8uZGFuX3l1YW4gfSxcclxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZTogdGhpcy5wcmltaXRpdmVzLmR0aFtpXVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmdldElEQnlwaWNrRmVhdHVyZShwaWNrRmVhdHVyZSlcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmx5VG8ocmFuZ2UsIG9mZnNldClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5re75Yqg5oi/5bGLUHJpbWl0aXZlXHJcbiAgYXN5bmMgYWRkQnVpbGRpbmdQcmltaXRpdmUoYXJyYXkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgZXh0cnVkZWRIZWlnaHQgPSAwXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBKU09OLnBhcnNlKGFycmF5W2ldLnJhbmdlKVxyXG4gICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgIGlmIChleHRydWRlZEhlaWdodCA8IHBvc2l0aW9uc1ttXS5hbHQpIHtcclxuICAgICAgICAgIGV4dHJ1ZGVkSGVpZ2h0ID0gcG9zaXRpb25zW21dLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdCwgMClcclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9seWdvbkdlb21ldHJ5ID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICAvLyBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSwgLy/kvb/nlKh65Z2Q5qCHIOWQpuWImemrmOW6puS7jjDlvIDlp4tcclxuICAgICAgICBleHRydWRlZEhlaWdodDogMTAwMDAwMDAwLCAvL+aLieS8uOmrmOW6plxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcmltaXRpdmVzLmJ1aWxkaW5nLnB1c2godGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2xhc3NpZmljYXRpb25QcmltaXRpdmUoe1xyXG4gICAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3lqLWR0aC1idWlsZCcsXHJcbiAgICAgICAgICAgICAgLi4uYXJyYXlbaV0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdlb21ldHJ5OiBDZXNpdW0uUG9seWdvbkdlb21ldHJ5LmNyZWF0ZUdlb21ldHJ5KHBvbHlnb25HZW9tZXRyeSksXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoXHJcbiAgICAgICAgICAgICAgICBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCdyZ2IoMjU1LCAyMzUsIDU5LCAwLjQpJylcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHNob3c6IG5ldyBDZXNpdW0uU2hvd0dlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUodHJ1ZSksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25UeXBlOiBDZXNpdW0uQ2xhc3NpZmljYXRpb25UeXBlLkNFU0lVTV8zRF9USUxFLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDmoLnmja5pZOWIoOmZpOaIv+Wxi1ByaW1pdGl2ZVxyXG4gIGNsZWFyQnVpbGRpbmdQcmltaXRpdmUoaWQpIHtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKGlkID09PSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmdbaV0uX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uaWQuSUQgfHwgaWQgPT09IHRoaXMucHJpbWl0aXZlcy5idWlsZGluZ1tpXS5fcHJpbWl0aXZlT3B0aW9ucy5nZW9tZXRyeUluc3RhbmNlc1swXS5pZC5pZCkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmdbaV0pXHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmVzLmJ1aWxkaW5nLnNwbGljZShpLCAxKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLy8g5Yig6Zmk5YWo6YOo5oi/5bGLUHJpbWl0aXZlXHJcbiAgY2xlYXJBbGxCdWlsZGluZ1ByaW1pdGl2ZSgpIHtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMucHJpbWl0aXZlcy5idWlsZGluZ1tpXSlcclxuICAgIH1cclxuICAgIHRoaXMucHJpbWl0aXZlcy5idWlsZGluZyA9IFtdXHJcbiAgfVxyXG5cclxuICAvLyDmt7vliqDljZXlhYNQcmltaXRpdmVcclxuICBhc3luYyBhZGRVbml0UHJpbWl0aXZlKGFycmF5LCBidWlsZF9pbmZvLCB1bml0X2luZm8pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBsZXQgZXh0cnVkZWRIZWlnaHQgPSAwXHJcbiAgICAgIGxldCBwb3NpdGlvbnMgPSBKU09OLnBhcnNlKGFycmF5W2ldLnJhbmdlKVxyXG4gICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHBvc2l0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgIGlmIChleHRydWRlZEhlaWdodCA8IHBvc2l0aW9uc1ttXS5hbHQpIHtcclxuICAgICAgICAgIGV4dHJ1ZGVkSGVpZ2h0ID0gcG9zaXRpb25zW21dLmFsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdCwgMClcclxuICAgICAgfVxyXG4gICAgICBsZXQgcG9seWdvbkdlb21ldHJ5ID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICAvLyBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSwgLy/kvb/nlKh65Z2Q5qCHIOWQpuWImemrmOW6puS7jjDlvIDlp4tcclxuICAgICAgICBleHRydWRlZEhlaWdodDogMTAwMDAwMDAwLCAvL+aLieS8uOmrmOW6plxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcmltaXRpdmVzLnVuaXQucHVzaCh0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgICAgbmV3IENlc2l1bS5DbGFzc2lmaWNhdGlvblByaW1pdGl2ZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICAgICAgaWQ6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAneWotZHRoLXVuaXQnLFxyXG4gICAgICAgICAgICAgIC4uLmFycmF5W2ldLFxyXG4gICAgICAgICAgICAgIGJ1aWxkX2luZm86IHsgLi4uYnVpbGRfaW5mbyB9LFxyXG4gICAgICAgICAgICAgIHVuaXRfaW5mbzogeyAuLi51bml0X2luZm8gfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZW9tZXRyeTogQ2VzaXVtLlBvbHlnb25HZW9tZXRyeS5jcmVhdGVHZW9tZXRyeShwb2x5Z29uR2VvbWV0cnkpLFxyXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKFxyXG4gICAgICAgICAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygncmdiKDI1NSwgMjM1LCA1OSwgMC40KScpXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5DRVNJVU1fM0RfVElMRSxcclxuICAgICAgICB9KVxyXG4gICAgICApKVxyXG4gICAgICB0aGlzLnByaW1pdGl2ZXMudW5pdC5wdXNoKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgICBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlKHtcclxuICAgICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgICAgICBnZW9tZXRyeTogbmV3IENlc2l1bS5Hcm91bmRQb2x5bGluZUdlb21ldHJ5KHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAyLjBcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZmYwYScpLndpdGhBbHBoYSgwLjgpKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBhcHBlYXJhbmNlOiBuZXcgQ2VzaXVtLlBvbHlsaW5lQ29sb3JBcHBlYXJhbmNlKClcclxuICAgICAgICB9KVxyXG4gICAgICApKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5qC55o2uaWTliKDpmaTljZXlhYNQcmltaXRpdmVcclxuICBjbGVhclVuaXRQcmltaXRpdmUoaWQpIHtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmcubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKGlkID09PSB0aGlzLnByaW1pdGl2ZXMuYnVpbGRpbmdbaV0uX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uaWQuSUQgfHwgaWQgPT09IHRoaXMucHJpbWl0aXZlcy5idWlsZGluZ1tpXS5fcHJpbWl0aXZlT3B0aW9ucy5nZW9tZXRyeUluc3RhbmNlc1swXS5pZC5pZCkge1xyXG4gICAgICAgIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLnByaW1pdGl2ZXMudW5pdFtpXSlcclxuICAgICAgICB0aGlzLnByaW1pdGl2ZXMudW5pdC5zcGxpY2UoaSwgMSlcclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDliKDpmaTlhajpg6jljZXlhYNQcmltaXRpdmVcclxuICBjbGVhckFsbFVuaXRQcmltaXRpdmUoKSB7XHJcbiAgICBmb3IgKGxldCBpID0gdGhpcy5wcmltaXRpdmVzLnVuaXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMucHJpbWl0aXZlcy51bml0W2ldKVxyXG4gICAgfVxyXG4gICAgdGhpcy5wcmltaXRpdmVzLnVuaXQgPSBbXVxyXG4gIH1cclxuXHJcbiAgLy8g5re75Yqg5Y2V5L2T5YyWUHJpbWl0aXZlXHJcbiAgYWRkRHRoUHJpbWl0aXZlKGFycmF5LCBidWlsZF9pbmZvLCB1bml0X2luZm8pIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IEpTT04ucGFyc2UoYXJyYXlbaV0ucmFuZ2UpXHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdCwgYXJyYXlbaV0uYm90dG9tICsgMC4zKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBwb2x5Z29uR2VvbWV0cnkgPSBuZXcgQ2VzaXVtLlBvbHlnb25HZW9tZXRyeSh7XHJcbiAgICAgICAgcG9seWdvbkhpZXJhcmNoeTogbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFxyXG4gICAgICAgICAgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgICAgICApLFxyXG4gICAgICAgIHBlclBvc2l0aW9uSGVpZ2h0OiB0cnVlLCAvL+S9v+eUqHrlnZDmoIcg5ZCm5YiZ6auY5bqm5LuOMOW8gOWni1xyXG4gICAgICAgIGV4dHJ1ZGVkSGVpZ2h0OiBhcnJheVtpXS5oZWlnaHQgKyBhcnJheVtpXS5ib3R0b20sIC8v5ouJ5Ly46auY5bqmXHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgcG9seWdvbkdlb21ldHJ5Qm9yZGVyID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkoe1xyXG4gICAgICAgIHBvbHlnb25IaWVyYXJjaHk6IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSwgLy/kvb/nlKh65Z2Q5qCHIOWQpuWImemrmOW6puS7jjDlvIDlp4tcclxuICAgICAgICBleHRydWRlZEhlaWdodDogYXJyYXlbaV0uYm90dG9tLCAvL+aLieS8uOmrmOW6plxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcmltaXRpdmVzLmR0aC5wdXNoKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgICBuZXcgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlKHtcclxuICAgICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgICAgICBpZDoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICd5ai1kdGgtZHRoJyxcclxuICAgICAgICAgICAgICAuLi5hcnJheVtpXSxcclxuICAgICAgICAgICAgICBidWlsZF9pbmZvOiB7IC4uLmJ1aWxkX2luZm8gfSxcclxuICAgICAgICAgICAgICB1bml0X2luZm86IHsgLi4udW5pdF9pbmZvIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2VvbWV0cnk6IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkuY3JlYXRlR2VvbWV0cnkocG9seWdvbkdlb21ldHJ5KSxcclxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgICAgICAgIENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJ3JnYigwLCA2NCwgMjU1LCAwLjQpJylcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHNob3c6IG5ldyBDZXNpdW0uU2hvd0dlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUodHJ1ZSksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25UeXBlOiBDZXNpdW0uQ2xhc3NpZmljYXRpb25UeXBlLkNFU0lVTV8zRF9USUxFLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICkpO1xyXG4gICAgICB0aGlzLnByaW1pdGl2ZXMuZHRoLnB1c2godGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2xhc3NpZmljYXRpb25QcmltaXRpdmUoe1xyXG4gICAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3lqLWR0aC1kdGgtYm9yZGVyJyxcclxuICAgICAgICAgICAgICAuLi5hcnJheVtpXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2VvbWV0cnk6IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkuY3JlYXRlR2VvbWV0cnkocG9seWdvbkdlb21ldHJ5Qm9yZGVyKSxcclxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgICAgICAgIENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJ3JnYigwLCAwLCAwLCAxKScpXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5DRVNJVU1fM0RfVElMRSxcclxuICAgICAgICB9KVxyXG4gICAgICApKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8g5qC55o2uaWTliKDpmaTljZXkvZPljJZQcmltaXRpdmVcclxuICBjbGVhckR0aFByaW1pdGl2ZShpZCkge1xyXG4gICAgZm9yIChsZXQgaSA9IHRoaXMucHJpbWl0aXZlcy5kdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgaWYgKGlkID09PSB0aGlzLnByaW1pdGl2ZXMuZHRoW2ldLl9wcmltaXRpdmVPcHRpb25zLmdlb21ldHJ5SW5zdGFuY2VzWzBdLmlkLklEIHx8IGlkID09PSB0aGlzLnByaW1pdGl2ZXMuZHRoW2ldLl9wcmltaXRpdmVPcHRpb25zLmdlb21ldHJ5SW5zdGFuY2VzWzBdLmlkLmlkKSB7XHJcbiAgICAgICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMucHJpbWl0aXZlcy5kdGhbaV0pXHJcbiAgICAgICAgdGhpcy5wcmltaXRpdmVzLmR0aC5zcGxpY2UoaSwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g5Yig6Zmk5YWo6YOo5Y2V5L2T5YyWUHJpbWl0aXZlXHJcbiAgY2xlYXJBbGxEdGhQcmltaXRpdmUoKSB7XHJcbiAgICB0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSAmJiB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5oaWdobGlnaHRQcmltaXRpdmUpXHJcbiAgICBmb3IgKGxldCBpID0gdGhpcy5wcmltaXRpdmVzLmR0aC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5wcmltaXRpdmVzLmR0aFtpXSlcclxuICAgIH1cclxuICAgIHRoaXMucHJpbWl0aXZlcy5kdGggPSBbXVxyXG4gIH1cclxuXHJcbiAgZ2V0SURCeXBpY2tGZWF0dXJlKHBpY2tGZWF0dXJlKSB7XHJcbiAgICAvL+aBouWkjeS4iuS4gOS4qui0tOWvueixoemdouaYvuekulxyXG4gICAgaWYgKHRoaXMuY2xpY2tIaWdobGlnaHRQcmltaXRpdmUpIHtcclxuICAgICAgdGhpcy5jbGlja0hpZ2hsaWdodFByaW1pdGl2ZS5zaG93ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlICYmIHRoaXMuc2RrLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmhpZ2hsaWdodFByaW1pdGl2ZSlcclxuICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlID0gdGhpcy5zZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkNsYXNzaWZpY2F0aW9uUHJpbWl0aXZlKHtcclxuICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICAgIGlkOiB7XHJcbiAgICAgICAgICAgIC4uLnBpY2tGZWF0dXJlLmlkLFxyXG4gICAgICAgICAgICB0eXBlOiAneWotZHRoLWhpZ2hsaWdodCcsXHJcblxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGdlb21ldHJ5OiBwaWNrRmVhdHVyZS5wcmltaXRpdmUuX3ByaW1pdGl2ZU9wdGlvbnMuZ2VvbWV0cnlJbnN0YW5jZXNbMF0uZ2VvbWV0cnksXHJcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmY5ODAwJykud2l0aEFscGhhKDAuOCkpLFxyXG4gICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5DRVNJVU1fM0RfVElMRSxcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHRoaXMuaGlnaGxpZ2h0UHJpbWl0aXZlLnJlYWR5UHJvbWlzZS50aGVuKCgpID0+IHtcclxuICAgICAgLy/orr7nva7lvZPliY3ngrnlh7vnmoTotLTlr7nosaHpnaLkuI3mmL7npLpcclxuICAgICAgcGlja0ZlYXR1cmUucHJpbWl0aXZlLnNob3cgPSBmYWxzZTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmNsaWNrSGlnaGxpZ2h0UHJpbWl0aXZlID0gcGlja0ZlYXR1cmUucHJpbWl0aXZlO1xyXG5cclxuICAgIGxldCByYW5nZSA9IHBpY2tGZWF0dXJlLmlkLnJhbmdlXHJcbiAgICBpZiAodHlwZW9mIHBpY2tGZWF0dXJlLmlkLnJhbmdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByYW5nZSA9IEpTT04ucGFyc2UocGlja0ZlYXR1cmUuaWQucmFuZ2UpXHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEhpbGlnaHRBcmVhKHJhbmdlKVxyXG4gICAgdGhpcy5oYW5kbGVQaWNrRXZlbnQocGlja0ZlYXR1cmUuaWQpXHJcbiAgfVxyXG5cclxuICAvL+WkhOeQhueCueWHu+S6i+S7tlxyXG4gIGhhbmRsZVBpY2tFdmVudChpZCkge1xyXG4gICAgdGhpcy5QaWNrQnVpbGRpbmdFdmVudC5yYWlzZUV2ZW50KGlkKTsgLy/op6blj5HpgInkuK3kuovku7Yg6YCa55+l55WM6Z2i5pu05pawXHJcbiAgfVxyXG5cclxuICBnZXRIaWxpZ2h0QXJlYShwb2ludHMsIHJhZGl1cyA9IDEpIHtcclxuICAgIGxldCBhcnIgPSBbXVxyXG4gICAgcG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XHJcbiAgICAgIGFyci5wdXNoKFsocG9pbnQubG5nKSwgKHBvaW50LmxhdCldKVxyXG4gICAgfSlcclxuICAgIGFyci5wdXNoKGFyclswXSlcclxuICAgIHZhciBwb2x5ID0gdHVyZi5wb2x5Z29uKFthcnJdKVxyXG4gICAgdmFyIGJ1ZmZlcmVkID0gdHVyZi5idWZmZXIocG9seSwgTnVtYmVyKHJhZGl1cykgLyAxMDAwKVxyXG4gICAgcmV0dXJuIGJ1ZmZlcmVkLmdlb21ldHJ5LmNvb3JkaW5hdGVzXHJcbiAgfVxyXG5cclxuICBhc3luYyBmbHlUbyhwb3NpdGlvbnMsIG9mZnNldCA9IHsgaGVhZGluZzogMC4wLCBwaXRjaDogLTkwLjAsIHJvbGw6IDAuMCB9KSB7XHJcbiAgICBsZXQgdG9vbHMgPSBuZXcgWUouVG9vbHModGhpcy5zZGspXHJcbiAgICBsZXQgaGVpZ2h0ID0gMFxyXG4gICAgbGV0IHBvc2l0aW9uQXJyYXkgPSBbXVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHBvc2l0aW9uc1tpXS5hbHQpIHtcclxuICAgICAgICBoZWlnaHQgPSBwb3NpdGlvbnNbaV0uYWx0XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaGVpZ2h0ID0gYXdhaXQgdG9vbHMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbnNbaV0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBoZWlnaHQpXHJcbiAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgfVxyXG4gICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gYXdhaXQgQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgdGhpcy5zZGsudmlld2VyLmNhbWVyYS5mbHlUb0JvdW5kaW5nU3BoZXJlKEJvdW5kaW5nU3BoZXJlLCB7XHJcbiAgICAgIG9mZnNldDoge1xyXG4gICAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvUmFkaWFucyhvZmZzZXQuaGVhZGluZyB8fCAwKSxcclxuICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKChvZmZzZXQucGl0Y2ggfHwgb2Zmc2V0LnBpdGNoID09PSAwKSA/IG9mZnNldC5waXRjaCA6IC05MCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKG9mZnNldC5yb2xsIHx8IDApXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMuaXNBY3RpdmF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlKCkge1xyXG4gICAgdGhpcy5pc0FjdGl2YXRlID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEVEgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFLQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBUkE7QUFBQTtBQVNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUEvQkE7QUFBQTtBQUFBO0FBQUE7QUFpQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBYUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQW5EQTtBQUFBO0FBQUE7QUFBQTtBQXFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBdUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXJEQTtBQUFBO0FBQUE7QUFBQTtBQXVEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/DTH/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/ExportKml/index.js":
-/*!***************************************!*\
- !*** ./src/Global/ExportKml/index.js ***!
- \***************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Obj_Base_BillboardObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Obj/Base/BillboardObject */ \"./src/Obj/Base/BillboardObject/index.js\");\n/* harmony import */ var _Obj_Base_PolygonObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Obj/Base/PolygonObject */ \"./src/Obj/Base/PolygonObject/index.js\");\n/* harmony import */ var _Obj_Base_PolylineObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Obj/Base/PolylineObject */ \"./src/Obj/Base/PolylineObject/index.js\");\n/* harmony import */ var _Obj_Base_CircleDiffuse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Obj/Base/CircleDiffuse */ \"./src/Obj/Base/CircleDiffuse/index.js\");\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-09-11 16:41\r\n * @description:index\r\n * @update: 2023-09-11 16:41\r\n */\n\n\n\n\nfunction exportKml() {\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var entities = new Cesium.EntityCollection();\n list.forEach(function (entity) {\n if (entity instanceof _Obj_Base_BillboardObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || entity instanceof _Obj_Base_PolygonObject__WEBPACK_IMPORTED_MODULE_1__[\"default\"] || entity instanceof _Obj_Base_CircleDiffuse__WEBPACK_IMPORTED_MODULE_3__[\"default\"] || entity instanceof _Obj_Base_PolylineObject__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) {\n entities.add(entity.entity);\n }\n });\n if (entities.values.length) {\n var promise = Cesium.exportKml({\n entities: entities\n });\n promise.then(function (e) {\n // Cesium.exportKml(e.kml,)\n funDownload(e.kml, new Date().getTime() + \".kml\");\n });\n } else {\n console.error(\"允许导出为kml的对象为空\");\n }\n}\nfunction funDownload(content, filename) {\n var eleLink = document.createElement(\"a\");\n eleLink.download = filename;\n eleLink.style.display = \"none\";\n // 字符内容转变成blob地址\n var blob = new Blob([content]);\n eleLink.href = URL.createObjectURL(blob);\n // 触发点击\n document.body.appendChild(eleLink);\n eleLink.click();\n // 然后移除\n document.body.removeChild(eleLink);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (exportKml);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0V4cG9ydEttbC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvRXhwb3J0S21sL2luZGV4LmpzPzU3ZjAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIzLTA5LTExIDE2OjQxXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjMtMDktMTEgMTY6NDFcclxuICovXHJcbmltcG9ydCBCaWxsYm9hcmRPYmplY3QgZnJvbSBcIi4uLy4uL09iai9CYXNlL0JpbGxib2FyZE9iamVjdFwiO1xyXG5pbXBvcnQgUG9seWdvbk9iamVjdCBmcm9tIFwiLi4vLi4vT2JqL0Jhc2UvUG9seWdvbk9iamVjdFwiO1xyXG5pbXBvcnQgUG9seWxpbmVPYmplY3QgZnJvbSBcIi4uLy4uL09iai9CYXNlL1BvbHlsaW5lT2JqZWN0XCI7XHJcbmltcG9ydCBDaXJjbGUgZnJvbSBcIi4uLy4uL09iai9CYXNlL0NpcmNsZURpZmZ1c2VcIjtcclxuXHJcbmZ1bmN0aW9uIGV4cG9ydEttbChsaXN0ID0gW10pIHtcclxuXHJcbiAgbGV0IGVudGl0aWVzID0gbmV3IENlc2l1bS5FbnRpdHlDb2xsZWN0aW9uKCk7XHJcbiAgbGlzdC5mb3JFYWNoKGVudGl0eSA9PiB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGVudGl0eSBpbnN0YW5jZW9mIEJpbGxib2FyZE9iamVjdCB8fFxyXG4gICAgICBlbnRpdHkgaW5zdGFuY2VvZiBQb2x5Z29uT2JqZWN0IHx8XHJcbiAgICAgIGVudGl0eSBpbnN0YW5jZW9mIENpcmNsZSB8fFxyXG4gICAgICBlbnRpdHkgaW5zdGFuY2VvZiBQb2x5bGluZU9iamVjdFxyXG4gICAgKSB7XHJcbiAgICAgIGVudGl0aWVzLmFkZChlbnRpdHkuZW50aXR5KVxyXG4gICAgfVxyXG4gIH0pXHJcbiAgaWYgKGVudGl0aWVzLnZhbHVlcy5sZW5ndGgpIHtcclxuICAgIGxldCBwcm9taXNlID0gQ2VzaXVtLmV4cG9ydEttbCh7ZW50aXRpZXN9KVxyXG4gICAgcHJvbWlzZS50aGVuKGUgPT4ge1xyXG4gICAgICAvLyBDZXNpdW0uZXhwb3J0S21sKGUua21sLClcclxuICAgICAgZnVuRG93bmxvYWQoZS5rbWwsIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgXCIua21sXCIpXHJcbiAgICB9KVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFwi5YWB6K645a+85Ye65Li6a21s55qE5a+56LGh5Li656m6XCIpXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBmdW5Eb3dubG9hZChjb250ZW50LCBmaWxlbmFtZSkge1xyXG4gIGxldCBlbGVMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgZWxlTGluay5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gIGVsZUxpbmsuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIC8vIOWtl+espuWGheWuuei9rOWPmOaIkGJsb2LlnLDlnYBcclxuICBsZXQgYmxvYiA9IG5ldyBCbG9iKFtjb250ZW50XSk7XHJcbiAgZWxlTGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAvLyDop6blj5Hngrnlh7tcclxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZUxpbmspO1xyXG4gIGVsZUxpbmsuY2xpY2soKTtcclxuICAvLyDnhLblkI7np7vpmaRcclxuICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZUxpbmspO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZXhwb3J0S21sXHJcblxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/ExportKml/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/FlyRoam/_element.js":
-/*!****************************************!*\
- !*** ./src/Global/FlyRoam/_element.js ***!
- \****************************************/
-/*! exports provided: html */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n \\n
\\n
\\n \\u540D\\u79F0\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\u662F\\u5426\\u5FAA\\u73AF\\u64AD\\u653E\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\u5E8F\\u53F7
\\n
\\u65F6\\u957F(s)
\\n
\\u64CD\\u4F5C
\\n
\\n
\\n
\\n
\\n
\\n
\\u6682\\u65E0\\u6570\\u636E
\\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0ZseVJvYW0vX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0ZseVJvYW0vX2VsZW1lbnQuanM/OGY3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7lkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5hbWVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJpc1RvdGFsVGltZVwiIHN0eWxlPVwid2lkdGg6IDE2cHg7IGxpbmUtaGVpZ2h0OiAxNXB4OyBoZWlnaHQ6IDE1cHg7IGN1cnNvcjogcG9pbnRlcjsgd2lkdGg6IGF1dG87IG1hcmdpbi1yaWdodDogNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuiuvue9ruaAu+aXtumVvzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHRvdGFsLXRpbWVcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5OTk5Ljk5XCIgc3RlcD1cIjAuMDFcIiBuYW1lPVwidG90YWxUaW1lXCIgdmFsdWU9XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0XCIgc3R5bGU9XCJ0b3A6IDZweDtcIj7np5Iocyk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJyZXBlYXRcIiBzdHlsZT1cIndpZHRoOiAxNnB4OyBsaW5lLWhlaWdodDogMTVweDsgaGVpZ2h0OiAxNXB4OyBjdXJzb3I6IHBvaW50ZXI7IHdpZHRoOiBhdXRvOyBtYXJnaW4tcmlnaHQ6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj7mmK/lkKblvqrnjq/mkq3mlL48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWRkLXBvaW50XCI+PHN2ZyBjbGFzcz1cImljb24tYWRkXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tYWRkXCI+PC91c2U+PC9zdmc+5aKe5Yqg6KeG54K5PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibW9kaWZ5LXBvaW50XCI+PHN2ZyBjbGFzcz1cImljb24tZWRpdFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWVkaXRcIj48L3VzZT48L3N2Zz7osIPmlbTop4bngrk8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhZnJlc2hQbGF5XCI+PHN2ZyBjbGFzcz1cImljb24tcGxheVwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXBsYXlcIj48L3VzZT48L3N2Zz7mkq3mlL48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjZWFzZVwiPjxzdmcgY2xhc3M9XCJpY29uLXBhdXNlXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tcGF1c2VcIj48L3VzZT48L3N2Zz7nu5PmnZ88L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7luo/lj7c8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7ml7bplb8ocyk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhcIj7mk43kvZw8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cD7mmoLml6DmlbDmja48L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQStEQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/FlyRoam/_element.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/FlyRoam/index.js":
-/*!*************************************!*\
- !*** ./src/Global/FlyRoam/index.js ***!
- \*************************************/
-/*! exports provided: open, close, flyTo, setRepeat, cease */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"open\", function() { return open; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"close\", function() { return close; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flyTo\", function() { return flyTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setRepeat\", function() { return setRepeat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cease\", function() { return cease; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_element */ \"./src/Global/FlyRoam/_element.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n\n\n/**\r\n * @description 飞行漫游\r\n */\n\n\n\n\nvar _DialogObject = null;\nvar clickHandler;\nvar repeat = 0;\nvar currentRepeat = 0;\nvar open = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(sdk) {\n var options,\n _Dialog,\n func,\n name,\n _contentElm,\n _contentElm2,\n viewer,\n tools,\n active,\n contentElm,\n all_elm,\n tableBody,\n tableEmpty,\n handler,\n i,\n points,\n nameElm,\n defaultTimeDom,\n addListBtn,\n endBtn,\n flyBtn,\n addBtn,\n totalTimeElm,\n isTotalTimeElm,\n repeatElm,\n addTrElm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n addTrElm = function _addTrElm(data) {\n var trList = tableBody.getElementsByClassName('tr');\n if (trList.length > 0) {\n trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = undefined;\n }\n var tr_active = tableBody.getElementsByClassName('tr active')[0];\n tr_active && (tr_active.className = 'tr');\n var tr = document.createElement('div');\n tr.className = 'tr active';\n tr.innerHTML = \"\\n \\u89C6\\u70B9\".concat(i + 1, \"
\\n \\n \\n
\\n \\n \\n \\n \\n
\\n \");\n tr.addEventListener('click', function (v) {\n if (v.target.parentNode === tr) {\n var _tr_active = tableBody.getElementsByClassName('tr active')[0];\n _tr_active && (_tr_active.className = 'tr');\n tr.className = 'tr active';\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === tr) {\n active = m + 1;\n break;\n }\n }\n }\n });\n tr.addEventListener('dblclick', function (v) {\n if (v.target.parentNode === tr) {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === tr) {\n viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(points[m].position.lng, points[m].position.lat, points[m].position.alt),\n orientation: points[m].orientation,\n duration: 1\n });\n break;\n }\n }\n }\n });\n var e_play = tr.getElementsByClassName('play')[0];\n var e_delete = tr.getElementsByClassName('delete')[0];\n var e_time = tr.querySelector(\"input[name='time']\");\n var modifyBtn = tr.getElementsByClassName('modify-point')[0];\n modifyBtn.addEventListener('click', function () {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_delete.parentNode.parentNode.parentNode) {\n var position = tools.cartesian3Towgs84(viewer.camera.position, viewer);\n points[m].position = position;\n points[m].orientation = {\n heading: viewer.camera.heading,\n pitch: viewer.camera.pitch,\n roll: viewer.camera.roll\n };\n tools.message({\n text: '更新视角成功'\n });\n }\n }\n });\n e_play.addEventListener('click', function () {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_play.parentNode.parentNode.parentNode) {\n flyTo(sdk, points, m);\n }\n }\n });\n e_delete.addEventListener(\"click\", function (v) {\n for (var m = 0; m < trList.length; m++) {\n if (trList[m] === e_delete.parentNode.parentNode.parentNode) {\n points.splice(m, 1);\n points[points.length - 1] && (points[points.length - 1].duration = 0);\n tableBody.removeChild(tr);\n if (active > m + 1) {\n active--;\n trList[active - 1].className = 'tr active';\n } else if (active == m + 1) {\n if (trList.length == m) {\n active -= 1;\n }\n if (trList.length != 0) {\n trList[active - 1].className = 'tr active';\n }\n }\n // else if(active == m) {\n // console.log(trList.length-1, active)\n // if (trList.length == active-1) {\n // trList[active-2].className = 'tr active'\n // }\n // else {\n // trList[active-1].className = 'tr active'\n // }\n // }\n if (trList.length > 0) {\n var lastElm = trList[trList.length - 1].querySelector(\"input[name='time']\");\n lastElm.disabled = 'disabled';\n lastElm.value = 0;\n }\n break;\n }\n }\n // points.splice(i, 1)\n // tableBody.removeChild(tr)\n // if (trList.length > 0) {\n // trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = 'disabled'\n // }\n\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n e_time.addEventListener('input', function (v) {\n isTotalTimeElm.checked = false;\n data.duration = Number(e_time.value);\n if (data.duration < 0) {\n data.duration = 0;\n }\n });\n e_time.addEventListener('blur', function () {\n e_time.value = Number(Number(e_time.value).toFixed(2));\n if (e_time.value < 0) {\n e_time.value = 0;\n }\n });\n tableBody.insertBefore(tr, trList[active]);\n active++;\n trList[trList.length - 1].querySelector(\"input[name='time']\").disabled = 'disabled';\n };\n options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};\n _Dialog = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};\n func = _args.length > 3 ? _args[3] : undefined;\n name = options.name || '漫游路径';\n options.points || (options.points = []);\n if (options.repeat) {\n repeat = Number(options.repeat);\n }\n if (options.defaultTime) {\n _contentElm = document.getElementsByClassName('fly-roam')[0];\n _contentElm.querySelector(\"input[name='defaultTime']\").value = options.defaultTime;\n }\n if (options.totalTime) {\n _contentElm2 = document.getElementsByClassName('fly-roam')[0];\n _contentElm2.querySelector(\"input[name='totalTime']\").value = options.totalTime;\n }\n viewer = sdk.viewer;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"](sdk);\n active = 0; // if (_DialogObject && _DialogObject.close) {\n // _DialogObject.close()\n // _DialogObject = null\n // }\n // _DialogObject = await new Dialog(viewer._container, {\n // title: '飞行漫游', left: '180px', top: '100px',\n // closeCallBack: () => {\n // cease({ viewer })\n // },\n // })\n // await _DialogObject.init()\n // let contentElm = document.createElement('div');\n // contentElm.className = 'fly-roam'\n // contentElm.innerHTML = html()\n // _DialogObject.contentAppChild(contentElm)\n contentElm = document.getElementsByClassName('fly-roam')[0];\n all_elm = contentElm.getElementsByTagName(\"*\"); // EventBinding(all_elm)\n tableBody = contentElm.getElementsByClassName('table-body')[0];\n tableEmpty = contentElm.getElementsByClassName('table-empty')[0];\n handler = {\n set: function set(target, prop, value) {\n target[prop] = value;\n if (target.length > 0) {\n tableEmpty.style.display = 'none';\n } else {\n tableEmpty.style.display = 'flex';\n }\n return true;\n }\n };\n i = 0;\n points = new Proxy([], handler);\n for (i = 0; i < options.points.length; i++) {\n points.push(options.points[i]);\n addTrElm(options.points[i]);\n }\n\n // let nameImputBoxElm = contentElm.getElementsByClassName('input-box')[0]\n // check(nameImputBoxElm, { validator: 'notEmpty', message: '名称不能为空!', trigger: 'input' })\n nameElm = contentElm.querySelector(\"input[name='name']\");\n nameElm.value = name;\n nameElm.addEventListener('input', function () {\n name = nameElm.value;\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n defaultTimeDom = contentElm.querySelector(\"input[name='defaultTime']\");\n nameElm.addEventListener('input', function () {\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n\n // let addListBtn = document.createElement('button');\n addListBtn = document.getElementsByClassName('saveRoam')[0]; // addListBtn.innerHTML = '保存'\n addListBtn.addEventListener('click', function () {\n if (!name) {\n name = '漫游路径';\n nameElm.value = name;\n }\n var newPoints = [];\n points.map(function (item) {\n newPoints.push(item);\n });\n func({\n name: name,\n points: newPoints,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n // _Dialog.clickSavePath && _Dialog.clickSavePath(\n // {\n // name: name,\n // points: newPoints,\n // repeat: repeat + ''\n // }\n // )\n });\n // _DialogObject.footAppChild(addListBtn)\n endBtn = contentElm.getElementsByClassName('cease')[0];\n endBtn.addEventListener('click', function () {\n viewer.camera.cancelFlight();\n });\n flyBtn = contentElm.getElementsByClassName('afreshPlay')[0];\n flyBtn.addEventListener('click', function () {\n if (points.length > 0) {\n flyTo(sdk, points, 0);\n }\n });\n addBtn = contentElm.getElementsByClassName('add-point')[0];\n addBtn.addEventListener('click', function () {\n var position = tools.cartesian3Towgs84(viewer.camera.position, viewer);\n var defaultTime = Number(contentElm.querySelector(\"input[name='defaultTime']\").value);\n var time = points.length === active ? 0 : defaultTime;\n var data = {\n duration: time,\n position: position,\n orientation: {\n heading: viewer.camera.heading,\n pitch: viewer.camera.pitch,\n roll: viewer.camera.roll\n }\n };\n if (points.length === active && active !== 0) {\n points[points.length - 1].duration = defaultTime;\n var trList = tableBody.getElementsByClassName('tr');\n trList[points.length - 1].querySelector(\"input[name='time']\").value = defaultTime;\n }\n points.splice(active, 0, data);\n addTrElm(data);\n i++;\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n // let modifyBtn = contentElm.getElementsByClassName('modify-point')[0]\n // modifyBtn.addEventListener('click', () => {\n // if (!active) {\n // return\n // }\n // let position = tools.cartesian3Towgs84(viewer.camera.position, viewer)\n // points[active - 1].position = position\n // points[active - 1].orientation = {\n // heading: viewer.camera.heading,\n // pitch: viewer.camera.pitch,\n // roll: viewer.camera.roll\n // }\n // tools.message({ text: '操作成功' })\n // })\n totalTimeElm = contentElm.querySelector(\"input[name='totalTime']\"); // let isTotalTimeElm = contentElm.querySelector(\"input[name='isTotalTime']\")\n isTotalTimeElm = contentElm.getElementsByClassName('isTotalTime')[0];\n repeatElm = contentElm.querySelector(\"input[name='repeat']\");\n isTotalTimeElm.addEventListener('click', function () {\n var trList = tableBody.getElementsByClassName('tr');\n // if (isTotalTimeElm.checked && trList.length > 0) {\n if (trList.length > 0) {\n var time = Number((Number(totalTimeElm.value) / (trList.length - 1)).toFixed(2));\n for (var _i = 0; _i < trList.length - 1; _i++) {\n points[_i].duration = time;\n trList[_i].querySelector(\"input[name='time']\").value = time;\n }\n trList[trList.length - 1].querySelector(\"input[name='time']\").value = 0;\n totalTimeElm.value = 0; //点击应用后默认时间清零\n }\n });\n totalTimeElm.addEventListener('blur', function () {\n var trList = tableBody.getElementsByClassName('tr');\n totalTimeElm.value = Number(totalTimeElm.value);\n if (totalTimeElm.value < 0) {\n totalTimeElm.value = 0;\n }\n if (isTotalTimeElm.checked && trList.length > 0) {\n var time = Number((Number(totalTimeElm.value) / (trList.length - 1)).toFixed(2));\n for (var _i2 = 0; _i2 < trList.length - 1; _i2++) {\n points[_i2].duration = time;\n trList[_i2].querySelector(\"input[name='time']\").value = time;\n }\n trList[trList.length - 1].querySelector(\"input[name='time']\").value = 0;\n }\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n });\n repeatElm.checked = repeat === Infinity ? true : false;\n repeatElm.addEventListener('change', function () {\n if (repeatElm.checked) {\n repeat = Infinity;\n } else {\n repeat = 0;\n }\n currentRepeat = repeat;\n func({\n name: name,\n points: points,\n repeat: repeat + '',\n defaultTime: defaultTimeDom.value,\n totalTime: totalTimeElm.value\n });\n _Dialog.changeRepeatStateCallBack && _Dialog.changeRepeatStateCallBack(repeatElm.checked);\n });\n\n // Object.defineProperty(options, 'points', {\n // get() {\n // return e_allArea.value\n // },\n // set(value) {\n // e_allArea.value = value\n // }\n // })\n case 40:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function open(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nvar close = function close() {\n // if (_DialogObject && _DialogObject.close) {\n // _DialogObject.close()\n // _DialogObject = null\n // }\n var contentElm = document.getElementsByClassName('fly-roam')[0];\n if (contentElm) {\n var _tableBody = contentElm.getElementsByClassName('table-body')[0];\n var trList = _tableBody.getElementsByClassName('tr');\n for (var _i3 = trList.length - 1; _i3 >= 0; _i3--) {\n _tableBody.removeChild(trList[_i3]);\n }\n }\n repeat = 0;\n currentRepeat = 0;\n};\nvar _executeFlyTo = function executeFlyTo(sdk) {\n var points = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var noStart = arguments.length > 3 ? arguments[3] : undefined;\n if (clickHandler) {\n clickHandler.destroy();\n }\n clickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n clickHandler.setInputAction(function (movement) {\n cease(sdk);\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n var viewer = sdk.viewer;\n viewer.camera.cancelFlight();\n // function pauseExecution(seconds) {\n // return new Promise(resolve => setTimeout(resolve, seconds * 1000));\n // }\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_5__[\"closeViewFollow\"])(sdk);\n viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(points[index].position.lng, points[index].position.lat, points[index].position.alt),\n orientation: points[index].orientation,\n duration: noStart ? points[index - 1].duration : 0.5,\n maximumHeight: points[index].position.alt,\n complete: function () {\n var _complete = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!noStart) {\n // await pauseExecution(2)\n }\n index++;\n if (index <= points.length - 1) {\n _executeFlyTo(sdk, points, index, true);\n } else if (currentRepeat && points.length > 1) {\n currentRepeat--;\n _executeFlyTo(sdk, points, 0);\n } else {\n if (clickHandler) {\n clickHandler.destroy();\n }\n }\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function complete() {\n return _complete.apply(this, arguments);\n }\n return complete;\n }(),\n easingFunction: noStart ? Cesium.EasingFunction.LINEAR_NONE : Cesium.EasingFunction.EXPONENTIAL_OUT\n });\n};\nvar flyTo = function flyTo(sdk) {\n var points = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var noStart = arguments.length > 3 ? arguments[3] : undefined;\n currentRepeat = repeat;\n _executeFlyTo(sdk, points, index, noStart);\n};\n\n/**设置循环次数 (Infinity: 无限循环)*/\nvar setRepeat = function setRepeat(v) {\n if (repeat != Number(v)) {\n repeat = Number(v);\n currentRepeat = repeat;\n if (_DialogObject && _DialogObject._element && _DialogObject._element.content) {\n var repeatElm = _DialogObject._element.content.querySelector(\"input[name='repeat']\");\n if (v === Infinity) {\n repeatElm.checked = true;\n } else {\n repeatElm.checked = false;\n }\n }\n }\n};\n\n/** 停止 */\nvar cease = function cease(sdk) {\n sdk && sdk.viewer && sdk.viewer.camera.cancelFlight();\n if (clickHandler) {\n clickHandler.destroy();\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0ZseVJvYW0vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL0ZseVJvYW0vaW5kZXguanM/NzA4NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiDpo57ooYzmvKvmuLhcclxuICovXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vQmFzZURpYWxvZyc7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5pbXBvcnQgVG9vbHMgZnJvbSBcIi4uLy4uL1Rvb2xzXCI7XHJcbmltcG9ydCB7IGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3cgfSBmcm9tICcuLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5sZXQgX0RpYWxvZ09iamVjdCA9IG51bGxcclxubGV0IGNsaWNrSGFuZGxlclxyXG5sZXQgcmVwZWF0ID0gMFxyXG5sZXQgY3VycmVudFJlcGVhdCA9IDBcclxuXHJcblxyXG5jb25zdCBvcGVuID0gYXN5bmMgKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30sIGZ1bmMpID0+IHtcclxuICBsZXQgbmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5ryr5ri46Lev5b6EJ1xyXG4gIG9wdGlvbnMucG9pbnRzIHx8IChvcHRpb25zLnBvaW50cyA9IFtdKVxyXG4gIGlmIChvcHRpb25zLnJlcGVhdCkge1xyXG4gICAgcmVwZWF0ID0gTnVtYmVyKG9wdGlvbnMucmVwZWF0KVxyXG4gIH1cclxuICBpZiAob3B0aW9ucy5kZWZhdWx0VGltZSkge1xyXG4gICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmbHktcm9hbScpWzBdXHJcbiAgICBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdkZWZhdWx0VGltZSddXCIpLnZhbHVlID0gb3B0aW9ucy5kZWZhdWx0VGltZVxyXG4gIH1cclxuICBpZiAob3B0aW9ucy50b3RhbFRpbWUpIHtcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmx5LXJvYW0nKVswXVxyXG4gICAgY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndG90YWxUaW1lJ11cIikudmFsdWUgPSBvcHRpb25zLnRvdGFsVGltZVxyXG4gIH1cclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlclxyXG4gIGxldCB0b29scyA9IG5ldyBUb29scyhzZGspXHJcbiAgbGV0IGFjdGl2ZSA9IDBcclxuXHJcbiAgLy8gaWYgKF9EaWFsb2dPYmplY3QgJiYgX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gIC8vICAgX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgLy8gICBfRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gIC8vIH1cclxuXHJcbiAgLy8gX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codmlld2VyLl9jb250YWluZXIsIHtcclxuICAvLyAgIHRpdGxlOiAn6aOe6KGM5ryr5ri4JywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gIC8vICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gIC8vICAgICBjZWFzZSh7IHZpZXdlciB9KVxyXG4gIC8vICAgfSxcclxuICAvLyB9KVxyXG4gIC8vIGF3YWl0IF9EaWFsb2dPYmplY3QuaW5pdCgpXHJcbiAgLy8gbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAvLyBjb250ZW50RWxtLmNsYXNzTmFtZSA9ICdmbHktcm9hbSdcclxuICAvLyBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gIC8vIF9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcblxyXG4gIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmx5LXJvYW0nKVswXVxyXG4gIGxldCBhbGxfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIilcclxuICAvLyBFdmVudEJpbmRpbmcoYWxsX2VsbSlcclxuXHJcbiAgbGV0IHRhYmxlQm9keSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFibGUtYm9keScpWzBdO1xyXG4gIGxldCB0YWJsZUVtcHR5ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1lbXB0eScpWzBdXHJcblxyXG4gIGxldCBoYW5kbGVyID0ge1xyXG4gICAgc2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xyXG4gICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgaWYgKHRhcmdldC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGFibGVFbXB0eS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGFibGVFbXB0eS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG4gIH07XHJcbiAgbGV0IGkgPSAwXHJcbiAgbGV0IHBvaW50cyA9IG5ldyBQcm94eShbXSwgaGFuZGxlcik7XHJcbiAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMucG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBwb2ludHMucHVzaChvcHRpb25zLnBvaW50c1tpXSlcclxuICAgIGFkZFRyRWxtKG9wdGlvbnMucG9pbnRzW2ldKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGxldCBuYW1lSW1wdXRCb3hFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0LWJveCcpWzBdXHJcbiAgLy8gY2hlY2sobmFtZUltcHV0Qm94RWxtLCB7IHZhbGlkYXRvcjogJ25vdEVtcHR5JywgbWVzc2FnZTogJ+WQjeensOS4jeiDveS4uuepuu+8gScsIHRyaWdnZXI6ICdpbnB1dCcgfSlcclxuICBsZXQgbmFtZUVsbSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J25hbWUnXVwiKVxyXG4gIG5hbWVFbG0udmFsdWUgPSBuYW1lXHJcbiAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgIG5hbWUgPSBuYW1lRWxtLnZhbHVlXHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBwb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgfSlcclxuICBsZXQgZGVmYXVsdFRpbWVEb20gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdkZWZhdWx0VGltZSddXCIpXHJcbiAgbmFtZUVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgIGZ1bmMoe1xyXG4gICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICBwb2ludHM6IHBvaW50cyxcclxuICAgICAgcmVwZWF0OiByZXBlYXQgKyAnJyxcclxuICAgICAgZGVmYXVsdFRpbWU6IGRlZmF1bHRUaW1lRG9tLnZhbHVlLFxyXG4gICAgICB0b3RhbFRpbWU6IHRvdGFsVGltZUVsbS52YWx1ZVxyXG4gICAgfSlcclxuICB9KVxyXG5cclxuICAvLyBsZXQgYWRkTGlzdEJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gIGxldCBhZGRMaXN0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2F2ZVJvYW0nKVswXTtcclxuICAvLyBhZGRMaXN0QnRuLmlubmVySFRNTCA9ICfkv53lrZgnXHJcbiAgYWRkTGlzdEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGlmICghbmFtZSkge1xyXG4gICAgICBuYW1lID0gJ+a8q+a4uOi3r+W+hCdcclxuICAgICAgbmFtZUVsbS52YWx1ZSA9IG5hbWVcclxuICAgIH1cclxuICAgIGxldCBuZXdQb2ludHMgPSBbXVxyXG4gICAgcG9pbnRzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBuZXdQb2ludHMucHVzaChpdGVtKVxyXG4gICAgfSlcclxuXHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBuZXdQb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgICAvLyBfRGlhbG9nLmNsaWNrU2F2ZVBhdGggJiYgX0RpYWxvZy5jbGlja1NhdmVQYXRoKFxyXG4gICAgLy8gICB7XHJcbiAgICAvLyAgICAgbmFtZTogbmFtZSxcclxuICAgIC8vICAgICBwb2ludHM6IG5ld1BvaW50cyxcclxuICAgIC8vICAgICByZXBlYXQ6IHJlcGVhdCArICcnXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIClcclxuICB9KVxyXG4gIC8vIF9EaWFsb2dPYmplY3QuZm9vdEFwcENoaWxkKGFkZExpc3RCdG4pXHJcblxyXG4gIGxldCBlbmRCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NlYXNlJylbMF1cclxuICBlbmRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICB2aWV3ZXIuY2FtZXJhLmNhbmNlbEZsaWdodCgpXHJcbiAgfSlcclxuXHJcbiAgbGV0IGZseUJ0biA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWZyZXNoUGxheScpWzBdXHJcbiAgZmx5QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgaWYgKHBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZseVRvKHNkaywgcG9pbnRzLCAwKVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIGxldCBhZGRCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FkZC1wb2ludCcpWzBdXHJcbiAgYWRkQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKVxyXG4gICAgbGV0IGRlZmF1bHRUaW1lID0gTnVtYmVyKGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J2RlZmF1bHRUaW1lJ11cIikudmFsdWUpXHJcbiAgICBsZXQgdGltZSA9IHBvaW50cy5sZW5ndGggPT09IGFjdGl2ZSA/IDAgOiBkZWZhdWx0VGltZVxyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGR1cmF0aW9uOiB0aW1lLFxyXG4gICAgICBwb3NpdGlvbjogcG9zaXRpb24sXHJcbiAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgaGVhZGluZzogdmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgICAgIHBpdGNoOiB2aWV3ZXIuY2FtZXJhLnBpdGNoLFxyXG4gICAgICAgIHJvbGw6IHZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gYWN0aXZlICYmIGFjdGl2ZSAhPT0gMCkge1xyXG4gICAgICBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLmR1cmF0aW9uID0gZGVmYXVsdFRpbWVcclxuXHJcbiAgICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgICB0ckxpc3RbcG9pbnRzLmxlbmd0aCAtIDFdLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIikudmFsdWUgPSBkZWZhdWx0VGltZVxyXG5cclxuICAgIH1cclxuICAgIHBvaW50cy5zcGxpY2UoYWN0aXZlLCAwLCBkYXRhKVxyXG4gICAgYWRkVHJFbG0oZGF0YSlcclxuICAgIGkrK1xyXG5cclxuICAgIGZ1bmMoe1xyXG4gICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICBwb2ludHM6IHBvaW50cyxcclxuICAgICAgcmVwZWF0OiByZXBlYXQgKyAnJyxcclxuICAgICAgZGVmYXVsdFRpbWU6IGRlZmF1bHRUaW1lRG9tLnZhbHVlLFxyXG4gICAgICB0b3RhbFRpbWU6IHRvdGFsVGltZUVsbS52YWx1ZVxyXG4gICAgfSlcclxuICB9KVxyXG4gIC8vIGxldCBtb2RpZnlCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZGlmeS1wb2ludCcpWzBdXHJcbiAgLy8gbW9kaWZ5QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gIC8vICAgaWYgKCFhY3RpdmUpIHtcclxuICAvLyAgICAgcmV0dXJuXHJcbiAgLy8gICB9XHJcbiAgLy8gICBsZXQgcG9zaXRpb24gPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NCh2aWV3ZXIuY2FtZXJhLnBvc2l0aW9uLCB2aWV3ZXIpXHJcbiAgLy8gICBwb2ludHNbYWN0aXZlIC0gMV0ucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gIC8vICAgcG9pbnRzW2FjdGl2ZSAtIDFdLm9yaWVudGF0aW9uID0ge1xyXG4gIC8vICAgICBoZWFkaW5nOiB2aWV3ZXIuY2FtZXJhLmhlYWRpbmcsXHJcbiAgLy8gICAgIHBpdGNoOiB2aWV3ZXIuY2FtZXJhLnBpdGNoLFxyXG4gIC8vICAgICByb2xsOiB2aWV3ZXIuY2FtZXJhLnJvbGxcclxuICAvLyAgIH1cclxuICAvLyAgIHRvb2xzLm1lc3NhZ2UoeyB0ZXh0OiAn5pON5L2c5oiQ5YqfJyB9KVxyXG4gIC8vIH0pXHJcblxyXG4gIGxldCB0b3RhbFRpbWVFbG0gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0b3RhbFRpbWUnXVwiKVxyXG4gIC8vIGxldCBpc1RvdGFsVGltZUVsbSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J2lzVG90YWxUaW1lJ11cIilcclxuICBsZXQgaXNUb3RhbFRpbWVFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lzVG90YWxUaW1lJylbMF1cclxuICBsZXQgcmVwZWF0RWxtID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ncmVwZWF0J11cIilcclxuICBpc1RvdGFsVGltZUVsbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgLy8gaWYgKGlzVG90YWxUaW1lRWxtLmNoZWNrZWQgJiYgdHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIGlmICh0ckxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgdGltZSA9IE51bWJlcigoTnVtYmVyKHRvdGFsVGltZUVsbS52YWx1ZSkgLyAodHJMaXN0Lmxlbmd0aCAtIDEpKS50b0ZpeGVkKDIpKVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRyTGlzdC5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBwb2ludHNbaV0uZHVyYXRpb24gPSB0aW1lXHJcbiAgICAgICAgdHJMaXN0W2ldLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIikudmFsdWUgPSB0aW1lXHJcbiAgICAgIH1cclxuICAgICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLnZhbHVlID0gMFxyXG5cclxuICAgICAgdG90YWxUaW1lRWxtLnZhbHVlID0gMC8v54K55Ye75bqU55So5ZCO6buY6K6k5pe26Ze05riF6Zu2XHJcbiAgICB9XHJcbiAgfSlcclxuICB0b3RhbFRpbWVFbG0uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcclxuICAgIGxldCB0ckxpc3QgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHInKVxyXG4gICAgdG90YWxUaW1lRWxtLnZhbHVlID0gTnVtYmVyKHRvdGFsVGltZUVsbS52YWx1ZSlcclxuICAgIGlmICh0b3RhbFRpbWVFbG0udmFsdWUgPCAwKSB7XHJcbiAgICAgIHRvdGFsVGltZUVsbS52YWx1ZSA9IDBcclxuICAgIH1cclxuICAgIGlmIChpc1RvdGFsVGltZUVsbS5jaGVja2VkICYmIHRyTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCB0aW1lID0gTnVtYmVyKChOdW1iZXIodG90YWxUaW1lRWxtLnZhbHVlKSAvICh0ckxpc3QubGVuZ3RoIC0gMSkpLnRvRml4ZWQoMikpXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJMaXN0Lmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgIHBvaW50c1tpXS5kdXJhdGlvbiA9IHRpbWVcclxuICAgICAgICB0ckxpc3RbaV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS52YWx1ZSA9IHRpbWVcclxuICAgICAgfVxyXG4gICAgICB0ckxpc3RbdHJMaXN0Lmxlbmd0aCAtIDFdLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIikudmFsdWUgPSAwXHJcbiAgICB9XHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBwb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgfSlcclxuICByZXBlYXRFbG0uY2hlY2tlZCA9IChyZXBlYXQgPT09IEluZmluaXR5ID8gdHJ1ZSA6IGZhbHNlKVxyXG4gIHJlcGVhdEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICBpZiAocmVwZWF0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgcmVwZWF0ID0gSW5maW5pdHlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXBlYXQgPSAwXHJcbiAgICB9XHJcbiAgICBjdXJyZW50UmVwZWF0ID0gcmVwZWF0XHJcbiAgICBmdW5jKHtcclxuICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgcG9pbnRzOiBwb2ludHMsXHJcbiAgICAgIHJlcGVhdDogcmVwZWF0ICsgJycsXHJcbiAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWVFbG0udmFsdWVcclxuICAgIH0pXHJcbiAgICBfRGlhbG9nLmNoYW5nZVJlcGVhdFN0YXRlQ2FsbEJhY2sgJiYgX0RpYWxvZy5jaGFuZ2VSZXBlYXRTdGF0ZUNhbGxCYWNrKHJlcGVhdEVsbS5jaGVja2VkKVxyXG4gIH0pXHJcblxyXG4gIC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcHRpb25zLCAncG9pbnRzJywge1xyXG4gIC8vICAgZ2V0KCkge1xyXG4gIC8vICAgICByZXR1cm4gZV9hbGxBcmVhLnZhbHVlXHJcbiAgLy8gICB9LFxyXG4gIC8vICAgc2V0KHZhbHVlKSB7XHJcbiAgLy8gICAgIGVfYWxsQXJlYS52YWx1ZSA9IHZhbHVlXHJcbiAgLy8gICB9XHJcbiAgLy8gfSlcclxuXHJcbiAgZnVuY3Rpb24gYWRkVHJFbG0oZGF0YSkge1xyXG4gICAgbGV0IHRyTGlzdCA9IHRhYmxlQm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cicpXHJcbiAgICBpZiAodHJMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLmRpc2FibGVkID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgICBsZXQgdHJfYWN0aXZlID0gdGFibGVCb2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyIGFjdGl2ZScpWzBdXHJcbiAgICB0cl9hY3RpdmUgJiYgKHRyX2FjdGl2ZS5jbGFzc05hbWUgPSAndHInKVxyXG4gICAgbGV0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0ci5jbGFzc05hbWUgPSAndHIgYWN0aXZlJ1xyXG4gICAgdHIuaW5uZXJIVE1MID0gYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGRcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogY2VudGVyO1wiPuinhueCuSR7aSArIDF9PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZFwiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IHRpbWVcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiOTk5Ljk5XCIgc3RlcD1cIjAuMDFcIiBuYW1lPVwidGltZVwiIHZhbHVlPVwiJHtkYXRhLmR1cmF0aW9ufVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRkIGFjdGlvblwiPlxyXG4gICAgICAgIDxidXR0b24gdGl0bGU9XCLmm7TmlrDop4bop5JcIiBjbGFzcz0naWNvbkJ1dCc+PHN2ZyBjbGFzcz1cImljb24tcmVzZXRWaWV3IG1vZGlmeS1wb2ludFwiIHN0eWxlPSd3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2N1cnNvcjogcG9pbnRlcjsnPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLXJlc2V0Vmlld1wiPjwvdXNlPjwvc3ZnPjwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdGl0bGU9XCLmkq3mlL5cIiBjbGFzcz0naWNvbkJ1dCc+PHN2ZyBjbGFzcz1cImljb24tcGxheSBwbGF5XCIgc3R5bGU9J3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7Y3Vyc29yOiBwb2ludGVyO21hcmdpbi10b3A6IC00cHg7Jz48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1wbGF5XCI+PC91c2U+PC9zdmc+PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0aXRsZT1cIuWIoOmZpFwiIGNsYXNzPSdpY29uQnV0Jz48c3ZnIGNsYXNzPVwiaWNvbi1kZWxldGUgZGVsZXRlXCIgc3R5bGU9J3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Y3Vyc29yOiBwb2ludGVyOyc+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tZGVsZXRlXCI+PC91c2U+PC9zdmc+PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBgXHJcbiAgICB0ci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICh2KSA9PiB7XHJcbiAgICAgIGlmICh2LnRhcmdldC5wYXJlbnROb2RlID09PSB0cikge1xyXG4gICAgICAgIGxldCB0cl9hY3RpdmUgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHIgYWN0aXZlJylbMF1cclxuICAgICAgICB0cl9hY3RpdmUgJiYgKHRyX2FjdGl2ZS5jbGFzc05hbWUgPSAndHInKVxyXG4gICAgICAgIHRyLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgIGlmICh0ckxpc3RbbV0gPT09IHRyKSB7XHJcbiAgICAgICAgICAgIGFjdGl2ZSA9IG0gKyAxXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdHIuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAodikgPT4ge1xyXG4gICAgICBpZiAodi50YXJnZXQucGFyZW50Tm9kZSA9PT0gdHIpIHtcclxuICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IHRyTGlzdC5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgaWYgKHRyTGlzdFttXSA9PT0gdHIpIHtcclxuICAgICAgICAgICAgdmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvaW50c1ttXS5wb3NpdGlvbi5sbmcsIHBvaW50c1ttXS5wb3NpdGlvbi5sYXQsIHBvaW50c1ttXS5wb3NpdGlvbi5hbHQpLFxyXG4gICAgICAgICAgICAgIG9yaWVudGF0aW9uOiBwb2ludHNbbV0ub3JpZW50YXRpb24sXHJcbiAgICAgICAgICAgICAgZHVyYXRpb246IDFcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBsZXQgZV9wbGF5ID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGxheScpWzBdXHJcbiAgICBsZXQgZV9kZWxldGUgPSB0ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkZWxldGUnKVswXVxyXG4gICAgbGV0IGVfdGltZSA9IHRyLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSd0aW1lJ11cIilcclxuXHJcbiAgICBsZXQgbW9kaWZ5QnRuID0gdHIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbW9kaWZ5LXBvaW50JylbMF1cclxuICAgIG1vZGlmeUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICBpZiAodHJMaXN0W21dID09PSBlX2RlbGV0ZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKVxyXG4gICAgICAgICAgcG9pbnRzW21dLnBvc2l0aW9uID0gcG9zaXRpb25cclxuICAgICAgICAgIHBvaW50c1ttXS5vcmllbnRhdGlvbiA9IHtcclxuICAgICAgICAgICAgaGVhZGluZzogdmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgICAgICAgICBwaXRjaDogdmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAgICAgICAgICAgcm9sbDogdmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0b29scy5tZXNzYWdlKHsgdGV4dDogJ+abtOaWsOinhuinkuaIkOWKnycgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSlcclxuXHJcbiAgICBlX3BsYXkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgdHJMaXN0Lmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgaWYgKHRyTGlzdFttXSA9PT0gZV9wbGF5LnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlKSB7XHJcbiAgICAgICAgICBmbHlUbyhzZGssIHBvaW50cywgbSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBlX2RlbGV0ZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKHYpID0+IHtcclxuICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCB0ckxpc3QubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICBpZiAodHJMaXN0W21dID09PSBlX2RlbGV0ZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgcG9pbnRzLnNwbGljZShtLCAxKVxyXG4gICAgICAgICAgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSAmJiAocG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXS5kdXJhdGlvbiA9IDApXHJcbiAgICAgICAgICB0YWJsZUJvZHkucmVtb3ZlQ2hpbGQodHIpXHJcbiAgICAgICAgICBpZiAoYWN0aXZlID4gbSArIDEpIHtcclxuICAgICAgICAgICAgYWN0aXZlLS1cclxuICAgICAgICAgICAgdHJMaXN0W2FjdGl2ZSAtIDFdLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhY3RpdmUgPT0gbSArIDEpIHtcclxuICAgICAgICAgICAgaWYgKHRyTGlzdC5sZW5ndGggPT0gbSkge1xyXG4gICAgICAgICAgICAgIGFjdGl2ZSAtPSAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRyTGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgIHRyTGlzdFthY3RpdmUgLSAxXS5jbGFzc05hbWUgPSAndHIgYWN0aXZlJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBlbHNlIGlmKGFjdGl2ZSA9PSBtKSB7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKHRyTGlzdC5sZW5ndGgtMSwgYWN0aXZlKVxyXG4gICAgICAgICAgLy8gICBpZiAodHJMaXN0Lmxlbmd0aCA9PSBhY3RpdmUtMSkge1xyXG4gICAgICAgICAgLy8gICAgIHRyTGlzdFthY3RpdmUtMl0uY2xhc3NOYW1lID0gJ3RyIGFjdGl2ZSdcclxuICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgLy8gICBlbHNlIHtcclxuICAgICAgICAgIC8vICAgICB0ckxpc3RbYWN0aXZlLTFdLmNsYXNzTmFtZSA9ICd0ciBhY3RpdmUnXHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIGlmICh0ckxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgbGFzdEVsbSA9IHRyTGlzdFt0ckxpc3QubGVuZ3RoIC0gMV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKVxyXG4gICAgICAgICAgICBsYXN0RWxtLmRpc2FibGVkID0gJ2Rpc2FibGVkJ1xyXG4gICAgICAgICAgICBsYXN0RWxtLnZhbHVlID0gMFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gcG9pbnRzLnNwbGljZShpLCAxKVxyXG4gICAgICAvLyB0YWJsZUJvZHkucmVtb3ZlQ2hpbGQodHIpXHJcbiAgICAgIC8vIGlmICh0ckxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyAgIHRyTGlzdFt0ckxpc3QubGVuZ3RoIC0gMV0ucXVlcnlTZWxlY3RvcihcImlucHV0W25hbWU9J3RpbWUnXVwiKS5kaXNhYmxlZCA9ICdkaXNhYmxlZCdcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgZnVuYyh7XHJcbiAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICBwb2ludHM6IHBvaW50cyxcclxuICAgICAgICByZXBlYXQ6IHJlcGVhdCArICcnLFxyXG4gICAgICAgIGRlZmF1bHRUaW1lOiBkZWZhdWx0VGltZURvbS52YWx1ZSxcclxuICAgICAgICB0b3RhbFRpbWU6IHRvdGFsVGltZUVsbS52YWx1ZVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIGVfdGltZS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICh2KSA9PiB7XHJcbiAgICAgIGlzVG90YWxUaW1lRWxtLmNoZWNrZWQgPSBmYWxzZVxyXG4gICAgICBkYXRhLmR1cmF0aW9uID0gTnVtYmVyKGVfdGltZS52YWx1ZSlcclxuICAgICAgaWYgKGRhdGEuZHVyYXRpb24gPCAwKSB7XHJcbiAgICAgICAgZGF0YS5kdXJhdGlvbiA9IDBcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGVfdGltZS5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4ge1xyXG4gICAgICBlX3RpbWUudmFsdWUgPSBOdW1iZXIoTnVtYmVyKGVfdGltZS52YWx1ZSkudG9GaXhlZCgyKSlcclxuICAgICAgaWYgKGVfdGltZS52YWx1ZSA8IDApIHtcclxuICAgICAgICBlX3RpbWUudmFsdWUgPSAwXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGFibGVCb2R5Lmluc2VydEJlZm9yZSh0ciwgdHJMaXN0W2FjdGl2ZV0pXHJcbiAgICBhY3RpdmUrK1xyXG4gICAgdHJMaXN0W3RyTGlzdC5sZW5ndGggLSAxXS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0ndGltZSddXCIpLmRpc2FibGVkID0gJ2Rpc2FibGVkJ1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG5jb25zdCBjbG9zZSA9ICgpID0+IHtcclxuICAvLyBpZiAoX0RpYWxvZ09iamVjdCAmJiBfRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgLy8gICBfRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAvLyAgIF9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgLy8gfVxyXG4gIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmx5LXJvYW0nKVswXVxyXG4gIGlmIChjb250ZW50RWxtKSB7XHJcbiAgICBsZXQgdGFibGVCb2R5ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0YWJsZS1ib2R5JylbMF07XHJcbiAgICBsZXQgdHJMaXN0ID0gdGFibGVCb2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyJylcclxuICAgIGZvciAobGV0IGkgPSB0ckxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgdGFibGVCb2R5LnJlbW92ZUNoaWxkKHRyTGlzdFtpXSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcGVhdCA9IDBcclxuICBjdXJyZW50UmVwZWF0ID0gMFxyXG59XHJcblxyXG5jb25zdCBleGVjdXRlRmx5VG8gPSAoc2RrLCBwb2ludHMgPSBbXSwgaW5kZXggPSAwLCBub1N0YXJ0KSA9PiB7XHJcbiAgaWYgKGNsaWNrSGFuZGxlcikge1xyXG4gICAgY2xpY2tIYW5kbGVyLmRlc3Ryb3koKVxyXG4gIH1cclxuICBjbGlja0hhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIGNsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGNlYXNlKHNkaylcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuUklHSFRfQ0xJQ0spXHJcbiAgbGV0IHZpZXdlciA9IHNkay52aWV3ZXJcclxuICB2aWV3ZXIuY2FtZXJhLmNhbmNlbEZsaWdodCgpXHJcbiAgLy8gZnVuY3Rpb24gcGF1c2VFeGVjdXRpb24oc2Vjb25kcykge1xyXG4gIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBzZWNvbmRzICogMTAwMCkpO1xyXG4gIC8vIH1cclxuICBjbG9zZVJvdGF0ZUFyb3VuZChzZGspXHJcbiAgY2xvc2VWaWV3Rm9sbG93KHNkaylcclxuICB2aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb2ludHNbaW5kZXhdLnBvc2l0aW9uLmxuZywgcG9pbnRzW2luZGV4XS5wb3NpdGlvbi5sYXQsIHBvaW50c1tpbmRleF0ucG9zaXRpb24uYWx0KSxcclxuICAgIG9yaWVudGF0aW9uOiBwb2ludHNbaW5kZXhdLm9yaWVudGF0aW9uLFxyXG4gICAgZHVyYXRpb246IG5vU3RhcnQgPyBwb2ludHNbaW5kZXggLSAxXS5kdXJhdGlvbiA6IDAuNSxcclxuICAgIG1heGltdW1IZWlnaHQ6IHBvaW50c1tpbmRleF0ucG9zaXRpb24uYWx0LFxyXG4gICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcclxuICAgICAgaWYgKCFub1N0YXJ0KSB7XHJcbiAgICAgICAgLy8gYXdhaXQgcGF1c2VFeGVjdXRpb24oMilcclxuICAgICAgfVxyXG4gICAgICBpbmRleCsrXHJcbiAgICAgIGlmIChpbmRleCA8PSBwb2ludHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGV4ZWN1dGVGbHlUbyhzZGssIHBvaW50cywgaW5kZXgsIHRydWUpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoY3VycmVudFJlcGVhdCAmJiBwb2ludHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGN1cnJlbnRSZXBlYXQtLVxyXG4gICAgICAgIGV4ZWN1dGVGbHlUbyhzZGssIHBvaW50cywgMClcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAoY2xpY2tIYW5kbGVyKSB7XHJcbiAgICAgICAgICBjbGlja0hhbmRsZXIuZGVzdHJveSgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfSxcclxuICAgIGVhc2luZ0Z1bmN0aW9uOiBub1N0YXJ0ID8gQ2VzaXVtLkVhc2luZ0Z1bmN0aW9uLkxJTkVBUl9OT05FIDogQ2VzaXVtLkVhc2luZ0Z1bmN0aW9uLkVYUE9ORU5USUFMX09VVFxyXG4gIH0pXHJcbn1cclxuXHJcbmNvbnN0IGZseVRvID0gKHNkaywgcG9pbnRzID0gW10sIGluZGV4ID0gMCwgbm9TdGFydCkgPT4ge1xyXG4gIGN1cnJlbnRSZXBlYXQgPSByZXBlYXRcclxuICBleGVjdXRlRmx5VG8oc2RrLCBwb2ludHMsIGluZGV4LCBub1N0YXJ0KVxyXG59XHJcblxyXG4vKirorr7nva7lvqrnjq/mrKHmlbAgKEluZmluaXR5OiDml6DpmZDlvqrnjq8pKi9cclxuY29uc3Qgc2V0UmVwZWF0ID0gKHYpID0+IHtcclxuICBpZiAocmVwZWF0ICE9IE51bWJlcih2KSkge1xyXG4gICAgcmVwZWF0ID0gTnVtYmVyKHYpXHJcbiAgICBjdXJyZW50UmVwZWF0ID0gcmVwZWF0XHJcbiAgICBpZiAoX0RpYWxvZ09iamVjdCAmJiBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50ICYmIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudCkge1xyXG4gICAgICBsZXQgcmVwZWF0RWxtID0gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdyZXBlYXQnXVwiKVxyXG4gICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICByZXBlYXRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXBlYXRFbG0uY2hlY2tlZCA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKiog5YGc5q2iICovXHJcbmNvbnN0IGNlYXNlID0gKHNkaykgPT4ge1xyXG4gIHNkayAmJiBzZGsudmlld2VyICYmIHNkay52aWV3ZXIuY2FtZXJhLmNhbmNlbEZsaWdodCgpXHJcbiAgaWYgKGNsaWNrSGFuZGxlcikge1xyXG4gICAgY2xpY2tIYW5kbGVyLmRlc3Ryb3koKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHsgb3BlbiwgY2xvc2UsIGZseVRvLCBzZXRSZXBlYXQsIGNlYXNlIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbFlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtKQTtBQXJZQTtBQUFBO0FBQUE7QUF1WUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQW1CQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/FlyRoam/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/KeyBoard/index.js":
-/*!**************************************!*\
- !*** ./src/Global/KeyBoard/index.js ***!
- \**************************************/
-/*! exports provided: keyboardMapRoamingInit */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keyboardMapRoamingInit\", function() { return keyboardMapRoamingInit; });\n/*\r\n * @Description: 使用键盘控制地图漫游\r\n * @Version: 1.0\r\n * @Author: Julian\r\n * @Date: 2022-04-07 16:04:07\r\n * @LastEditors: Julian\r\n * @LastEditTime: 2022-04-07 18:40:40\r\n */\n\n/**\r\n * @description: 使用键盘控制地图漫游初始化\r\n * @param {*} _viewer\r\n * @return {*}\r\n */\nfunction keyboardMapRoamingInit(_viewer) {\n // 添加键盘监听事件\n document.addEventListener('keydown', keyDown.bind(_viewer), false);\n document.addEventListener('keyup', keyUp.bind(_viewer), false);\n\n // 为每一帧添加监听事件\n _viewer && _viewer.clock.onTick.addEventListener(function () {\n keyboardMapRoamingRender(_viewer);\n });\n}\n\n// 定义事件组\nvar flags = {\n // 相机位置\n moveForward: false,\n moveBackward: false,\n moveLeft: false,\n moveRight: false,\n moveUp: false,\n moveDown: false,\n // 相机姿态\n lookUp: false,\n lookDown: false,\n lookLeft: false,\n lookRight: false,\n twistLeft: false,\n twistRight: false,\n // 缩放\n zoomIn: false,\n zoomOut: false\n};\n\n// 相机位置:W:向前;S:向后;D:向右;A:向左;Q:升高;E:降低;\n// 相机姿态:↑:抬头;↓:低头;←:左转;→:右转;0:顺时针;.:逆时针\n// 缩放:+:放大,-:缩小;\n\n/**\r\n * @description: 根据键盘输入字符返回事件信息\r\n * @param {*} key\r\n * @return {*}\r\n */\nfunction getFlagFromKeyboard(key) {\n switch (key) {\n // 按字符的Unicode编码\n // 相机位置\n case 87:\n return 'moveForward';\n case 83:\n return 'moveBackward';\n case 68:\n return 'moveRight';\n case 65:\n return 'moveLeft';\n case 81:\n return 'moveUp';\n case 69:\n return 'moveDown';\n // 相机姿态\n case 38:\n return 'lookUp';\n case 40:\n return 'lookDown';\n case 37:\n return 'lookLeft';\n case 39:\n return 'lookRight';\n case 96:\n return 'twistLeft';\n case 110:\n return 'twistRight';\n // 缩放\n case 107:\n return 'zoomIn';\n case 109:\n return 'zoomOut';\n default:\n return undefined;\n }\n}\n\n/**\r\n * @description: 键盘按下\r\n * @param {*} event\r\n * @return {*}\r\n */\nfunction keyDown(event) {\n var _viewer = this;\n\n // 判断是否有输入框聚焦\n function isInputFocused() {\n var activeElement = document.activeElement;\n return activeElement.tagName.toLowerCase() === 'input' && activeElement.type !== 'checkbox' || activeElement.tagName.toLowerCase() === 'textarea' || activeElement.getAttribute('role') === 'textarea';\n }\n if (isInputFocused()) {\n // console.log('页面上有输入框已经获取焦点');\n } else if (_viewer.trackedEntity) {\n // console.log('视角跟随中');\n } else if (_viewer._firstPersonView) {\n // console.log('第一人称视角中');\n } else if (_viewer._disableKeyboardEvent) {\n // console.log('禁用键盘事件');\n } else if (event.ctrlKey && event.altKey) {\n if (event.key === 'v' || event.key === 'V') {\n var camera = _viewer.camera;\n _viewer._CAMERA_SHORTCUT_VIEW = {\n orientation: {\n heading: camera.heading,\n pitch: camera.pitch,\n roll: camera.roll\n },\n position: {\n x: camera.position.x,\n y: camera.position.y,\n z: camera.position.z\n }\n };\n localStorage.setItem('CAMERA_SHORTCUT_VIEW', JSON.stringify(_viewer._CAMERA_SHORTCUT_VIEW));\n }\n if (event.key === 'f' || event.key === 'F') {\n var CAMERA_SHORTCUT_VIEW = localStorage.getItem('CAMERA_SHORTCUT_VIEW');\n _viewer._CAMERA_SHORTCUT_VIEW = JSON.parse(CAMERA_SHORTCUT_VIEW);\n if (_viewer._CAMERA_SHORTCUT_VIEW && _viewer._CAMERA_SHORTCUT_VIEW.position && _viewer._CAMERA_SHORTCUT_VIEW.orientation) {\n _viewer.camera.flyTo({\n destination: _viewer._CAMERA_SHORTCUT_VIEW.position,\n orientation: _viewer._CAMERA_SHORTCUT_VIEW.orientation\n });\n }\n }\n } else {\n // console.log('页面上没有输入框获取焦点');\n var flagName = getFlagFromKeyboard(event.keyCode);\n if (typeof flagName !== 'undefined') {\n flags[flagName] = true;\n }\n }\n}\n\n/**\r\n * @description: 键盘弹起\r\n * @param {*} event\r\n * @return {*}\r\n */\nfunction keyUp(event) {\n var flagName = getFlagFromKeyboard(event.keyCode);\n if (typeof flagName !== 'undefined') {\n flags[flagName] = false;\n }\n}\n\n/**\r\n * @description: 根据事件调整相机\r\n * @param {*} _viewer\r\n * @return {*}\r\n */\nfunction keyboardMapRoamingRender(_viewer) {\n if (!_viewer || !_viewer.scene || !_viewer.scene.screenSpaceCameraController.enableTilt) {\n return;\n }\n var camera = _viewer.camera;\n var ellipsoid = _viewer.scene.globe.ellipsoid;\n var cameraHeight = ellipsoid.cartesianToCartographic(camera.position).height;\n var cameraHeight2 = camera.positionCartographic.height;\n\n // 根据相机高度设置移动距离,比默认距离移动效果更好\n var moveRate = cameraHeight / 20.0;\n var rotationRate = moveRate / 500000 / Cesium.Math.toDegrees(camera.pitch);\n var moveRate2 = cameraHeight2 / 100.0;\n if (flags.moveForward) {\n if (_viewer.scene.mode == 2) {\n camera.moveUp(moveRate2);\n } else {\n camera.rotate(camera.right, -rotationRate);\n }\n }\n if (flags.moveBackward) {\n if (_viewer.scene.mode == 2) {\n camera.moveDown(moveRate2);\n } else {\n camera.rotate(camera.right, rotationRate);\n }\n }\n if (flags.moveLeft) {\n if (_viewer.scene.mode == 2) {\n camera.moveLeft(moveRate2);\n } else {\n camera.rotate(camera.up, -rotationRate);\n }\n }\n if (flags.moveRight) {\n if (_viewer.scene.mode == 2) {\n camera.moveRight(moveRate2);\n } else {\n camera.rotate(camera.up, rotationRate);\n }\n }\n if (flags.moveUp) {\n camera.moveUp(moveRate);\n }\n if (flags.moveDown) {\n camera.moveDown(moveRate);\n }\n if (flags.lookUp) {\n camera.lookUp();\n }\n if (flags.lookDown) {\n camera.lookDown();\n }\n if (flags.lookLeft) {\n camera.lookLeft();\n }\n if (flags.lookRight) {\n camera.lookRight();\n }\n if (flags.twistLeft) {\n camera.twistLeft();\n }\n if (flags.twistRight) {\n camera.twistRight();\n }\n // 根据相机高度设置缩放参数\n if (flags.zoomIn) {\n var height = cameraHeight / 2;\n if (height < 1) {\n height = 0;\n }\n camera.zoomIn(height);\n }\n if (flags.zoomOut) {\n var _height = cameraHeight / 2;\n if (cameraHeight + cameraHeight >= 50000000) {\n _height = 50000000 - cameraHeight;\n }\n camera.zoomOut(_height);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL0tleUJvYXJkL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9LZXlCb2FyZC9pbmRleC5qcz82MGQwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdGlvbjog5L2/55So6ZSu55uY5o6n5Yi25Zyw5Zu+5ryr5ri4XHJcbiAqIEBWZXJzaW9uOiAxLjBcclxuICogQEF1dGhvcjogSnVsaWFuXHJcbiAqIEBEYXRlOiAyMDIyLTA0LTA3IDE2OjA0OjA3XHJcbiAqIEBMYXN0RWRpdG9yczogSnVsaWFuXHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjItMDQtMDcgMTg6NDA6NDBcclxuICovXHJcblxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbjog5L2/55So6ZSu55uY5o6n5Yi25Zyw5Zu+5ryr5ri45Yid5aeL5YyWXHJcbiAqIEBwYXJhbSB7Kn0gX3ZpZXdlclxyXG4gKiBAcmV0dXJuIHsqfVxyXG4gKi9cclxuZnVuY3Rpb24ga2V5Ym9hcmRNYXBSb2FtaW5nSW5pdChfdmlld2VyKSB7XHJcbiAgLy8g5re75Yqg6ZSu55uY55uR5ZCs5LqL5Lu2XHJcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleURvd24uYmluZChfdmlld2VyKSwgZmFsc2UpO1xyXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywga2V5VXAuYmluZChfdmlld2VyKSwgZmFsc2UpO1xyXG5cclxuICAvLyDkuLrmr4/kuIDluKfmt7vliqDnm5HlkKzkuovku7ZcclxuICBfdmlld2VyICYmIF92aWV3ZXIuY2xvY2sub25UaWNrLmFkZEV2ZW50TGlzdGVuZXIoZnVuY3Rpb24gKCkge1xyXG4gICAga2V5Ym9hcmRNYXBSb2FtaW5nUmVuZGVyKF92aWV3ZXIpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vLyDlrprkuYnkuovku7bnu4RcclxubGV0IGZsYWdzID0ge1xyXG4gIC8vIOebuOacuuS9jee9rlxyXG4gIG1vdmVGb3J3YXJkOiBmYWxzZSxcclxuICBtb3ZlQmFja3dhcmQ6IGZhbHNlLFxyXG4gIG1vdmVMZWZ0OiBmYWxzZSxcclxuICBtb3ZlUmlnaHQ6IGZhbHNlLFxyXG4gIG1vdmVVcDogZmFsc2UsXHJcbiAgbW92ZURvd246IGZhbHNlLFxyXG4gIC8vIOebuOacuuWnv+aAgVxyXG4gIGxvb2tVcDogZmFsc2UsXHJcbiAgbG9va0Rvd246IGZhbHNlLFxyXG4gIGxvb2tMZWZ0OiBmYWxzZSxcclxuICBsb29rUmlnaHQ6IGZhbHNlLFxyXG4gIHR3aXN0TGVmdDogZmFsc2UsXHJcbiAgdHdpc3RSaWdodDogZmFsc2UsXHJcbiAgLy8g57yp5pS+XHJcbiAgem9vbUluOiBmYWxzZSxcclxuICB6b29tT3V0OiBmYWxzZVxyXG59XHJcblxyXG5cclxuLy8g55u45py65L2N572u77yaV++8muWQkeWJje+8m1PvvJrlkJHlkI7vvJtE77ya5ZCR5Y+z77ybQe+8muWQkeW3pu+8m1HvvJrljYfpq5jvvJtF77ya6ZmN5L2O77ybXHJcbi8vIOebuOacuuWnv+aAge+8muKGke+8muaKrOWktO+8m+KGk++8muS9juWktO+8m+KGkO+8muW3pui9rO+8m+KGku+8muWPs+i9rO+8mzDvvJrpobrml7bpkojvvJsu77ya6YCG5pe26ZKIXHJcbi8vIOe8qeaUvu+8mivvvJrmlL7lpKfvvIwt77ya57yp5bCP77ybXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uOiDmoLnmja7plK7nm5jovpPlhaXlrZfnrKbov5Tlm57kuovku7bkv6Hmga9cclxuICogQHBhcmFtIHsqfSBrZXlcclxuICogQHJldHVybiB7Kn1cclxuICovXHJcbmZ1bmN0aW9uIGdldEZsYWdGcm9tS2V5Ym9hcmQoa2V5KSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIC8vIOaMieWtl+espueahFVuaWNvZGXnvJbnoIFcclxuICAgIC8vIOebuOacuuS9jee9rlxyXG4gICAgY2FzZSA4NzpcclxuICAgICAgcmV0dXJuICdtb3ZlRm9yd2FyZCc7XHJcbiAgICBjYXNlIDgzOlxyXG4gICAgICByZXR1cm4gJ21vdmVCYWNrd2FyZCc7XHJcbiAgICBjYXNlIDY4OlxyXG4gICAgICByZXR1cm4gJ21vdmVSaWdodCc7XHJcbiAgICBjYXNlIDY1OlxyXG4gICAgICByZXR1cm4gJ21vdmVMZWZ0JztcclxuICAgIGNhc2UgODE6XHJcbiAgICAgIHJldHVybiAnbW92ZVVwJztcclxuICAgIGNhc2UgNjk6XHJcbiAgICAgIHJldHVybiAnbW92ZURvd24nO1xyXG4gICAgLy8g55u45py65ae/5oCBXHJcbiAgICBjYXNlIDM4OlxyXG4gICAgICByZXR1cm4gJ2xvb2tVcCc7XHJcbiAgICBjYXNlIDQwOlxyXG4gICAgICByZXR1cm4gJ2xvb2tEb3duJztcclxuICAgIGNhc2UgMzc6XHJcbiAgICAgIHJldHVybiAnbG9va0xlZnQnO1xyXG4gICAgY2FzZSAzOTpcclxuICAgICAgcmV0dXJuICdsb29rUmlnaHQnO1xyXG4gICAgY2FzZSA5NjpcclxuICAgICAgcmV0dXJuICd0d2lzdExlZnQnO1xyXG4gICAgY2FzZSAxMTA6XHJcbiAgICAgIHJldHVybiAndHdpc3RSaWdodCc7XHJcbiAgICAvLyDnvKnmlL5cclxuICAgIGNhc2UgMTA3OlxyXG4gICAgICByZXR1cm4gJ3pvb21Jbic7XHJcbiAgICBjYXNlIDEwOTpcclxuICAgICAgcmV0dXJuICd6b29tT3V0JztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uOiDplK7nm5jmjInkuItcclxuICogQHBhcmFtIHsqfSBldmVudFxyXG4gKiBAcmV0dXJuIHsqfVxyXG4gKi9cclxuZnVuY3Rpb24ga2V5RG93bihldmVudCkge1xyXG4gIGxldCBfdmlld2VyID0gdGhpc1xyXG5cclxuICAvLyDliKTmlq3mmK/lkKbmnInovpPlhaXmoYbogZrnhKZcclxuICBmdW5jdGlvbiBpc0lucHV0Rm9jdXNlZCgpIHtcclxuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG4gICAgcmV0dXJuIChhY3RpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiBhY3RpdmVFbGVtZW50LnR5cGUgIT09ICdjaGVja2JveCcpIHx8XHJcbiAgICAgIGFjdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndGV4dGFyZWEnIHx8XHJcbiAgICAgIGFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdyb2xlJykgPT09ICd0ZXh0YXJlYSc7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNJbnB1dEZvY3VzZWQoKSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ+mhtemdouS4iuaciei+k+WFpeahhuW3sue7j+iOt+WPlueEpueCuScpO1xyXG4gIH0gZWxzZSBpZiAoX3ZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn6KeG6KeS6Lef6ZqP5LitJyk7XHJcbiAgfSBlbHNlIGlmIChfdmlld2VyLl9maXJzdFBlcnNvblZpZXcpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCfnrKzkuIDkurrnp7Dop4bop5LkuK0nKTtcclxuICB9IGVsc2UgaWYgKF92aWV3ZXIuX2Rpc2FibGVLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygn56aB55So6ZSu55uY5LqL5Lu2Jyk7XHJcbiAgfSBlbHNlIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmFsdEtleSkge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ3YnIHx8IGV2ZW50LmtleSA9PT0gJ1YnKSB7XHJcbiAgICAgIGxldCBjYW1lcmEgPSBfdmlld2VyLmNhbWVyYVxyXG4gICAgICBfdmlld2VyLl9DQU1FUkFfU0hPUlRDVVRfVklFVyA9IHtcclxuICAgICAgICBvcmllbnRhdGlvbjogeyBoZWFkaW5nOiBjYW1lcmEuaGVhZGluZywgcGl0Y2g6IGNhbWVyYS5waXRjaCwgcm9sbDogY2FtZXJhLnJvbGwgfSxcclxuICAgICAgICBwb3NpdGlvbjogeyB4OiBjYW1lcmEucG9zaXRpb24ueCwgeTogY2FtZXJhLnBvc2l0aW9uLnksIHo6IGNhbWVyYS5wb3NpdGlvbi56IH1cclxuICAgICAgfVxyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcnLCBKU09OLnN0cmluZ2lmeShfdmlld2VyLl9DQU1FUkFfU0hPUlRDVVRfVklFVykpXHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZicgfHwgZXZlbnQua2V5ID09PSAnRicpIHtcclxuICAgICAgbGV0IENBTUVSQV9TSE9SVENVVF9WSUVXID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NBTUVSQV9TSE9SVENVVF9WSUVXJylcclxuICAgICAgX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcgPSBKU09OLnBhcnNlKENBTUVSQV9TSE9SVENVVF9WSUVXKVxyXG4gICAgICBpZiAoX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcgJiYgX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcucG9zaXRpb24gJiYgX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcub3JpZW50YXRpb24pIHtcclxuICAgICAgICBfdmlld2VyLmNhbWVyYS5mbHlUbyh7XHJcbiAgICAgICAgICBkZXN0aW5hdGlvbjogX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcucG9zaXRpb24sXHJcbiAgICAgICAgICBvcmllbnRhdGlvbjogX3ZpZXdlci5fQ0FNRVJBX1NIT1JUQ1VUX1ZJRVcub3JpZW50YXRpb25cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCfpobXpnaLkuIrmsqHmnInovpPlhaXmoYbojrflj5bnhKbngrknKTtcclxuICAgIGxldCBmbGFnTmFtZSA9IGdldEZsYWdGcm9tS2V5Ym9hcmQoZXZlbnQua2V5Q29kZSk7XHJcbiAgICBpZiAodHlwZW9mIGZsYWdOYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBmbGFnc1tmbGFnTmFtZV0gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbjog6ZSu55uY5by56LW3XHJcbiAqIEBwYXJhbSB7Kn0gZXZlbnRcclxuICogQHJldHVybiB7Kn1cclxuICovXHJcbmZ1bmN0aW9uIGtleVVwKGV2ZW50KSB7XHJcbiAgbGV0IGZsYWdOYW1lID0gZ2V0RmxhZ0Zyb21LZXlib2FyZChldmVudC5rZXlDb2RlKTtcclxuICBpZiAodHlwZW9mIGZsYWdOYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgZmxhZ3NbZmxhZ05hbWVdID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbjog5qC55o2u5LqL5Lu26LCD5pW055u45py6XHJcbiAqIEBwYXJhbSB7Kn0gX3ZpZXdlclxyXG4gKiBAcmV0dXJuIHsqfVxyXG4gKi9cclxuZnVuY3Rpb24ga2V5Ym9hcmRNYXBSb2FtaW5nUmVuZGVyKF92aWV3ZXIpIHtcclxuICBpZighX3ZpZXdlciB8fCAhX3ZpZXdlci5zY2VuZSB8fCAhX3ZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVGlsdCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjYW1lcmEgPSBfdmlld2VyLmNhbWVyYTtcclxuICBsZXQgZWxsaXBzb2lkID0gX3ZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQ7XHJcbiAgbGV0IGNhbWVyYUhlaWdodCA9IGVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhjYW1lcmEucG9zaXRpb24pLmhlaWdodDtcclxuICBsZXQgY2FtZXJhSGVpZ2h0MiA9IGNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQ7XHJcblxyXG5cclxuICAvLyDmoLnmja7nm7jmnLrpq5jluqborr7nva7np7vliqjot53nprvvvIzmr5Tpu5jorqTot53nprvnp7vliqjmlYjmnpzmm7Tlpb1cclxuICBsZXQgbW92ZVJhdGUgPSBjYW1lcmFIZWlnaHQgLyAyMC4wO1xyXG4gIGxldCByb3RhdGlvblJhdGUgPSBtb3ZlUmF0ZSAvIDUwMDAwMCAvIENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYW1lcmEucGl0Y2gpO1xyXG4gIGxldCBtb3ZlUmF0ZTIgPSBjYW1lcmFIZWlnaHQyIC8gMTAwLjA7XHJcblxyXG4gIGlmIChmbGFncy5tb3ZlRm9yd2FyZCkge1xyXG4gICAgaWYoX3ZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgY2FtZXJhLm1vdmVVcChtb3ZlUmF0ZTIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNhbWVyYS5yb3RhdGUoY2FtZXJhLnJpZ2h0LCAtcm90YXRpb25SYXRlKTtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKGZsYWdzLm1vdmVCYWNrd2FyZCkge1xyXG4gICAgaWYoX3ZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgY2FtZXJhLm1vdmVEb3duKG1vdmVSYXRlMik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2FtZXJhLnJvdGF0ZShjYW1lcmEucmlnaHQsIHJvdGF0aW9uUmF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChmbGFncy5tb3ZlTGVmdCkge1xyXG4gICAgaWYoX3ZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgY2FtZXJhLm1vdmVMZWZ0KG1vdmVSYXRlMik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2FtZXJhLnJvdGF0ZShjYW1lcmEudXAsIC1yb3RhdGlvblJhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoZmxhZ3MubW92ZVJpZ2h0KSB7XHJcbiAgICBpZihfdmlld2VyLnNjZW5lLm1vZGUgPT0gMikge1xyXG4gICAgICBjYW1lcmEubW92ZVJpZ2h0KG1vdmVSYXRlMik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2FtZXJhLnJvdGF0ZShjYW1lcmEudXAsIHJvdGF0aW9uUmF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChmbGFncy5tb3ZlVXApIHtcclxuICAgIGNhbWVyYS5tb3ZlVXAobW92ZVJhdGUpO1xyXG4gIH1cclxuICBpZiAoZmxhZ3MubW92ZURvd24pIHtcclxuICAgIGNhbWVyYS5tb3ZlRG93bihtb3ZlUmF0ZSk7XHJcbiAgfVxyXG4gIGlmIChmbGFncy5sb29rVXApIHtcclxuICAgIGNhbWVyYS5sb29rVXAoKTtcclxuICB9XHJcbiAgaWYgKGZsYWdzLmxvb2tEb3duKSB7XHJcbiAgICBjYW1lcmEubG9va0Rvd24oKTtcclxuICB9XHJcbiAgaWYgKGZsYWdzLmxvb2tMZWZ0KSB7XHJcbiAgICBjYW1lcmEubG9va0xlZnQoKTtcclxuICB9XHJcbiAgaWYgKGZsYWdzLmxvb2tSaWdodCkge1xyXG4gICAgY2FtZXJhLmxvb2tSaWdodCgpO1xyXG4gIH1cclxuICBpZiAoZmxhZ3MudHdpc3RMZWZ0KSB7XHJcbiAgICBjYW1lcmEudHdpc3RMZWZ0KCk7XHJcbiAgfVxyXG4gIGlmIChmbGFncy50d2lzdFJpZ2h0KSB7XHJcbiAgICBjYW1lcmEudHdpc3RSaWdodCgpO1xyXG4gIH1cclxuICAvLyDmoLnmja7nm7jmnLrpq5jluqborr7nva7nvKnmlL7lj4LmlbBcclxuICBpZiAoZmxhZ3Muem9vbUluKSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gY2FtZXJhSGVpZ2h0IC8gMlxyXG4gICAgaWYgKGhlaWdodCA8IDEpIHtcclxuICAgICAgaGVpZ2h0ID0gMFxyXG4gICAgfVxyXG4gICAgY2FtZXJhLnpvb21JbihoZWlnaHQpO1xyXG4gIH1cclxuICBpZiAoZmxhZ3Muem9vbU91dCkge1xyXG4gICAgbGV0IGhlaWdodCA9IGNhbWVyYUhlaWdodCAvIDJcclxuICAgIGlmICgoY2FtZXJhSGVpZ2h0ICsgY2FtZXJhSGVpZ2h0KSA+PSA1MDAwMDAwMCkge1xyXG4gICAgICBoZWlnaHQgPSA1MDAwMDAwMCAtIGNhbWVyYUhlaWdodFxyXG4gICAgfVxyXG4gICAgY2FtZXJhLnpvb21PdXQoaGVpZ2h0KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IGtleWJvYXJkTWFwUm9hbWluZ0luaXQgfVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/KeyBoard/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/MapPrint/dataSource.js":
-/*!*******************************************!*\
- !*** ./src/Global/MapPrint/dataSource.js ***!
- \*******************************************/
-/*! exports provided: getTemplateData */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTemplateData\", function() { return getTemplateData; });\nfunction getTemplateData(tools) {\n return [{\n \"name\": \"模板一\",\n \"value\": \"模板一\",\n \"id\": \"1\",\n margin: 0.03,\n title: {\n text: '标题一',\n height: 0.05,\n bgColor: '#5d5d5d',\n color: '#ffffff',\n show: true\n },\n border: {\n show: false,\n url: '/custom/img/map-border1.svg',\n width: 0.01,\n color: ''\n },\n plottingScale: {\n cell: 2,\n color: '#ffffff',\n show: true,\n isSelected: false,\n x: 0.87,\n y: 0.97\n },\n data: [{\n text: '',\n x: 0.02,\n y: 0.93,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n text: '',\n x: 0.02,\n y: 0.97,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n x: 0.02,\n y: 0.1,\n show: false,\n isSelected: false,\n url: '/custom/img/icon-compass1.svg',\n width: 0.1,\n height: 0.1\n }]\n }, {\n \"name\": \"模板二\",\n \"value\": \"模板二\",\n \"id\": \"2\",\n margin: 0.03,\n border: {\n show: true,\n url: '/custom/img/map-border2.svg',\n width: 0.01\n },\n title: {\n text: '标题二',\n height: 0.05,\n bgColor: '#5d5d5d',\n color: '#ffffff',\n show: true\n },\n plottingScale: {\n cell: 2,\n color: '#ffffff',\n show: true,\n isSelected: false,\n x: 0.02,\n y: 0.97\n },\n data: [{\n text: '',\n x: 0.88,\n y: 0.93,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n text: '',\n x: 0.87,\n y: 0.97,\n isSelected: false,\n show: true,\n color: '#ffffff',\n height: 0.03\n }, {\n x: 0.91,\n y: 0.1,\n show: true,\n isSelected: false,\n url: '/custom/img/icon-compass4.svg',\n width: 0.1,\n height: 0.1\n }]\n }];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01hcFByaW50L2RhdGFTb3VyY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL01hcFByaW50L2RhdGFTb3VyY2UuanM/NWI1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBnZXRUZW1wbGF0ZURhdGEodG9vbHMpIHtcclxuICByZXR1cm4gW1xyXG4gICAge1xyXG4gICAgICBcIm5hbWVcIjogXCLmqKHmnb/kuIBcIixcclxuICAgICAgXCJ2YWx1ZVwiOiBcIuaooeadv+S4gFwiLFxyXG4gICAgICBcImlkXCI6IFwiMVwiLFxyXG4gICAgICBtYXJnaW46IDAuMDMsXHJcbiAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgdGV4dDogJ+agh+mimOS4gCcsXHJcbiAgICAgICAgaGVpZ2h0OiAwLjA1LFxyXG4gICAgICAgIGJnQ29sb3I6ICcjNWQ1ZDVkJyxcclxuICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvcmRlcjoge1xyXG4gICAgICAgIHNob3c6IGZhbHNlLFxyXG4gICAgICAgIHVybDogJy9jdXN0b20vaW1nL21hcC1ib3JkZXIxLnN2ZycsXHJcbiAgICAgICAgd2lkdGg6IDAuMDEsXHJcbiAgICAgICAgY29sb3I6ICcnXHJcbiAgICAgIH0sXHJcbiAgICAgIHBsb3R0aW5nU2NhbGU6IHtcclxuICAgICAgICBjZWxsOiAyLFxyXG4gICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICB4OiAwLjg3LFxyXG4gICAgICAgIHk6IDAuOTcsXHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGE6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgIHg6IDAuMDIsXHJcbiAgICAgICAgICB5OiAwLjkzLFxyXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICAgIGhlaWdodDogMC4wM1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dDogJycsXHJcbiAgICAgICAgICB4OiAwLjAyLFxyXG4gICAgICAgICAgeTogMC45NyxcclxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgICBoZWlnaHQ6IDAuMDNcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHg6IDAuMDIsXHJcbiAgICAgICAgICB5OiAwLjEsXHJcbiAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgdXJsOiAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMS5zdmcnLFxyXG4gICAgICAgICAgd2lkdGg6IDAuMSxcclxuICAgICAgICAgIGhlaWdodDogMC4xXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcIm5hbWVcIjogXCLmqKHmnb/kuoxcIixcclxuICAgICAgXCJ2YWx1ZVwiOiBcIuaooeadv+S6jFwiLFxyXG4gICAgICBcImlkXCI6IFwiMlwiLFxyXG4gICAgICBtYXJnaW46IDAuMDMsXHJcbiAgICAgIGJvcmRlcjoge1xyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgdXJsOiAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjIuc3ZnJyxcclxuICAgICAgICB3aWR0aDogMC4wMSxcclxuICAgICAgfSxcclxuICAgICAgdGl0bGU6IHtcclxuICAgICAgICB0ZXh0OiAn5qCH6aKY5LqMJyxcclxuICAgICAgICBoZWlnaHQ6IDAuMDUsXHJcbiAgICAgICAgYmdDb2xvcjogJyM1ZDVkNWQnLFxyXG4gICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgcGxvdHRpbmdTY2FsZToge1xyXG4gICAgICAgIGNlbGw6IDIsXHJcbiAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIHg6IDAuMDIsXHJcbiAgICAgICAgeTogMC45NyxcclxuICAgICAgfSxcclxuICAgICAgZGF0YTogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRleHQ6ICcnLFxyXG4gICAgICAgICAgeDogMC44OCxcclxuICAgICAgICAgIHk6IDAuOTMsXHJcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgICAgaGVpZ2h0OiAwLjAzXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgIHg6IDAuODcsXHJcbiAgICAgICAgICB5OiAwLjk3LFxyXG4gICAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICAgIGhlaWdodDogMC4wM1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgeDogMC45MSxcclxuICAgICAgICAgIHk6IDAuMSxcclxuICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICBpc1NlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICAgIHVybDogJy9jdXN0b20vaW1nL2ljb24tY29tcGFzczQuc3ZnJyxcclxuICAgICAgICAgIHdpZHRoOiAwLjEsXHJcbiAgICAgICAgICBoZWlnaHQ6IDAuMVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfVxyXG4gIF1cclxufVxyXG5cclxuZXhwb3J0IHsgZ2V0VGVtcGxhdGVEYXRhIH07Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/MapPrint/dataSource.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/MapPrint/index.js":
-/*!**************************************!*\
- !*** ./src/Global/MapPrint/index.js ***!
- \**************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../Obj/Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _dataSource_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dataSource.js */ \"./src/Global/MapPrint/dataSource.js\");\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\nvar tools = new _Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();\nvar MapPrint = /*#__PURE__*/function () {\n function MapPrint(sdk, thumbnailImg, rectangle, originalImg, modify) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MapPrint);\n this.sdk = sdk;\n this.thumbnailImg = thumbnailImg;\n this.rectangle = rectangle;\n this.originalImg = originalImg;\n this.modify = modify;\n this.load();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MapPrint, [{\n key: \"load\",\n value: function () {\n var _load = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2() {\n var _this, exporting, templateData, _DialogObject, template, unitDistance, isLoad, borderImage, margin, svgText, title, border, data, plottingScale, compassList, contentElm, leftElm, rightElm, titleInputElm, titleCheckboxElm, unitInputElm, unitCheckboxElm, compassCheckboxElm, compassRadiosElm, plottingScaleCheckboxElm, mapBorderCheckboxElm, canvas, ctx, imgElm, _loop, i, borderColorPicker, jeDateObject, printDateCheckboxElm, mapBorderDataLegpElm, mapBorderObject, iActiveElm, closeBtn, exportBtn, initData, changeTemplate, changeMapBorder, changeMapBorderColor, isDragging, triggerRange, selectedElement, isDraggingElement, isResizingElement, resizeCorner, startX, startY, startY2, startX2, elementOffsetX, elementOffsetY, elementWidth, elementHeight, currentFontSize, getCanvasMouseY, getCanvasMouseX, getCorners, updateCanvas, drawBorder, drawSelectionBorder, getPlottingScale, getDateTimeString, exportMap;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n exportMap = function _exportMap() {\n var unitDistance2;\n var canvas2 = document.createElement('canvas');\n var ctx2 = canvas2.getContext('2d');\n var imgElm2 = new Image();\n imgElm2.src = _this.originalImg;\n imgElm2.onload = function () {\n if (isLoad) {\n return;\n }\n var title2 = _objectSpread({}, title);\n var data2 = JSON.parse(JSON.stringify(data));\n var plottingScale2 = _objectSpread({}, plottingScale);\n var border2 = _objectSpread({}, border);\n border2.width = border.width / imgElm.width * imgElm2.width;\n var margin2 = margin / imgElm.width * imgElm2.width;\n var allmargin = margin2;\n if (border2.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border2.width;\n }\n canvas2.width = imgElm2.width + allmargin * 2;\n canvas2.height = imgElm2.height + allmargin * 2;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n ctx2.rect(0, 0, canvas2.width, canvas2.height);\n ctx2.fillStyle = \"#ffffff\";\n ctx2.fill();\n ctx2.drawImage(imgElm2, allmargin, allmargin, imgElm2.width, imgElm2.height);\n // 标题内容\n if (title2.show) {\n var text = title2.text;\n var fontSize = Math.max(5, title2.height * imgElm2.height * 0.5);\n ctx2.font = \"\".concat(fontSize, \"px serif\");\n ctx2.fillStyle = title2.bgColor || '#5d5d5d';\n ctx2.fillRect(allmargin, allmargin, canvas2.width - allmargin * 2, title2.height * imgElm2.height);\n ctx2.fillStyle = title2.color || 'white';\n ctx2.textAlign = 'center';\n ctx2.textBaseline = 'middle';\n ctx2.fillText(text, canvas2.width / 2, title2.height * imgElm2.height / 2 + allmargin);\n }\n\n // 其他内容\n var _loop3 = function _loop3(_i15) {\n if (data2[_i15].show) {\n if ('text' in data2[_i15]) {\n ctx2.font = \"\".concat(imgElm2.height * data2[_i15].height, \"px serif\");\n ctx2.fillStyle = data2[_i15].color || 'white';\n ctx2.textAlign = 'left';\n ctx2.textBaseline = 'bottom';\n data2[_i15].width = ctx2.measureText(data2[_i15].text).width / imgElm2.height;\n ctx2.fillText(data2[_i15].text, imgElm2.width * data2[_i15].x + allmargin, imgElm2.height * data2[_i15].y + allmargin);\n } else if ('url' in data2[_i15]) {\n if (data[_i15].svg && data[_i15].svg.complete) {\n ctx2.drawImage(data[_i15].svg, imgElm2.width * data2[_i15].x + allmargin, imgElm2.height * data2[_i15].y + allmargin, imgElm2.height * data2[_i15].width, imgElm2.height * data2[_i15].height);\n } else {\n var svg = new Image();\n svg.src = tools.getSourceRootPath() + data2[_i15].url;\n svg.onload = function () {\n data2[_i15].svg = svg;\n ctx2.drawImage(svg, imgElm2.width * data2[_i15].x + allmargin, imgElm2.height * data2[_i15].y + allmargin, imgElm2.height * data2[_i15].width, imgElm2.height * data2[_i15].height);\n };\n }\n }\n }\n };\n for (var _i15 = 0; _i15 < data2.length; _i15++) {\n _loop3(_i15);\n }\n\n // 比例尺\n if (plottingScale2.show) {\n getPlottingScale();\n var plottingScale2X = imgElm2.width * plottingScale2.x + allmargin;\n var plottingScale2Y = imgElm2.height * plottingScale2.y + allmargin;\n var unit = 'm';\n // const fontSize = plottingScale2.width * 0.12;\n var _fontSize2 = imgElm2.width * 0.08 * 0.12;\n var spacing = imgElm2.width * 0.08 / plottingScale2.cell;\n var spacingDistance = Math.round(unitDistance2 * spacing);\n var spacingDistanceString = spacingDistance + '';\n if (spacingDistance < 10) {} else {\n spacingDistance = Number(spacingDistanceString[0]);\n for (var _i16 = 0; _i16 < spacingDistanceString.length - 1; _i16++) {\n spacingDistance = spacingDistance * 10;\n }\n spacing = spacingDistance / unitDistance2;\n }\n plottingScale2.width = spacing * plottingScale2.cell;\n plottingScale2.height = plottingScale2.width * 0.2;\n if (spacingDistance >= 1000) {\n unit = '㎞';\n spacingDistance = Math.round(spacingDistance / 1000);\n }\n var scaleY = plottingScale2Y;\n ctx2.beginPath();\n ctx2.moveTo(plottingScale2X, scaleY);\n ctx2.lineTo(plottingScale2X + plottingScale2.width, scaleY);\n ctx2.strokeStyle = plottingScale2.color;\n ctx2.lineWidth = plottingScale2.width * 0.01;\n ctx2.stroke();\n var tickX = 0;\n for (var _i17 = 0; _i17 <= plottingScale2.cell; _i17++) {\n tickX = plottingScale2X + _i17 * spacing;\n ctx2.beginPath();\n ctx2.moveTo(tickX, scaleY - plottingScale2.width * 0.1);\n ctx2.lineTo(tickX, scaleY);\n ctx2.strokeStyle = plottingScale2.color;\n ctx2.lineWidth = plottingScale2.width * 0.01;\n ctx2.stroke();\n ctx2.font = \"\".concat(_fontSize2, \"px Arial\");\n ctx2.fillStyle = plottingScale2.color;\n ctx2.textAlign = 'center';\n ctx2.textBaseline = 'bottom';\n ctx2.fillText(_i17 * spacingDistance, tickX, scaleY - plottingScale2.width * 0.1);\n }\n ctx2.font = \"\".concat(_fontSize2, \"px Arial\");\n ctx2.fillStyle = plottingScale2.color;\n ctx2.textAlign = 'left';\n ctx2.textBaseline = 'bottom';\n ctx2.fillText(unit, tickX + _fontSize2 * 1.2, scaleY - plottingScale2.width * 0.1);\n }\n\n // 边框\n if (border2.show && borderImage && borderImage.complete) {\n // 绘制四个角(裁剪成45度角)\n drawBorder2(ctx2, borderImage, margin2, margin2, border2.width, 'top', 1);\n drawBorder2(ctx2, borderImage, canvas2.width - border2.width - margin2, margin2, border2.width, 'right', 1);\n drawBorder2(ctx2, borderImage, canvas2.width - border2.width - margin2, canvas2.height - border2.width - margin2, border2.width, 'bottom', 1);\n drawBorder2(ctx2, borderImage, margin2, canvas2.height - border2.width - margin2, border2.width, 'left', 1);\n }\n function getPlottingScale() {\n if (!_this.rectangle) {\n return;\n }\n var westLng = Cesium.Math.toDegrees(_this.rectangle.west);\n var eastLng = Cesium.Math.toDegrees(_this.rectangle.east);\n var northLat = Cesium.Math.toDegrees(_this.rectangle.north);\n var southLat = Cesium.Math.toDegrees(_this.rectangle.south);\n var from = turf.point([westLng, northLat]);\n var to = turf.point([eastLng, northLat]);\n var distance = turf.distance(from, to, {\n units: 'kilometers'\n });\n unitDistance2 = distance * 1000 / imgElm2.width;\n }\n\n // 绘制边框\n function drawBorder2(ctx2, img, x, y, size, position) {\n var isStart = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;\n ctx2.save();\n ctx2.translate(x + size / 2, y + size / 2);\n\n // 根据位置设置旋转角度\n switch (position) {\n case 'right':\n ctx2.rotate(Math.PI / 2);\n break;\n case 'bottom':\n ctx2.rotate(Math.PI);\n break;\n case 'left':\n ctx2.rotate(3 * Math.PI / 2);\n break;\n }\n // 创建45度角的裁剪路径\n ctx2.beginPath();\n ctx2.moveTo(-size * isStart / 2, -size / 2);\n if (position === 'top' || position === 'bottom') {\n ctx2.lineTo(canvas2.width - margin2 * 2 - size / 2, -size / 2);\n ctx2.lineTo(canvas2.width - (margin2 + size) * 2 + size / 2, size / 2);\n } else {\n ctx2.lineTo(canvas2.height - margin2 * 2 - size / 2, -size / 2);\n ctx2.lineTo(canvas2.height - (margin2 + size) * 2 + size / 2, size / 2);\n }\n ctx2.lineTo(size * isStart / 2, size / 2);\n ctx2.closePath();\n ctx2.clip();\n var imgWidth = img.width / img.height * size;\n\n // 绘制图片\n ctx2.drawImage(img, -size / 2, -size / 2, imgWidth, size);\n var count;\n if (position === 'top' || position === 'bottom') {\n count = Math.ceil((canvas2.width - margin2 * 2 - border2.width * 2) / border2.width);\n } else {\n count = Math.ceil((canvas2.height - margin2 * 2 - border2.width * 2) / border2.width);\n }\n count++;\n for (var _i18 = 1; _i18 <= count; _i18++) {\n ctx2.drawImage(img, -size / 2 + imgWidth * _i18, -size / 2, imgWidth, size);\n }\n ctx2.restore();\n }\n\n // let dataURL = canvas2.toDataURL('image/jpeg', 0.95)\n // let downloadElement = document.createElement('a');\n // downloadElement.href = dataURL;\n // downloadElement.download = `高清出图-${getDateTimeString()}.jpg`;\n // document.body.appendChild(downloadElement);\n // downloadElement.click();\n // document.body.removeChild(downloadElement);\n // console.log('dataURL', dataURL)\n // URL.revokeObjectURL(dataURL);\n\n // 在释放资源后执行回调\n\n canvas2.toBlob(function (blob) {\n var url = URL.createObjectURL(blob);\n var downloadElement = document.createElement('a');\n downloadElement.href = url;\n downloadElement.download = \"\\u9AD8\\u6E05\\u51FA\\u56FE-\".concat(getDateTimeString(), \".png\");\n document.body.appendChild(downloadElement);\n downloadElement.click();\n document.body.removeChild(downloadElement);\n setTimeout(function () {\n exporting = false;\n exportBtn.innerHTML = '打印';\n }, 100);\n }, 'image/png', 0.95);\n\n // canvas2.toBlob(function (blob) {\n // let imgBlobData = URL.createObjectURL(blob);\n // let downloadElement = document.createElement('a');\n // downloadElement.href = imgBlobData;\n // downloadElement.download = `高清出图-${getDateTimeString()}.png`;\n // document.body.appendChild(downloadElement);\n // downloadElement.click();\n // document.body.removeChild(downloadElement);\n // URL.revokeObjectURL(imgBlobData);\n\n // // 在释放资源后执行回调\n // exporting = false;\n // exportBtn.innerHTML = '打印';\n // });\n };\n };\n getDateTimeString = function _getDateTimeString() {\n // 创建一个表示当前时间的 Date 对象\n var now = new Date();\n // 获取年份\n var year = now.getFullYear();\n // 获取月份(从 0 开始,所以要加 1),并将其转换为两位字符串,不足两位在前面补零\n var month = String(now.getMonth() + 1).padStart(2, '0');\n // 获取日期,并将其转换为两位字符串,不足两位在前面补零\n var day = String(now.getDate()).padStart(2, '0');\n // 获取小时,并将其转换为两位字符串,不足两位在前面补零\n var hours = String(now.getHours()).padStart(2, '0');\n // 获取分钟,并将其转换为两位字符串,不足两位在前面补零\n var minutes = String(now.getMinutes()).padStart(2, '0');\n // 获取秒,并将其转换为两位字符串,不足两位在前面补零\n var seconds = String(now.getSeconds()).padStart(2, '0');\n // 获取毫秒,并将其转换为三位字符串,不足三位在前面补零\n var milliseconds = String(now.getMilliseconds()).padStart(3, '0');\n // 将年、月、日、时、分、秒、毫秒拼接成所需的字符串\n return \"\".concat(year).concat(month).concat(day).concat(hours).concat(minutes).concat(seconds).concat(milliseconds);\n };\n getPlottingScale = function _getPlottingScale() {\n if (!_this.rectangle) {\n return;\n }\n var westLng = Cesium.Math.toDegrees(_this.rectangle.west);\n var eastLng = Cesium.Math.toDegrees(_this.rectangle.east);\n var northLat = Cesium.Math.toDegrees(_this.rectangle.north);\n var southLat = Cesium.Math.toDegrees(_this.rectangle.south);\n var from = turf.point([westLng, northLat]);\n var to = turf.point([eastLng, northLat]);\n var distance = turf.distance(from, to, {\n units: 'kilometers'\n });\n unitDistance = distance * 1000 / imgElm.width;\n };\n drawSelectionBorder = function _drawSelectionBorder(element) {\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n var cornerRadius = canvas.height * 0.005;\n ctx.strokeStyle = 'red';\n ctx.lineWidth = canvas.height * 0.002;\n if ('text' in element) {\n ctx.strokeRect(imgElm.width * element.x + allmargin, imgElm.height * element.y + allmargin - imgElm.height * element.height, imgElm.height * element.width, imgElm.height * element.height);\n } else if ('url' in element) {\n ctx.strokeRect(imgElm.width * element.x + allmargin, imgElm.height * element.y + allmargin, imgElm.height * element.width, imgElm.height * element.height);\n } else if (element === plottingScale) {\n ctx.strokeRect(imgElm.width * element.x + allmargin - plottingScale.width * 0.2, imgElm.height * element.y + allmargin - element.height - plottingScale.height * 0.5, element.width + plottingScale.width * 0.6, element.height + plottingScale.height);\n return;\n }\n var corners = getCorners(element, allmargin);\n ctx.fillStyle = 'red';\n corners.forEach(function (corner) {\n ctx.beginPath();\n ctx.arc(corner.x, corner.y, cornerRadius, 0, 2 * Math.PI);\n ctx.fill();\n });\n };\n drawBorder = function _drawBorder(ctx, img, x, y, size, position) {\n var isStart = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1;\n ctx.save();\n ctx.translate(x + size / 2, y + size / 2);\n\n // 根据位置设置旋转角度\n switch (position) {\n case 'right':\n ctx.rotate(Math.PI / 2);\n break;\n case 'bottom':\n ctx.rotate(Math.PI);\n break;\n case 'left':\n ctx.rotate(3 * Math.PI / 2);\n break;\n }\n // 创建45度角的裁剪路径\n ctx.beginPath();\n ctx.moveTo(-size * isStart / 2, -size / 2);\n if (position === 'top' || position === 'bottom') {\n ctx.lineTo(canvas.width - margin * 2 - size / 2, -size / 2);\n ctx.lineTo(canvas.width - (margin + size) * 2 + size / 2, size / 2);\n } else {\n ctx.lineTo(canvas.height - margin * 2 - size / 2, -size / 2);\n ctx.lineTo(canvas.height - (margin + size) * 2 + size / 2, size / 2);\n }\n ctx.lineTo(size * isStart / 2, size / 2);\n ctx.closePath();\n ctx.clip();\n var imgWidth = img.width / img.height * size;\n\n // 绘制图片\n ctx.drawImage(img, -size / 2, -size / 2, imgWidth, size);\n var count;\n if (position === 'top' || position === 'bottom') {\n count = Math.ceil((canvas.width - margin * 2 - border.width * 2) / border.width);\n } else {\n count = Math.ceil((canvas.height - margin * 2 - border.width * 2) / border.width);\n }\n count++;\n for (var _i10 = 1; _i10 <= count; _i10++) {\n ctx.drawImage(img, -size / 2 + imgWidth * _i10, -size / 2, imgWidth, size);\n }\n ctx.restore();\n };\n updateCanvas = function _updateCanvas() {\n if (isLoad) {\n return;\n }\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n canvas.width = imgElm.width + allmargin * 2;\n canvas.height = imgElm.height + allmargin * 2;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.rect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = \"#ffffff\";\n ctx.fill();\n ctx.drawImage(imgElm, allmargin, allmargin, imgElm.width, imgElm.height);\n\n // 标题内容\n if (title.show) {\n var text = title.text;\n var fontSize = Math.max(5, title.height * imgElm.height * 0.5);\n ctx.font = \"\".concat(fontSize, \"px serif\");\n // const textWidth = ctx.measureText(text).width;\n ctx.fillStyle = title.bgColor || '#5d5d5d';\n ctx.fillRect(allmargin, allmargin, canvas.width - allmargin * 2, title.height * imgElm.height);\n ctx.fillStyle = title.color || 'white';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, canvas.width / 2, title.height * imgElm.height / 2 + allmargin);\n }\n\n // 其他内容\n var _loop2 = function _loop2(_i7) {\n if (data[_i7].show) {\n if ('text' in data[_i7]) {\n ctx.font = \"\".concat(imgElm.height * data[_i7].height, \"px serif\");\n ctx.fillStyle = data[_i7].color || 'white';\n ctx.textAlign = 'left';\n ctx.textBaseline = 'bottom';\n data[_i7].width = ctx.measureText(data[_i7].text).width / imgElm.height;\n ctx.fillText(data[_i7].text, imgElm.width * data[_i7].x + allmargin, imgElm.height * data[_i7].y + allmargin);\n if (data[_i7].isSelected) {\n drawSelectionBorder(data[_i7]);\n }\n } else if ('url' in data[_i7]) {\n if (data[_i7].svg && data[_i7].svg.complete) {\n ctx.drawImage(data[_i7].svg, imgElm.width * data[_i7].x + allmargin, imgElm.height * data[_i7].y + allmargin, imgElm.height * data[_i7].width, imgElm.height * data[_i7].height);\n if (data[_i7].isSelected) {\n drawSelectionBorder(data[_i7]);\n }\n } else {\n var svg = new Image();\n svg.src = tools.getSourceRootPath() + data[_i7].url;\n svg.onload = function () {\n data[_i7].svg = svg;\n ctx.drawImage(svg, imgElm.width * data[_i7].x + allmargin, imgElm.height * data[_i7].y + allmargin, imgElm.height * data[_i7].width, imgElm.height * data[_i7].height);\n if (data[_i7].isSelected) {\n drawSelectionBorder(data[_i7]);\n }\n };\n }\n }\n }\n };\n for (var _i7 = 0; _i7 < data.length; _i7++) {\n _loop2(_i7);\n }\n\n // 比例尺\n if (plottingScale.show) {\n var _allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n _allmargin = _allmargin + border.width;\n }\n var plottingScaleX = imgElm.width * plottingScale.x + _allmargin;\n var plottingScaleY = imgElm.height * plottingScale.y + _allmargin;\n var unit = 'm';\n // const fontSize = plottingScale.width * 0.12;\n var _fontSize = imgElm.width * 0.08 * 0.12;\n var spacing = imgElm.width * 0.08 / plottingScale.cell;\n var spacingDistance = Math.round(unitDistance * spacing);\n var spacingDistanceString = spacingDistance + '';\n if (spacingDistance < 10) {} else {\n spacingDistance = Number(spacingDistanceString[0]);\n for (var _i8 = 0; _i8 < spacingDistanceString.length - 1; _i8++) {\n spacingDistance = spacingDistance * 10;\n }\n spacing = spacingDistance / unitDistance;\n }\n plottingScale.width = spacing * plottingScale.cell;\n plottingScale.height = plottingScale.width * 0.2;\n if (spacingDistance >= 1000) {\n unit = '㎞';\n spacingDistance = Math.round(spacingDistance / 1000);\n }\n var scaleY = plottingScaleY;\n ctx.beginPath();\n ctx.moveTo(plottingScaleX, scaleY);\n ctx.lineTo(plottingScaleX + plottingScale.width, scaleY);\n ctx.strokeStyle = plottingScale.color;\n ctx.lineWidth = plottingScale.width * 0.01;\n ctx.stroke();\n var tickX = 0;\n for (var _i9 = 0; _i9 <= plottingScale.cell; _i9++) {\n tickX = plottingScaleX + _i9 * spacing;\n ctx.beginPath();\n ctx.moveTo(tickX, scaleY - plottingScale.width * 0.1);\n ctx.lineTo(tickX, scaleY);\n ctx.strokeStyle = plottingScale.color;\n ctx.lineWidth = plottingScale.width * 0.01;\n ctx.stroke();\n ctx.font = \"\".concat(_fontSize, \"px Arial\");\n ctx.fillStyle = plottingScale.color;\n ctx.textAlign = 'center';\n ctx.textBaseline = 'bottom';\n ctx.fillText(_i9 * spacingDistance, tickX, scaleY - plottingScale.width * 0.1);\n }\n ctx.font = \"\".concat(_fontSize, \"px Arial\");\n ctx.fillStyle = plottingScale.color;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'bottom';\n ctx.fillText(unit, tickX + _fontSize * 1.2, scaleY - plottingScale.width * 0.1);\n if (plottingScale.isSelected) {\n drawSelectionBorder(plottingScale);\n }\n }\n\n // 边框\n if (border.show && borderImage && borderImage.complete) {\n // 绘制四个角(裁剪成45度角)\n drawBorder(ctx, borderImage, margin, margin, border.width, 'top', 1);\n drawBorder(ctx, borderImage, canvas.width - border.width - margin, margin, border.width, 'right', 1);\n drawBorder(ctx, borderImage, canvas.width - border.width - margin, canvas.height - border.width - margin, border.width, 'bottom', 1);\n drawBorder(ctx, borderImage, margin, canvas.height - border.width - margin, border.width, 'left', 1);\n }\n };\n getCorners = function _getCorners(element, allmargin) {\n var elementX = element.x * imgElm.width + allmargin;\n var elementY = element.y * imgElm.height + allmargin;\n var elementWidth = element.width * imgElm.height;\n var elementHeight = element.height * imgElm.height;\n if ('text' in element) {\n return [{\n x: elementX,\n y: elementY - elementHeight\n }, {\n x: elementX + elementWidth,\n y: elementY - elementHeight\n }, {\n x: elementX,\n y: elementY\n }, {\n x: elementX + elementWidth,\n y: elementY\n }];\n } else if ('url' in element) {\n return [{\n x: elementX,\n y: elementY\n }, {\n x: elementX + elementWidth,\n y: elementY\n }, {\n x: elementX,\n y: elementY + elementHeight\n }, {\n x: elementX + elementWidth,\n y: elementY + elementHeight\n }];\n } else {\n // 比例尺\n return [{\n x: elementX,\n y: elementY\n }, {\n x: elementX + elementWidth,\n y: elementY\n }, {\n x: elementX,\n y: elementY + elementHeight\n }, {\n x: elementX + elementWidth,\n y: elementY + elementHeight\n }];\n }\n };\n getCanvasMouseX = function _getCanvasMouseX(e) {\n var rect = canvas.getBoundingClientRect();\n var containerWidth = rect.width;\n var containerHeight = rect.height;\n var canvasWidth = canvas.width;\n var canvasHeight = canvas.height;\n var scale;\n if (canvasWidth / canvasHeight > containerWidth / containerHeight) {\n scale = containerWidth / canvasWidth;\n } else {\n scale = containerHeight / canvasHeight;\n }\n var scaledWidth = canvasWidth * scale;\n var scaledHeight = canvasHeight * scale;\n var offsetX = (containerWidth - scaledWidth) / 2;\n var offsetY = (containerHeight - scaledHeight) / 2;\n var clientX = e.clientX - rect.left - offsetX;\n return clientX / scale;\n };\n getCanvasMouseY = function _getCanvasMouseY(e) {\n var rect = canvas.getBoundingClientRect();\n var containerWidth = rect.width;\n var containerHeight = rect.height;\n var canvasWidth = canvas.width;\n var canvasHeight = canvas.height;\n var scale;\n if (canvasWidth / canvasHeight > containerWidth / containerHeight) {\n scale = containerWidth / canvasWidth;\n } else {\n scale = containerHeight / canvasHeight;\n }\n var scaledWidth = canvasWidth * scale;\n var scaledHeight = canvasHeight * scale;\n var offsetX = (containerWidth - scaledWidth) / 2;\n var offsetY = (containerHeight - scaledHeight) / 2;\n var clientY = e.clientY - rect.top - offsetY;\n return clientY / scale;\n };\n changeMapBorderColor = function _changeMapBorderColor(color) {\n border.color = color || '#000000';\n new YJColorPicker({\n el: contentElm.getElementsByClassName('border-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: false,\n //是否开启透明度\n defaultColor: border.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n changeMapBorderColor(color);\n },\n //点击确认按钮事件回调\n clear: function clear() {\n changeMapBorderColor('rgba(0,0,0,1)');\n } //点击清空按钮事件回调\n });\n var currentSvg;\n var svgDataUrl;\n if (color) {\n var colorRegex = /fill=\"[^\"]+\"/g;\n currentSvg = svgText.replace(colorRegex, \"fill=\\\"\".concat(color, \"\\\"\"));\n } else {\n currentSvg = svgText;\n }\n svgDataUrl = 'data:image/svg+xml;base64,' + btoa(Array.from(new TextEncoder().encode(currentSvg), function (byte) {\n return String.fromCharCode(byte);\n }).join(''));\n borderImage = new Image();\n borderImage.setAttribute('crossOrigin', 'anonymous');\n borderImage.src = svgDataUrl;\n borderImage.onload = function () {\n if (border.show) {\n updateCanvas();\n }\n };\n };\n changeMapBorder = function _changeMapBorder(v) {\n border.url = v;\n if (!border.url) {\n return;\n }\n borderImage = new Image();\n borderImage.setAttribute('crossOrigin', 'anonymous');\n if (border.url.endsWith('svg')) {\n fetch(tools.getSourceRootPath() + border.url).then(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!response.ok) {\n _context.next = 5;\n break;\n }\n _context.next = 3;\n return response.text();\n case 3:\n svgText = _context.sent;\n changeMapBorderColor(border.color);\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n borderImage.src = tools.getSourceRootPath() + border.url;\n borderImage.onload = function () {\n if (border.show) {\n updateCanvas();\n }\n };\n }\n };\n changeTemplate = function _changeTemplate(v) {\n template = v;\n templateData = Object(_dataSource_js__WEBPACK_IMPORTED_MODULE_8__[\"getTemplateData\"])(tools);\n for (var _i6 = 0; _i6 < templateData.length; _i6++) {\n if (templateData[_i6].id === template) {\n title = templateData[_i6].title || title;\n margin = !templateData[_i6].margin && templateData[_i6].margin != 0 ? margin : templateData[_i6].margin;\n data = templateData[_i6].data || data;\n border = templateData[_i6].border || border;\n border.show = _this.modify;\n border.color = border.color || '#000000';\n plottingScale = templateData[_i6].plottingScale || plottingScale;\n break;\n }\n }\n initData();\n updateCanvas();\n };\n initData = function _initData() {\n if (isLoad) {\n return;\n }\n margin = margin * imgElm.width;\n triggerRange = imgElm.height / 140;\n titleInputElm.value = title.text;\n titleCheckboxElm.checked = title.show;\n unitInputElm.value = data[1].text;\n unitCheckboxElm.checked = data[1].show;\n compassCheckboxElm.checked = data[2].show;\n for (var _i5 = 0; _i5 < compassList.length; _i5++) {\n if (compassList[_i5] === data[2].url) {\n compassRadiosElm[_i5].checked = true;\n }\n }\n plottingScaleCheckboxElm.checked = plottingScale.show;\n border.width = imgElm.width * border.width;\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n canvas.width = imgElm.width + allmargin * 2;\n canvas.height = imgElm.height + allmargin * 2;\n printDateCheckboxElm && (printDateCheckboxElm.checked = data[0].show);\n if (jeDateObject) {\n if (data[0].text) {\n jeDateObject.setValue(data[0].text);\n } else {\n jeDateObject.nowBtn && jeDateObject.nowBtn();\n data[0].text = jeDateObject.getValue();\n }\n }\n\n // plottingScale.x = imgElm.width * plottingScale.x;\n // plottingScale.y = imgElm.height * plottingScale.y;\n\n if (mapBorderObject && mapBorderDataLegpElm && iActiveElm) {\n mapBorderDataLegpElm.value = border.url;\n mapBorderObject.legp_searchActive(border.url);\n iActiveElm.style.backgroundImage = \"url(\".concat(tools.getSourceRootPath() + border.url, \")\");\n }\n mapBorderCheckboxElm.checked = border.show;\n borderImage = null;\n if (border && border.url) {\n changeMapBorder(border.url);\n }\n };\n _this = this;\n exporting = false;\n templateData = Object(_dataSource_js__WEBPACK_IMPORTED_MODULE_8__[\"getTemplateData\"])(tools);\n template = '1';\n isLoad = true;\n margin = 0;\n title = {\n text: '标题',\n height: 40,\n bgColor: '#5d5d5d',\n color: '#ffffff',\n show: true\n };\n border = {\n show: true,\n url: tools.getSourceRootPath() + '/custom/img/map-border1.svg',\n width: 20\n };\n data = [{\n text: '',\n x: 10,\n y: 100,\n height: 24,\n fontSize: 24,\n isSelected: false,\n show: true,\n color: '#ffffff'\n }, {\n text: '-',\n x: 10,\n y: 100,\n height: 24,\n fontSize: 24,\n isSelected: false,\n show: true,\n color: '#ffffff'\n }, {\n x: 10,\n y: 100,\n width: 100,\n height: 100,\n show: false,\n isSelected: false,\n url: tools.getSourceRootPath() + '/custom/img/icon-compass1.svg'\n }]; // 比例尺\n plottingScale = {\n cell: 2,\n color: '#ffffff',\n show: true,\n isSelected: false,\n x: 10,\n y: 100,\n width: 100\n };\n compassList = ['/custom/img/icon-compass1.svg', '/custom/img/icon-compass2.svg', '/custom/img/icon-compass3.svg', '/custom/img/icon-compass4.svg'];\n if (_DialogObject) {\n _DialogObject.close();\n _DialogObject = null;\n }\n _context3.next = 27;\n return new _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.sdk, {}, {\n title: '地图打印',\n left: '5%',\n top: '10%',\n ismove: false\n });\n case 27:\n _DialogObject = _context3.sent;\n _DialogObject._element.body.className = _DialogObject._element.body.className + ' map-print';\n contentElm = document.createElement('div');\n contentElm.innerHTML = \"\\n \\n
\\n
\\u56FE\\u4EF6\\u4FE1\\u606F
\\n
\\n
\\n
\\u6A21\\u677F\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u56FE\\u6846\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\u5730\\u56FE\\u8981\\u7D20
\\n
\\n
\\n
\\u6307\\u5317\\u9488\\n
\\n
\\n
\\n \".concat(function () {\n var str = '';\n for (var i = 0; i < compassList.length; i++) {\n var compass = tools.getSourceRootPath() + compassList[i];\n str += \"
\\n
\\n

\\n
\");\n }\n return str;\n }(), \"\\n
\\n
\\n
\\n
\\n
\\n
\\n \\u6BD4\\u4F8B\\u5C3A\\n \\n
\\n
\\n
\\n
\\n \\n \");\n _DialogObject.contentAppChild(contentElm);\n leftElm = contentElm.getElementsByClassName('left')[0];\n rightElm = contentElm.getElementsByClassName('right')[0]; // let mapImgBoxElm = rightElm.getElementsByClassName('map-img-box')[0]\n titleInputElm = leftElm.getElementsByClassName('title-input')[0];\n titleCheckboxElm = leftElm.getElementsByClassName('title-checkbox')[0];\n unitInputElm = leftElm.getElementsByClassName('unit-input')[0];\n unitCheckboxElm = leftElm.getElementsByClassName('unit-checkbox')[0];\n compassCheckboxElm = leftElm.getElementsByClassName('compass-checkbox')[0];\n compassRadiosElm = leftElm.getElementsByClassName('compass-radio');\n plottingScaleCheckboxElm = leftElm.getElementsByClassName('plotting-scale-checkbox')[0];\n mapBorderCheckboxElm = leftElm.getElementsByClassName('map-border-checkbox')[0];\n canvas = document.createElement('canvas');\n ctx = canvas.getContext('2d');\n rightElm.appendChild(canvas);\n imgElm = new Image();\n imgElm.src = this.thumbnailImg;\n imgElm.onload = function () {\n isLoad = false;\n getPlottingScale();\n changeTemplate(template);\n };\n\n // 标题\n titleInputElm.value = title.text;\n titleCheckboxElm.checked = title.show;\n titleInputElm.addEventListener('input', function () {\n title.text = this.value;\n if (imgElm.complete) {\n updateCanvas();\n }\n });\n titleCheckboxElm.addEventListener('change', function () {\n title.show = this.checked;\n if (imgElm.complete) {\n updateCanvas();\n }\n });\n\n // 制图单位\n unitInputElm.value = data[1].text;\n unitCheckboxElm.checked = data[1].show;\n unitInputElm.addEventListener('input', function () {\n data[1].text = this.value;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n unitCheckboxElm.addEventListener('change', function () {\n data[1].show = this.checked;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n\n // 指北针\n compassCheckboxElm.checked = data[2].show;\n compassCheckboxElm.addEventListener('change', function () {\n data[2].show = this.checked;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _loop(i) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _loop$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n compassRadiosElm[i].addEventListener('change', function () {\n if (this.checked) {\n data[2].svg = null;\n data[2].url = compassList[i];\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n }\n });\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _loop);\n });\n i = 0;\n case 60:\n if (!(i < compassRadiosElm.length)) {\n _context3.next = 65;\n break;\n }\n return _context3.delegateYield(_loop(i), \"t0\", 62);\n case 62:\n i++;\n _context3.next = 60;\n break;\n case 65:\n // 比例尺\n plottingScaleCheckboxElm.checked = plottingScale.show;\n plottingScaleCheckboxElm.addEventListener('change', function () {\n plottingScale.show = this.checked;\n if (imgElm && imgElm.complete) {\n updateCanvas();\n }\n });\n\n // 图框\n mapBorderCheckboxElm.checked = border.show;\n mapBorderCheckboxElm.addEventListener('change', function () {\n border.show = this.checked;\n if (borderImage && borderImage.complete) {\n updateCanvas();\n }\n });\n borderColorPicker = new YJColorPicker({\n el: contentElm.getElementsByClassName('border-color')[0],\n size: 'mini',\n //颜色box类型\n alpha: false,\n //是否开启透明度\n defaultColor: border.color,\n disabled: false,\n //是否禁止打开颜色选择器\n openPickerAni: 'opacity',\n //打开颜色选择器动画\n sure: function sure(color) {\n changeMapBorderColor(color);\n },\n //点击确认按钮事件回调\n clear: function clear() {\n changeMapBorderColor('rgba(0,0,0,1)');\n } //点击清空按钮事件回调\n });\n setTimeout(function () {\n closeBtn = _DialogObject._element.foot.getElementsByClassName('close')[0];\n exportBtn = document.createElement('button');\n exportBtn.className = 'export';\n exportBtn.innerHTML = '打印';\n leftElm.appendChild(closeBtn);\n leftElm.appendChild(exportBtn);\n exportBtn.addEventListener('click', function () {\n if (exporting) {\n return;\n }\n exporting = true;\n exportBtn.innerHTML = '打印';\n exportMap();\n // exporting = true\n // exportBtn.innerHTML = '打印'\n // let imgBlobData = canvas.toDataURL();\n // let downloadElement = document.createElement('a');\n // downloadElement.href = imgBlobData;\n // downloadElement.download = `高清出图-${getDateTimeString()}.png`;\n // document.body.appendChild(downloadElement);\n // downloadElement.click();\n // document.body.removeChild(downloadElement);\n // URL.revokeObjectURL(imgBlobData);\n });\n\n // 时间\n var printDateElm = contentElm.getElementsByClassName('print-date')[0];\n printDateCheckboxElm = contentElm.getElementsByClassName('print-date-checkbox')[0];\n printDateCheckboxElm.checked = data[0].show;\n printDateCheckboxElm.addEventListener('change', function () {\n data[0].show = this.checked;\n if (imgElm.complete) {\n updateCanvas();\n }\n });\n jeDateObject = jeDate(printDateElm, {\n format: \"YYYY-MM-DD\",\n isinitVal: true,\n isClear: false,\n donefun: function donefun(obj) {\n data[0].text = obj.val;\n if (imgElm.complete) {\n updateCanvas();\n }\n }\n });\n if (data[0].text) {\n jeDateObject.setValue(data[0].text);\n } else {\n jeDateObject.nowBtn && jeDateObject.nowBtn();\n data[0].text = jeDateObject.getValue();\n updateCanvas();\n }\n\n // 模板\n // let templateData = templateData\n var templateObject = Object(_Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__[\"legp\"])(_DialogObject._element.content.getElementsByClassName('template-box')[0], '.template');\n if (templateObject) {\n templateObject.legp_search(templateData);\n var templateDataLegpElm = _DialogObject._element.content.getElementsByClassName('template')[0].getElementsByTagName('input')[0];\n for (var _i = 0; _i < templateData.length; _i++) {\n if (templateData[_i].id == template) {\n templateDataLegpElm.value = templateData[_i].value;\n templateObject.legp_searchActive(templateData[_i].value);\n break;\n }\n }\n templateDataLegpElm.addEventListener('input', function () {\n for (var _i2 = 0; _i2 < templateData.length; _i2++) {\n if (templateData[_i2].value === templateDataLegpElm.value) {\n changeTemplate(templateData[_i2].id);\n break;\n }\n }\n });\n }\n\n // 图框\n var mapBorderData = [{\n name: \"\"),\n value: '/custom/img/map-border1.svg',\n key: 0\n }, {\n name: \"\"),\n value: '/custom/img/map-border2.svg',\n key: 1\n }, {\n name: \"\"),\n value: '/custom/img/map-border3.svg',\n key: 2\n }, {\n name: \"\"),\n value: '/custom/img/map-border4.svg',\n key: 3\n }, {\n name: \"\"),\n value: '/custom/img/map-border5.svg',\n key: 4\n }, {\n name: \"\"),\n value: '/custom/img/map-border6.svg',\n key: 5\n }];\n mapBorderObject = Object(_Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__[\"legp\"])(_DialogObject._element.content.getElementsByClassName('map-border-box')[0], '.map-border');\n if (mapBorderObject) {\n mapBorderObject.legp_search(mapBorderData);\n iActiveElm = document.createElement('span');\n iActiveElm.className = \"icon icon-active\";\n iActiveElm.style.width = 'calc(100% - 40px)';\n iActiveElm.style.height = 'calc(100% - 12px)';\n iActiveElm.style.position = 'absolute';\n iActiveElm.style.top = '6px';\n iActiveElm.style.left = '10px';\n iActiveElm.style.pointerEvents = 'none';\n iActiveElm.style.backgroundImage = \"url(\".concat(tools.getSourceRootPath() + border.url, \")\");\n iActiveElm.style.backgroundSize = 'auto 100%';\n iActiveElm.style.backgroundRepeat = 'repeat-x';\n _DialogObject._element.content.getElementsByClassName('map-border')[0].getElementsByClassName('cy_datalist')[0].appendChild(iActiveElm);\n mapBorderDataLegpElm = _DialogObject._element.content.getElementsByClassName('map-border')[0].getElementsByTagName('input')[0];\n mapBorderDataLegpElm.style.fontSize = 0;\n mapBorderDataLegpElm.style.color = 'transparent';\n for (var _i3 = 0; _i3 < mapBorderData.length; _i3++) {\n if (mapBorderData[_i3].value == border.url) {\n mapBorderDataLegpElm.value = mapBorderData[_i3].value;\n mapBorderObject.legp_searchActive(mapBorderData[_i3].value);\n break;\n }\n }\n mapBorderDataLegpElm.addEventListener('input', function () {\n for (var _i4 = 0; _i4 < mapBorderData.length; _i4++) {\n if (mapBorderData[_i4].value === mapBorderDataLegpElm.value) {\n iActiveElm.style.backgroundImage = \"url(\".concat(tools.getSourceRootPath() + mapBorderData[_i4].value, \")\");\n changeMapBorder(mapBorderData[_i4].value);\n break;\n }\n }\n });\n }\n }, 0);\n isDragging = false;\n triggerRange = 5;\n selectedElement = null;\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null; // 记录当前字体大小\n // 绘制边框\n canvas.addEventListener('mousedown', function (e) {\n var x = getCanvasMouseX(e);\n var y = getCanvasMouseY(e);\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n if (title.show) {\n // 检查是否点击了标题编辑触发区域\n if (y >= title.height * imgElm.height + allmargin - triggerRange && y <= title.height * imgElm.height + allmargin + triggerRange) {\n isDragging = true;\n\n // 先将所有元素的选中状态置为 false\n for (var _i11 = 0; _i11 < data.length; _i11++) {\n data[_i11].isSelected = false;\n }\n selectedElement = null;\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null;\n return;\n }\n }\n\n // 检查是否点击了边框角上的小圆点\n if (selectedElement && selectedElement !== plottingScale) {\n var cornerRadius = canvas.height * 0.005;\n var corners = getCorners(selectedElement, allmargin);\n corners.forEach(function (corner, index) {\n if (x >= corner.x - cornerRadius && x <= corner.x + cornerRadius && y >= corner.y - cornerRadius && y <= corner.y + cornerRadius) {\n isResizingElement = true;\n isDraggingElement = false;\n resizeCorner = index;\n startX = x;\n startY = y;\n elementWidth = selectedElement.width * imgElm.height;\n elementHeight = selectedElement.height * imgElm.height;\n if ('text' in selectedElement) {\n elementWidth = selectedElement.width * imgElm.height;\n currentFontSize = selectedElement.height;\n }\n }\n });\n }\n if (isResizingElement) {\n return;\n }\n\n // 先将所有元素的选中状态置为 false\n for (var _i12 = 0; _i12 < data.length; _i12++) {\n data[_i12].isSelected = false;\n }\n plottingScale.isSelected = false;\n selectedElement = null;\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null;\n for (var _i13 = data.length - 1; _i13 >= 0; _i13--) {\n if (data[_i13].show) {\n if ('text' in data[_i13]) {\n if (x >= imgElm.width * data[_i13].x + allmargin && x <= imgElm.width * data[_i13].x + allmargin + imgElm.height * data[_i13].width && y >= imgElm.height * data[_i13].y + allmargin - imgElm.height * data[_i13].height && y <= imgElm.height * data[_i13].y + allmargin) {\n selectedElement = data[_i13];\n data[_i13].isSelected = true;\n isDraggingElement = true;\n startX = x;\n startY = y;\n startY2 = imgElm.height * data[_i13].y - imgElm.height * data[_i13].height;\n startX2 = imgElm.width * data[_i13].x + imgElm.height * data[_i13].width;\n elementOffsetX = imgElm.width * data[_i13].x + allmargin;\n elementOffsetY = imgElm.height * data[_i13].y + allmargin;\n updateCanvas(); // 点击时重新绘制画布以显示边框\n break;\n }\n }\n if ('url' in data[_i13]) {\n if (data[_i13].svg && data[_i13].svg.complete && data[_i13].show) {\n if (x >= imgElm.width * data[_i13].x + allmargin && x <= imgElm.width * data[_i13].x + allmargin + imgElm.height * data[_i13].width && y >= imgElm.height * data[_i13].y + allmargin && y <= imgElm.height * data[_i13].y + allmargin + imgElm.height * data[_i13].height) {\n selectedElement = data[_i13];\n data[_i13].isSelected = true;\n isDraggingElement = true;\n startX = x;\n startY = y;\n startY2 = imgElm.height * data[_i13].y + imgElm.height * data[_i13].height;\n startX2 = imgElm.width * data[_i13].x + imgElm.height * data[_i13].width;\n elementOffsetX = imgElm.width * data[_i13].x + allmargin;\n elementOffsetY = imgElm.height * data[_i13].y + allmargin;\n updateCanvas(); // 点击时重新绘制画布以显示边框\n break;\n }\n }\n }\n }\n }\n if (plottingScale.show) {\n if (x >= imgElm.width * plottingScale.x + allmargin - plottingScale.width * 0.2 && x <= imgElm.width * plottingScale.x + allmargin - plottingScale.width * 0.2 + plottingScale.width + plottingScale.width * 0.6 && y >= imgElm.height * plottingScale.y + allmargin - plottingScale.height - plottingScale.height * 0.5 && y <= imgElm.height * plottingScale.y + allmargin - plottingScale.height * 0.5 + plottingScale.height) {\n selectedElement = plottingScale;\n plottingScale.isSelected = true;\n isDraggingElement = true;\n startX = x;\n startY = y;\n startY2 = imgElm.height * plottingScale.y + allmargin + plottingScale.height;\n startX2 = imgElm.width * plottingScale.x + allmargin + plottingScale.width;\n elementOffsetX = imgElm.width * plottingScale.x + allmargin;\n elementOffsetY = imgElm.height * plottingScale.y + allmargin;\n updateCanvas(); // 点击时重新绘制画布以显示边框\n }\n }\n\n // 如果点击在内容以外,重新绘制画布以移除边框\n if (!selectedElement) {\n updateCanvas();\n }\n });\n canvas.addEventListener('mousemove', function (e) {\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n var x = getCanvasMouseX(e);\n var y = getCanvasMouseY(e);\n if (x < 0 || y < 0 || x > canvas.width || y > canvas.height) {\n return;\n }\n if (title.show) {\n var _allmargin2 = margin;\n if (border.show && borderImage && borderImage.complete) {\n _allmargin2 = _allmargin2 + border.width;\n }\n if (y >= title.height * imgElm.height + _allmargin2 - triggerRange && y <= title.height * imgElm.height + _allmargin2 + triggerRange) {\n canvas.style.cursor = 'n-resize';\n } else {\n canvas.style.cursor = 'default';\n }\n if (isDragging) {\n title.height = Math.min(Math.max(y - _allmargin2, 30) / imgElm.height, 1);\n updateCanvas();\n }\n }\n if (isDraggingElement) {\n var dx = x - startX;\n var dy = y - startY;\n selectedElement.x = (elementOffsetX + dx - allmargin) / imgElm.width;\n selectedElement.y = (elementOffsetY + dy - allmargin) / imgElm.height;\n updateCanvas();\n }\n if (isResizingElement) {\n var _dx = x - startX;\n var _dy = y - startY;\n var scaleFactor;\n switch (resizeCorner) {\n case 0:\n // 左上角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth - _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n } else if ('url' in selectedElement) {\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n selectedElement.y = (startY2 - selectedElement.height * imgElm.height) / imgElm.height;\n selectedElement.width = Math.max(10, elementWidth - _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight - _dy) / imgElm.height;\n }\n break;\n case 1:\n // 右上角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth + _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n } else if ('url' in selectedElement) {\n selectedElement.width = Math.max(10, elementWidth + _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight - _dy) / imgElm.height;\n selectedElement.y = (startY2 - selectedElement.height * imgElm.height) / imgElm.height;\n }\n break;\n case 2:\n // 左下角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth - _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n selectedElement.y = (startY2 + selectedElement.height * imgElm.height) / imgElm.height;\n } else if ('url' in selectedElement) {\n selectedElement.x = (startX2 - selectedElement.width * imgElm.height) / imgElm.width;\n selectedElement.width = Math.max(10, elementWidth - _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight + _dy) / imgElm.height;\n }\n break;\n case 3:\n // 右下角\n if ('text' in selectedElement) {\n scaleFactor = (elementWidth + _dx) / elementWidth;\n selectedElement.height = Math.max(10 / imgElm.height, currentFontSize * scaleFactor);\n selectedElement.y = (startY2 + selectedElement.height * imgElm.height) / imgElm.height;\n } else if ('url' in selectedElement) {\n selectedElement.width = Math.max(10, elementWidth + _dx) / imgElm.height;\n selectedElement.height = Math.max(10, elementHeight + _dy) / imgElm.height;\n }\n break;\n }\n updateCanvas();\n }\n });\n document.addEventListener('mouseup', function () {\n isDragging = false;\n var allmargin = margin;\n if (border.show && borderImage && borderImage.complete) {\n allmargin = allmargin + border.width;\n }\n for (var _i14 = 0; _i14 < data.length; _i14++) {\n if (data[_i14].show && data[_i14].isSelected) {\n startY2 = imgElm.height * data[_i14].y - imgElm.height * data[_i14].height;\n startX2 = imgElm.width * data[_i14].x + imgElm.height * data[_i14].width;\n if ('url' in data[_i14]) {\n startY2 = imgElm.height * data[_i14].y + imgElm.height * data[_i14].height;\n startX2 = imgElm.width * data[_i14].x + imgElm.height * data[_i14].width;\n }\n elementOffsetX = data[_i14].x;\n elementOffsetY = data[_i14].y;\n }\n }\n if (plottingScale.show && plottingScale.isSelected) {\n startY2 = plottingScale.y + plottingScale.height;\n startX2 = plottingScale.x + plottingScale.width;\n elementOffsetX = plottingScale.x;\n elementOffsetY = plottingScale.y;\n }\n isDraggingElement = false;\n isResizingElement = false;\n resizeCorner = null;\n });\n case 80:\n case \"end\":\n return _context3.stop();\n }\n }, _callee2, this);\n }));\n function load() {\n return _load.apply(this, arguments);\n }\n return load;\n }()\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (MapPrint);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01hcFByaW50L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9NYXBQcmludC9pbmRleC5qcz8yYjVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vT2JqL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJztcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL09iai9FbGVtZW50L2RhdGFsaXN0J1xyXG5pbXBvcnQgeyBnZXRUZW1wbGF0ZURhdGEgfSBmcm9tICcuL2RhdGFTb3VyY2UuanMnXHJcblxyXG5sZXQgdG9vbHMgPSBuZXcgVG9vbHMoKTtcclxuXHJcblxyXG5jbGFzcyBNYXBQcmludCB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCB0aHVtYm5haWxJbWcsIHJlY3RhbmdsZSwgb3JpZ2luYWxJbWcsIG1vZGlmeSkge1xyXG4gICAgdGhpcy5zZGsgPSBzZGtcclxuICAgIHRoaXMudGh1bWJuYWlsSW1nID0gdGh1bWJuYWlsSW1nXHJcbiAgICB0aGlzLnJlY3RhbmdsZSA9IHJlY3RhbmdsZVxyXG4gICAgdGhpcy5vcmlnaW5hbEltZyA9IG9yaWdpbmFsSW1nXHJcbiAgICB0aGlzLm1vZGlmeSA9IG1vZGlmeVxyXG4gICAgdGhpcy5sb2FkKClcclxuICB9XHJcbiAgYXN5bmMgbG9hZCgpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgIGxldCBleHBvcnRpbmcgPSBmYWxzZTtcclxuICAgIGxldCB0ZW1wbGF0ZURhdGEgPSBnZXRUZW1wbGF0ZURhdGEodG9vbHMpXHJcbiAgICBsZXQgX0RpYWxvZ09iamVjdFxyXG4gICAgbGV0IHRlbXBsYXRlID0gJzEnXHJcbiAgICBsZXQgdW5pdERpc3RhbmNlXHJcbiAgICBsZXQgaXNMb2FkID0gdHJ1ZVxyXG4gICAgbGV0IGJvcmRlckltYWdlXHJcbiAgICBsZXQgbWFyZ2luID0gMFxyXG4gICAgbGV0IHN2Z1RleHRcclxuICAgIGxldCB0aXRsZSA9IHtcclxuICAgICAgdGV4dDogJ+agh+mimCcsXHJcbiAgICAgIGhlaWdodDogNDAsXHJcbiAgICAgIGJnQ29sb3I6ICcjNWQ1ZDVkJyxcclxuICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYm9yZGVyID0ge1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICB1cmw6IHRvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjEuc3ZnJyxcclxuICAgICAgd2lkdGg6IDIwLFxyXG4gICAgfVxyXG5cclxuICAgIGxldCBkYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGV4dDogJycsXHJcbiAgICAgICAgeDogMTAsXHJcbiAgICAgICAgeTogMTAwLFxyXG4gICAgICAgIGhlaWdodDogMjQsXHJcbiAgICAgICAgZm9udFNpemU6IDI0LFxyXG4gICAgICAgIGlzU2VsZWN0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRleHQ6ICctJyxcclxuICAgICAgICB4OiAxMCxcclxuICAgICAgICB5OiAxMDAsXHJcbiAgICAgICAgaGVpZ2h0OiAyNCxcclxuICAgICAgICBmb250U2l6ZTogMjQsXHJcbiAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgeDogMTAsXHJcbiAgICAgICAgeTogMTAwLFxyXG4gICAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICAgICAgaGVpZ2h0OiAxMDAsXHJcbiAgICAgICAgc2hvdzogZmFsc2UsXHJcbiAgICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgICAgdXJsOiB0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9jdXN0b20vaW1nL2ljb24tY29tcGFzczEuc3ZnJ1xyXG4gICAgICB9XHJcbiAgICBdXHJcblxyXG4gICAgLy8g5q+U5L6L5bC6XHJcbiAgICBsZXQgcGxvdHRpbmdTY2FsZSA9IHtcclxuICAgICAgY2VsbDogMixcclxuICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgaXNTZWxlY3RlZDogZmFsc2UsXHJcbiAgICAgIHg6IDEwLFxyXG4gICAgICB5OiAxMDAsXHJcbiAgICAgIHdpZHRoOiAxMDAsXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbXBhc3NMaXN0ID0gW1xyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMS5zdmcnLFxyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMi5zdmcnLFxyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzMy5zdmcnLFxyXG4gICAgICAnL2N1c3RvbS9pbWcvaWNvbi1jb21wYXNzNC5zdmcnXHJcbiAgICBdXHJcblxyXG4gICAgaWYgKF9EaWFsb2dPYmplY3QpIHtcclxuICAgICAgX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIF9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgICBfRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGlzLnNkaywge30sIHtcclxuICAgICAgdGl0bGU6ICflnLDlm77miZPljbAnLCBsZWZ0OiAnNSUnLCB0b3A6ICcxMCUnLCBpc21vdmU6IGZhbHNlXHJcbiAgICB9KVxyXG4gICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIG1hcC1wcmludCdcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGBcclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPuWbvuS7tuS/oeaBrzwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB0ZW1wbGF0ZS1ib3hcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7XCI+5qih5p2/PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVtcGxhdGVcIiBzdHlsZT1cIndpZHRoOiAyMTNweDtcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTZweDtcIj7moIfpopg8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRpdGxlLWlucHV0XCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidGl0bGUtY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWItuWbvuaXpeacnzwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicHJpbnQtZGF0ZVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJZWVlZLU1NLUREXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInByaW50LWRhdGUtY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWItuWbvuWNleS9jTwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidW5pdC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInVuaXQtY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIG1hcC1ib3JkZXItYm94XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O1wiPuWbvuahhjwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcC1ib3JkZXJcIiBzdHlsZT1cIndpZHRoOiAxNzNweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1jb2xvclwiIHN0eWxlPVwibWFyZ2luLXRvcDogM3B4O21hcmdpbi1sZWZ0OiAxMnB4O1wiPjwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtYXAtYm9yZGVyLWNoZWNrYm94XCIgdHlwZT1cImNoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTVweDtcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+5Zyw5Zu+6KaB57SgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDU2cHg7bWFyZ2luLXRvcDogOXB4O1wiPuaMh+WMl+mSiDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiY29tcGFzcy1jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMTFweDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4O2ZsZXgtd3JhcDogd3JhcDtcIj5cclxuICAgICAgICAgICAgICAkeygoKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0ciA9ICcnO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcGFzc0xpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbnN0IGNvbXBhc3MgPSB0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgY29tcGFzc0xpc3RbaV07XHJcbiAgICAgICAgICBzdHIgKz0gYDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O2FsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiY29tcGFzcy1yYWRpb1wiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7Y29tcGFzc31cIiBhbHQ9XCJcIiBzdHlsZT1cIndpZHRoOiAzOHB4OyBoZWlnaHQ6IDM4cHg7IG1hcmdpbjogMCA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PmBcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0clxyXG4gICAgICB9KSgpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA1NnB4O21hcmdpbi10b3A6IDlweDtcIj7mr5TkvovlsLo8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInBsb3R0aW5nLXNjYWxlLWNoZWNrYm94XCIgdHlwZT1cImNoZWNrYm94XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMXB4O1wiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1hcC1pbWctYm94XCI+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGA7XHJcbiAgICBfRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgbGV0IGxlZnRFbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xlZnQnKVswXVxyXG4gICAgbGV0IHJpZ2h0RWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyaWdodCcpWzBdXHJcbiAgICAvLyBsZXQgbWFwSW1nQm94RWxtID0gcmlnaHRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWFwLWltZy1ib3gnKVswXVxyXG4gICAgbGV0IHRpdGxlSW5wdXRFbG0gPSBsZWZ0RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RpdGxlLWlucHV0JylbMF1cclxuICAgIGxldCB0aXRsZUNoZWNrYm94RWxtID0gbGVmdEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0aXRsZS1jaGVja2JveCcpWzBdXHJcbiAgICBsZXQgdW5pdElucHV0RWxtID0gbGVmdEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd1bml0LWlucHV0JylbMF1cclxuICAgIGxldCB1bml0Q2hlY2tib3hFbG0gPSBsZWZ0RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3VuaXQtY2hlY2tib3gnKVswXVxyXG4gICAgbGV0IGNvbXBhc3NDaGVja2JveEVsbSA9IGxlZnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29tcGFzcy1jaGVja2JveCcpWzBdXHJcbiAgICBsZXQgY29tcGFzc1JhZGlvc0VsbSA9IGxlZnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29tcGFzcy1yYWRpbycpXHJcbiAgICBsZXQgcGxvdHRpbmdTY2FsZUNoZWNrYm94RWxtID0gbGVmdEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwbG90dGluZy1zY2FsZS1jaGVja2JveCcpWzBdXHJcbiAgICBsZXQgbWFwQm9yZGVyQ2hlY2tib3hFbG0gPSBsZWZ0RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21hcC1ib3JkZXItY2hlY2tib3gnKVswXVxyXG5cclxuXHJcbiAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICByaWdodEVsbS5hcHBlbmRDaGlsZChjYW52YXMpXHJcbiAgICBsZXQgaW1nRWxtID0gbmV3IEltYWdlKCk7XHJcbiAgICBpbWdFbG0uc3JjID0gdGhpcy50aHVtYm5haWxJbWdcclxuXHJcbiAgICBpbWdFbG0ub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICBpc0xvYWQgPSBmYWxzZVxyXG4gICAgICBnZXRQbG90dGluZ1NjYWxlKClcclxuICAgICAgY2hhbmdlVGVtcGxhdGUodGVtcGxhdGUpXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvLyDmoIfpophcclxuICAgIHRpdGxlSW5wdXRFbG0udmFsdWUgPSB0aXRsZS50ZXh0O1xyXG4gICAgdGl0bGVDaGVja2JveEVsbS5jaGVja2VkID0gdGl0bGUuc2hvdztcclxuICAgIHRpdGxlSW5wdXRFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRpdGxlLnRleHQgPSB0aGlzLnZhbHVlO1xyXG4gICAgICBpZiAoaW1nRWxtLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aXRsZUNoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgdGl0bGUuc2hvdyA9IHRoaXMuY2hlY2tlZDtcclxuICAgICAgaWYgKGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOWItuWbvuWNleS9jVxyXG4gICAgdW5pdElucHV0RWxtLnZhbHVlID0gZGF0YVsxXS50ZXh0O1xyXG4gICAgdW5pdENoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzFdLnNob3c7XHJcbiAgICB1bml0SW5wdXRFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGRhdGFbMV0udGV4dCA9IHRoaXMudmFsdWU7XHJcbiAgICAgIGlmIChpbWdFbG0gJiYgaW1nRWxtLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB1bml0Q2hlY2tib3hFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICBkYXRhWzFdLnNob3cgPSB0aGlzLmNoZWNrZWQ7XHJcbiAgICAgIGlmIChpbWdFbG0gJiYgaW1nRWxtLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICAvLyDmjIfljJfpkohcclxuICAgIGNvbXBhc3NDaGVja2JveEVsbS5jaGVja2VkID0gZGF0YVsyXS5zaG93O1xyXG4gICAgY29tcGFzc0NoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgZGF0YVsyXS5zaG93ID0gdGhpcy5jaGVja2VkO1xyXG4gICAgICBpZiAoaW1nRWxtICYmIGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBhc3NSYWRpb3NFbG0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29tcGFzc1JhZGlvc0VsbVtpXS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICAgICAgZGF0YVsyXS5zdmcgPSBudWxsXHJcbiAgICAgICAgICBkYXRhWzJdLnVybCA9IGNvbXBhc3NMaXN0W2ldXHJcbiAgICAgICAgICBpZiAoaW1nRWxtICYmIGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICAvLyDmr5TkvovlsLpcclxuICAgIHBsb3R0aW5nU2NhbGVDaGVja2JveEVsbS5jaGVja2VkID0gcGxvdHRpbmdTY2FsZS5zaG93O1xyXG4gICAgcGxvdHRpbmdTY2FsZUNoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgcGxvdHRpbmdTY2FsZS5zaG93ID0gdGhpcy5jaGVja2VkO1xyXG4gICAgICBpZiAoaW1nRWxtICYmIGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5Zu+5qGGXHJcbiAgICBtYXBCb3JkZXJDaGVja2JveEVsbS5jaGVja2VkID0gYm9yZGVyLnNob3c7XHJcbiAgICBtYXBCb3JkZXJDaGVja2JveEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGJvcmRlci5zaG93ID0gdGhpcy5jaGVja2VkO1xyXG4gICAgICBpZiAoYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgbGV0IGJvcmRlckNvbG9yUGlja2VyID0gbmV3IFlKQ29sb3JQaWNrZXIoe1xyXG4gICAgICBlbDogY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdib3JkZXItY29sb3InKVswXSxcclxuICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICBhbHBoYTogZmFsc2UsIC8v5piv5ZCm5byA5ZCv6YCP5piO5bqmXHJcbiAgICAgIGRlZmF1bHRDb2xvcjogYm9yZGVyLmNvbG9yLFxyXG4gICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgIG9wZW5QaWNrZXJBbmk6ICdvcGFjaXR5JywgLy/miZPlvIDpopzoibLpgInmi6nlmajliqjnlLtcclxuICAgICAgc3VyZTogY29sb3IgPT4ge1xyXG4gICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKGNvbG9yKVxyXG4gICAgICB9LCAvL+eCueWHu+ehruiupOaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgICBjbGVhcjogKCkgPT4ge1xyXG4gICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKCdyZ2JhKDAsMCwwLDEpJylcclxuICAgICAgfSAvL+eCueWHu+a4heepuuaMiemSruS6i+S7tuWbnuiwg1xyXG4gICAgfSlcclxuXHJcblxyXG5cclxuICAgIGxldCBqZURhdGVPYmplY3RcclxuXHJcblxyXG4gICAgbGV0IHByaW50RGF0ZUNoZWNrYm94RWxtXHJcbiAgICBsZXQgbWFwQm9yZGVyRGF0YUxlZ3BFbG1cclxuICAgIGxldCBtYXBCb3JkZXJPYmplY3RcclxuICAgIGxldCBpQWN0aXZlRWxtXHJcblxyXG4gICAgbGV0IGNsb3NlQnRuXHJcbiAgICBsZXQgZXhwb3J0QnRuXHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNsb3NlQnRuID0gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5mb290LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nsb3NlJylbMF1cclxuICAgICAgZXhwb3J0QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJylcclxuICAgICAgZXhwb3J0QnRuLmNsYXNzTmFtZSA9ICdleHBvcnQnO1xyXG4gICAgICBleHBvcnRCdG4uaW5uZXJIVE1MID0gJ+aJk+WNsCc7XHJcbiAgICAgIGxlZnRFbG0uYXBwZW5kQ2hpbGQoY2xvc2VCdG4pXHJcbiAgICAgIGxlZnRFbG0uYXBwZW5kQ2hpbGQoZXhwb3J0QnRuKVxyXG4gICAgICBleHBvcnRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKGV4cG9ydGluZykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGV4cG9ydGluZyA9IHRydWVcclxuICAgICAgICBleHBvcnRCdG4uaW5uZXJIVE1MID0gJzxzcGFuIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOiAwO2xlZnQ6IDA7Ym9yZGVyLXJhZGl1czogM3B4O2JhY2tncm91bmQtY29sb3I6ICM2Zjg5ODQ4ZjtcIj48c3ZnIGNsYXNzPVwiaWNvbi1sb2FkXCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tbG9hZFwiPjwvdXNlPjwvc3ZnPjwvc3Bhbj7miZPljbAnXHJcbiAgICAgICAgZXhwb3J0TWFwKClcclxuICAgICAgICAvLyBleHBvcnRpbmcgPSB0cnVlXHJcbiAgICAgICAgLy8gZXhwb3J0QnRuLmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDogMDtsZWZ0OiAwO2JvcmRlci1yYWRpdXM6IDNweDtiYWNrZ3JvdW5kLWNvbG9yOiAjNmY4OTg0OGY7XCI+PHN2ZyBjbGFzcz1cImljb24tbG9hZFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWxvYWRcIj48L3VzZT48L3N2Zz48L3NwYW4+5omT5Y2wJ1xyXG4gICAgICAgIC8vIGxldCBpbWdCbG9iRGF0YSA9IGNhbnZhcy50b0RhdGFVUkwoKTtcclxuICAgICAgICAvLyBsZXQgZG93bmxvYWRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIC8vIGRvd25sb2FkRWxlbWVudC5ocmVmID0gaW1nQmxvYkRhdGE7XHJcbiAgICAgICAgLy8gZG93bmxvYWRFbGVtZW50LmRvd25sb2FkID0gYOmrmOa4heWHuuWbvi0ke2dldERhdGVUaW1lU3RyaW5nKCl9LnBuZ2A7XHJcbiAgICAgICAgLy8gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZEVsZW1lbnQpO1xyXG4gICAgICAgIC8vIGRvd25sb2FkRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIC8vIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG93bmxvYWRFbGVtZW50KTtcclxuICAgICAgICAvLyBVUkwucmV2b2tlT2JqZWN0VVJMKGltZ0Jsb2JEYXRhKTtcclxuICAgICAgfSlcclxuXHJcblxyXG4gICAgICAvLyDml7bpl7RcclxuICAgICAgbGV0IHByaW50RGF0ZUVsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncHJpbnQtZGF0ZScpWzBdXHJcbiAgICAgIHByaW50RGF0ZUNoZWNrYm94RWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwcmludC1kYXRlLWNoZWNrYm94JylbMF1cclxuXHJcbiAgICAgIHByaW50RGF0ZUNoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzBdLnNob3c7XHJcbiAgICAgIHByaW50RGF0ZUNoZWNrYm94RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkYXRhWzBdLnNob3cgPSB0aGlzLmNoZWNrZWQ7XHJcbiAgICAgICAgaWYgKGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgICAgdXBkYXRlQ2FudmFzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGplRGF0ZU9iamVjdCA9IGplRGF0ZShwcmludERhdGVFbG0sIHtcclxuICAgICAgICBmb3JtYXQ6IFwiWVlZWS1NTS1ERFwiLFxyXG4gICAgICAgIGlzaW5pdFZhbDogdHJ1ZSxcclxuICAgICAgICBpc0NsZWFyOiBmYWxzZSxcclxuICAgICAgICBkb25lZnVuOiBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgICBkYXRhWzBdLnRleHQgPSBvYmoudmFsO1xyXG4gICAgICAgICAgaWYgKGltZ0VsbS5jb21wbGV0ZSkge1xyXG4gICAgICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChkYXRhWzBdLnRleHQpIHtcclxuICAgICAgICBqZURhdGVPYmplY3Quc2V0VmFsdWUoZGF0YVswXS50ZXh0KVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGplRGF0ZU9iamVjdC5ub3dCdG4gJiYgamVEYXRlT2JqZWN0Lm5vd0J0bigpXHJcbiAgICAgICAgZGF0YVswXS50ZXh0ID0gamVEYXRlT2JqZWN0LmdldFZhbHVlKClcclxuICAgICAgICB1cGRhdGVDYW52YXMoKVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgLy8g5qih5p2/XHJcbiAgICAgIC8vIGxldCB0ZW1wbGF0ZURhdGEgPSB0ZW1wbGF0ZURhdGFcclxuICAgICAgbGV0IHRlbXBsYXRlT2JqZWN0ID0gbGVncChcclxuICAgICAgICBfRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmNvbnRlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgICAgICAgICd0ZW1wbGF0ZS1ib3gnXHJcbiAgICAgICAgKVswXSxcclxuICAgICAgICAnLnRlbXBsYXRlJ1xyXG4gICAgICApXHJcbiAgICAgIGlmICh0ZW1wbGF0ZU9iamVjdCkge1xyXG4gICAgICAgIHRlbXBsYXRlT2JqZWN0LmxlZ3Bfc2VhcmNoKHRlbXBsYXRlRGF0YSlcclxuICAgICAgICBsZXQgdGVtcGxhdGVEYXRhTGVncEVsbSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RlbXBsYXRlJylbMF1cclxuICAgICAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcGxhdGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGVtcGxhdGVEYXRhW2ldLmlkID09IHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YUxlZ3BFbG0udmFsdWUgPSB0ZW1wbGF0ZURhdGFbaV0udmFsdWVcclxuICAgICAgICAgICAgdGVtcGxhdGVPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgICAgICAgICAgdGVtcGxhdGVEYXRhW2ldLnZhbHVlXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcGxhdGVEYXRhTGVncEVsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcGxhdGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0ZW1wbGF0ZURhdGFbaV0udmFsdWUgPT09IHRlbXBsYXRlRGF0YUxlZ3BFbG0udmFsdWUpIHtcclxuICAgICAgICAgICAgICBjaGFuZ2VUZW1wbGF0ZSh0ZW1wbGF0ZURhdGFbaV0uaWQpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWbvuahhlxyXG4gICAgICBsZXQgbWFwQm9yZGVyRGF0YSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBgPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHt0b29scy5nZXRTb3VyY2VSb290UGF0aCgpfS9jdXN0b20vaW1nL21hcC1ib3JkZXIxLnN2Zyk7YmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1wiPjwvc3Bhbj5gLFxyXG4gICAgICAgICAgdmFsdWU6ICcvY3VzdG9tL2ltZy9tYXAtYm9yZGVyMS5zdmcnLFxyXG4gICAgICAgICAga2V5OiAwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogYDxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1pbWFnZTogdXJsKCR7dG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKX0vY3VzdG9tL2ltZy9tYXAtYm9yZGVyMi5zdmcpO2JhY2tncm91bmQtc2l6ZTogYXV0byAxMDAlO2JhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcIj48L3NwYW4+YCxcclxuICAgICAgICAgIHZhbHVlOiAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjIuc3ZnJyxcclxuICAgICAgICAgIGtleTogMSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IGA8c3BhbiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCl9L2N1c3RvbS9pbWcvbWFwLWJvcmRlcjMuc3ZnKTtiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XCI+PC9zcGFuPmAsXHJcbiAgICAgICAgICB2YWx1ZTogJy9jdXN0b20vaW1nL21hcC1ib3JkZXIzLnN2ZycsXHJcbiAgICAgICAgICBrZXk6IDIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBgPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHt0b29scy5nZXRTb3VyY2VSb290UGF0aCgpfS9jdXN0b20vaW1nL21hcC1ib3JkZXI0LnN2Zyk7YmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1wiPjwvc3Bhbj5gLFxyXG4gICAgICAgICAgdmFsdWU6ICcvY3VzdG9tL2ltZy9tYXAtYm9yZGVyNC5zdmcnLFxyXG4gICAgICAgICAga2V5OiAzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogYDxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1pbWFnZTogdXJsKCR7dG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKX0vY3VzdG9tL2ltZy9tYXAtYm9yZGVyNS5zdmcpO2JhY2tncm91bmQtc2l6ZTogYXV0byAxMDAlO2JhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcIj48L3NwYW4+YCxcclxuICAgICAgICAgIHZhbHVlOiAnL2N1c3RvbS9pbWcvbWFwLWJvcmRlcjUuc3ZnJyxcclxuICAgICAgICAgIGtleTogNCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IGA8c3BhbiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCl9L2N1c3RvbS9pbWcvbWFwLWJvcmRlcjYuc3ZnKTtiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XCI+PC9zcGFuPmAsXHJcbiAgICAgICAgICB2YWx1ZTogJy9jdXN0b20vaW1nL21hcC1ib3JkZXI2LnN2ZycsXHJcbiAgICAgICAgICBrZXk6IDUsXHJcbiAgICAgICAgfSxcclxuICAgICAgXVxyXG4gICAgICBtYXBCb3JkZXJPYmplY3QgPSBsZWdwKFxyXG4gICAgICAgIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgJ21hcC1ib3JkZXItYm94J1xyXG4gICAgICAgIClbMF0sXHJcbiAgICAgICAgJy5tYXAtYm9yZGVyJ1xyXG4gICAgICApXHJcbiAgICAgIGlmIChtYXBCb3JkZXJPYmplY3QpIHtcclxuICAgICAgICBtYXBCb3JkZXJPYmplY3QubGVncF9zZWFyY2gobWFwQm9yZGVyRGF0YSlcclxuICAgICAgICBpQWN0aXZlRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5jbGFzc05hbWUgPSBcImljb24gaWNvbi1hY3RpdmVcIlxyXG4gICAgICAgIGlBY3RpdmVFbG0uc3R5bGUud2lkdGggPSAnY2FsYygxMDAlIC0gNDBweCknXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5oZWlnaHQgPSAnY2FsYygxMDAlIC0gMTJweCknXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLnRvcCA9ICc2cHgnXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5sZWZ0ID0gJzEwcHgnXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXHJcbiAgICAgICAgaUFjdGl2ZUVsbS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGJvcmRlci51cmx9KWBcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLmJhY2tncm91bmRTaXplID0gJ2F1dG8gMTAwJSdcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSAncmVwZWF0LXgnXHJcbiAgICAgICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50XHJcbiAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWFwLWJvcmRlcicpWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2N5X2RhdGFsaXN0JylbMF0uYXBwZW5kQ2hpbGQoaUFjdGl2ZUVsbSlcclxuICAgICAgICBtYXBCb3JkZXJEYXRhTGVncEVsbSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudFxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21hcC1ib3JkZXInKVswXVxyXG4gICAgICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpWzBdXHJcbiAgICAgICAgbWFwQm9yZGVyRGF0YUxlZ3BFbG0uc3R5bGUuZm9udFNpemUgPSAwXHJcbiAgICAgICAgbWFwQm9yZGVyRGF0YUxlZ3BFbG0uc3R5bGUuY29sb3IgPSAndHJhbnNwYXJlbnQnXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXBCb3JkZXJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAobWFwQm9yZGVyRGF0YVtpXS52YWx1ZSA9PSBib3JkZXIudXJsKSB7XHJcbiAgICAgICAgICAgIG1hcEJvcmRlckRhdGFMZWdwRWxtLnZhbHVlID0gbWFwQm9yZGVyRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICBtYXBCb3JkZXJPYmplY3QubGVncF9zZWFyY2hBY3RpdmUoXHJcbiAgICAgICAgICAgICAgbWFwQm9yZGVyRGF0YVtpXS52YWx1ZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1hcEJvcmRlckRhdGFMZWdwRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXBCb3JkZXJEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXBCb3JkZXJEYXRhW2ldLnZhbHVlID09PSBtYXBCb3JkZXJEYXRhTGVncEVsbS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGlBY3RpdmVFbG0uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyBtYXBCb3JkZXJEYXRhW2ldLnZhbHVlfSlgXHJcbiAgICAgICAgICAgICAgY2hhbmdlTWFwQm9yZGVyKG1hcEJvcmRlckRhdGFbaV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG5cclxuICAgIGZ1bmN0aW9uIGluaXREYXRhKCkge1xyXG4gICAgICBpZiAoaXNMb2FkKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbWFyZ2luID0gbWFyZ2luICogaW1nRWxtLndpZHRoXHJcbiAgICAgIHRyaWdnZXJSYW5nZSA9IGltZ0VsbS5oZWlnaHQgLyAxNDA7XHJcblxyXG4gICAgICB0aXRsZUlucHV0RWxtLnZhbHVlID0gdGl0bGUudGV4dDtcclxuICAgICAgdGl0bGVDaGVja2JveEVsbS5jaGVja2VkID0gdGl0bGUuc2hvdztcclxuICAgICAgdW5pdElucHV0RWxtLnZhbHVlID0gZGF0YVsxXS50ZXh0O1xyXG4gICAgICB1bml0Q2hlY2tib3hFbG0uY2hlY2tlZCA9IGRhdGFbMV0uc2hvdztcclxuICAgICAgY29tcGFzc0NoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzJdLnNob3c7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcGFzc0xpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY29tcGFzc0xpc3RbaV0gPT09IGRhdGFbMl0udXJsKSB7XHJcbiAgICAgICAgICBjb21wYXNzUmFkaW9zRWxtW2ldLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHBsb3R0aW5nU2NhbGVDaGVja2JveEVsbS5jaGVja2VkID0gcGxvdHRpbmdTY2FsZS5zaG93O1xyXG5cclxuICAgICAgYm9yZGVyLndpZHRoID0gaW1nRWxtLndpZHRoICogYm9yZGVyLndpZHRoXHJcbiAgICAgIGxldCBhbGxtYXJnaW4gPSBtYXJnaW5cclxuICAgICAgaWYgKGJvcmRlci5zaG93ICYmIGJvcmRlckltYWdlICYmIGJvcmRlckltYWdlLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgYWxsbWFyZ2luID0gYWxsbWFyZ2luICsgYm9yZGVyLndpZHRoXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNhbnZhcy53aWR0aCA9IGltZ0VsbS53aWR0aCArIChhbGxtYXJnaW4gKiAyKVxyXG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaW1nRWxtLmhlaWdodCArIChhbGxtYXJnaW4gKiAyKVxyXG5cclxuICAgICAgcHJpbnREYXRlQ2hlY2tib3hFbG0gJiYgKHByaW50RGF0ZUNoZWNrYm94RWxtLmNoZWNrZWQgPSBkYXRhWzBdLnNob3cpO1xyXG4gICAgICBpZiAoamVEYXRlT2JqZWN0KSB7XHJcbiAgICAgICAgaWYgKGRhdGFbMF0udGV4dCkge1xyXG4gICAgICAgICAgamVEYXRlT2JqZWN0LnNldFZhbHVlKGRhdGFbMF0udGV4dClcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBqZURhdGVPYmplY3Qubm93QnRuICYmIGplRGF0ZU9iamVjdC5ub3dCdG4oKVxyXG4gICAgICAgICAgZGF0YVswXS50ZXh0ID0gamVEYXRlT2JqZWN0LmdldFZhbHVlKClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHBsb3R0aW5nU2NhbGUueCA9IGltZ0VsbS53aWR0aCAqIHBsb3R0aW5nU2NhbGUueDtcclxuICAgICAgLy8gcGxvdHRpbmdTY2FsZS55ID0gaW1nRWxtLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUueTtcclxuXHJcblxyXG4gICAgICBpZiAobWFwQm9yZGVyT2JqZWN0ICYmIG1hcEJvcmRlckRhdGFMZWdwRWxtICYmIGlBY3RpdmVFbG0pIHtcclxuICAgICAgICBtYXBCb3JkZXJEYXRhTGVncEVsbS52YWx1ZSA9IGJvcmRlci51cmw7XHJcbiAgICAgICAgbWFwQm9yZGVyT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKFxyXG4gICAgICAgICAgYm9yZGVyLnVybFxyXG4gICAgICAgIClcclxuICAgICAgICBpQWN0aXZlRWxtLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoJHt0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgYm9yZGVyLnVybH0pYFxyXG4gICAgICB9XHJcbiAgICAgIG1hcEJvcmRlckNoZWNrYm94RWxtLmNoZWNrZWQgPSBib3JkZXIuc2hvdztcclxuICAgICAgYm9yZGVySW1hZ2UgPSBudWxsXHJcbiAgICAgIGlmIChib3JkZXIgJiYgYm9yZGVyLnVybCkge1xyXG4gICAgICAgIGNoYW5nZU1hcEJvcmRlcihib3JkZXIudXJsKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY2hhbmdlVGVtcGxhdGUodikge1xyXG4gICAgICB0ZW1wbGF0ZSA9IHZcclxuICAgICAgdGVtcGxhdGVEYXRhID0gZ2V0VGVtcGxhdGVEYXRhKHRvb2xzKVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlbXBsYXRlRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0ZW1wbGF0ZURhdGFbaV0uaWQgPT09IHRlbXBsYXRlKSB7XHJcbiAgICAgICAgICB0aXRsZSA9IHRlbXBsYXRlRGF0YVtpXS50aXRsZSB8fCB0aXRsZVxyXG4gICAgICAgICAgbWFyZ2luID0gKCghdGVtcGxhdGVEYXRhW2ldLm1hcmdpbiAmJiB0ZW1wbGF0ZURhdGFbaV0ubWFyZ2luICE9IDApID8gbWFyZ2luIDogdGVtcGxhdGVEYXRhW2ldLm1hcmdpbilcclxuICAgICAgICAgIGRhdGEgPSB0ZW1wbGF0ZURhdGFbaV0uZGF0YSB8fCBkYXRhXHJcbiAgICAgICAgICBib3JkZXIgPSB0ZW1wbGF0ZURhdGFbaV0uYm9yZGVyIHx8IGJvcmRlclxyXG4gICAgICAgICAgYm9yZGVyLnNob3cgPSBfdGhpcy5tb2RpZnlcclxuICAgICAgICAgIGJvcmRlci5jb2xvciA9IGJvcmRlci5jb2xvciB8fCAnIzAwMDAwMCdcclxuICAgICAgICAgIHBsb3R0aW5nU2NhbGUgPSB0ZW1wbGF0ZURhdGFbaV0ucGxvdHRpbmdTY2FsZSB8fCBwbG90dGluZ1NjYWxlXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpbml0RGF0YSgpXHJcbiAgICAgIHVwZGF0ZUNhbnZhcygpXHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY2hhbmdlTWFwQm9yZGVyKHYpIHtcclxuICAgICAgYm9yZGVyLnVybCA9IHZcclxuICAgICAgaWYgKCFib3JkZXIudXJsKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgYm9yZGVySW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgYm9yZGVySW1hZ2Uuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKTtcclxuICAgICAgaWYgKGJvcmRlci51cmwuZW5kc1dpdGgoJ3N2ZycpKSB7XHJcbiAgICAgICAgZmV0Y2godG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGJvcmRlci51cmwpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgc3ZnVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcclxuICAgICAgICAgICAgY2hhbmdlTWFwQm9yZGVyQ29sb3IoYm9yZGVyLmNvbG9yKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYm9yZGVySW1hZ2Uuc3JjID0gdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGJvcmRlci51cmw7XHJcbiAgICAgICAgYm9yZGVySW1hZ2Uub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGJvcmRlci5zaG93KSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUNhbnZhcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGNoYW5nZU1hcEJvcmRlckNvbG9yKGNvbG9yKSB7XHJcbiAgICAgIGJvcmRlci5jb2xvciA9IGNvbG9yIHx8ICcjMDAwMDAwJ1xyXG4gICAgICBuZXcgWUpDb2xvclBpY2tlcih7XHJcbiAgICAgICAgZWw6IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYm9yZGVyLWNvbG9yJylbMF0sXHJcbiAgICAgICAgc2l6ZTogJ21pbmknLCAvL+minOiJsmJveOexu+Wei1xyXG4gICAgICAgIGFscGhhOiBmYWxzZSwgLy/mmK/lkKblvIDlkK/pgI/mmI7luqZcclxuICAgICAgICBkZWZhdWx0Q29sb3I6IGJvcmRlci5jb2xvcixcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsIC8v5piv5ZCm56aB5q2i5omT5byA6aKc6Imy6YCJ5oup5ZmoXHJcbiAgICAgICAgb3BlblBpY2tlckFuaTogJ29wYWNpdHknLCAvL+aJk+W8gOminOiJsumAieaLqeWZqOWKqOeUu1xyXG4gICAgICAgIHN1cmU6IGNvbG9yID0+IHtcclxuICAgICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKGNvbG9yKVxyXG4gICAgICAgIH0sIC8v54K55Ye756Gu6K6k5oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcclxuICAgICAgICAgIGNoYW5nZU1hcEJvcmRlckNvbG9yKCdyZ2JhKDAsMCwwLDEpJylcclxuICAgICAgICB9IC8v54K55Ye75riF56m65oyJ6ZKu5LqL5Lu25Zue6LCDXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBjdXJyZW50U3ZnXHJcbiAgICAgIGxldCBzdmdEYXRhVXJsXHJcbiAgICAgIGlmIChjb2xvcikge1xyXG4gICAgICAgIGNvbnN0IGNvbG9yUmVnZXggPSAvZmlsbD1cIlteXCJdK1wiL2c7XHJcbiAgICAgICAgY3VycmVudFN2ZyA9IHN2Z1RleHQucmVwbGFjZShjb2xvclJlZ2V4LCBgZmlsbD1cIiR7Y29sb3J9XCJgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjdXJyZW50U3ZnID0gc3ZnVGV4dFxyXG4gICAgICB9XHJcbiAgICAgIHN2Z0RhdGFVcmwgPSAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwnICtcclxuICAgICAgICBidG9hKEFycmF5LmZyb20obmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGN1cnJlbnRTdmcpLFxyXG4gICAgICAgICAgKGJ5dGUpID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZSkpLmpvaW4oJycpKTtcclxuICAgICAgYm9yZGVySW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgYm9yZGVySW1hZ2Uuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKTtcclxuICAgICAgYm9yZGVySW1hZ2Uuc3JjID0gc3ZnRGF0YVVybDtcclxuICAgICAgYm9yZGVySW1hZ2Uub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChib3JkZXIuc2hvdykge1xyXG4gICAgICAgICAgdXBkYXRlQ2FudmFzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBsZXQgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gICAgbGV0IHRyaWdnZXJSYW5nZSA9IDU7XHJcbiAgICBsZXQgc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcclxuICAgIGxldCBpc0RyYWdnaW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgbGV0IGlzUmVzaXppbmdFbGVtZW50ID0gZmFsc2U7XHJcbiAgICBsZXQgcmVzaXplQ29ybmVyID0gbnVsbDtcclxuICAgIGxldCBzdGFydFgsIHN0YXJ0WSwgc3RhcnRZMiwgc3RhcnRYMjtcclxuICAgIGxldCBlbGVtZW50T2Zmc2V0WCwgZWxlbWVudE9mZnNldFk7XHJcbiAgICBsZXQgZWxlbWVudFdpZHRoLCBlbGVtZW50SGVpZ2h0O1xyXG4gICAgbGV0IGN1cnJlbnRGb250U2l6ZTsgLy8g6K6w5b2V5b2T5YmN5a2X5L2T5aSn5bCPXHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q2FudmFzTW91c2VZKGUpIHtcclxuICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSByZWN0LmhlaWdodDtcclxuICAgICAgY29uc3QgY2FudmFzV2lkdGggPSBjYW52YXMud2lkdGg7XHJcbiAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IGNhbnZhcy5oZWlnaHQ7XHJcblxyXG4gICAgICBsZXQgc2NhbGU7XHJcbiAgICAgIGlmIChjYW52YXNXaWR0aCAvIGNhbnZhc0hlaWdodCA+IGNvbnRhaW5lcldpZHRoIC8gY29udGFpbmVySGVpZ2h0KSB7XHJcbiAgICAgICAgc2NhbGUgPSBjb250YWluZXJXaWR0aCAvIGNhbnZhc1dpZHRoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNjYWxlID0gY29udGFpbmVySGVpZ2h0IC8gY2FudmFzSGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzY2FsZWRXaWR0aCA9IGNhbnZhc1dpZHRoICogc2NhbGU7XHJcbiAgICAgIGNvbnN0IHNjYWxlZEhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHNjYWxlO1xyXG4gICAgICBjb25zdCBvZmZzZXRYID0gKGNvbnRhaW5lcldpZHRoIC0gc2NhbGVkV2lkdGgpIC8gMjtcclxuICAgICAgY29uc3Qgb2Zmc2V0WSA9IChjb250YWluZXJIZWlnaHQgLSBzY2FsZWRIZWlnaHQpIC8gMjtcclxuXHJcbiAgICAgIGNvbnN0IGNsaWVudFkgPSBlLmNsaWVudFkgLSByZWN0LnRvcCAtIG9mZnNldFk7XHJcbiAgICAgIHJldHVybiBjbGllbnRZIC8gc2NhbGU7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Q2FudmFzTW91c2VYKGUpIHtcclxuICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSByZWN0LmhlaWdodDtcclxuICAgICAgY29uc3QgY2FudmFzV2lkdGggPSBjYW52YXMud2lkdGg7XHJcbiAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IGNhbnZhcy5oZWlnaHQ7XHJcblxyXG4gICAgICBsZXQgc2NhbGU7XHJcbiAgICAgIGlmIChjYW52YXNXaWR0aCAvIGNhbnZhc0hlaWdodCA+IGNvbnRhaW5lcldpZHRoIC8gY29udGFpbmVySGVpZ2h0KSB7XHJcbiAgICAgICAgc2NhbGUgPSBjb250YWluZXJXaWR0aCAvIGNhbnZhc1dpZHRoO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNjYWxlID0gY29udGFpbmVySGVpZ2h0IC8gY2FudmFzSGVpZ2h0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzY2FsZWRXaWR0aCA9IGNhbnZhc1dpZHRoICogc2NhbGU7XHJcbiAgICAgIGNvbnN0IHNjYWxlZEhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHNjYWxlO1xyXG4gICAgICBjb25zdCBvZmZzZXRYID0gKGNvbnRhaW5lcldpZHRoIC0gc2NhbGVkV2lkdGgpIC8gMjtcclxuICAgICAgY29uc3Qgb2Zmc2V0WSA9IChjb250YWluZXJIZWlnaHQgLSBzY2FsZWRIZWlnaHQpIC8gMjtcclxuXHJcbiAgICAgIGNvbnN0IGNsaWVudFggPSBlLmNsaWVudFggLSByZWN0LmxlZnQgLSBvZmZzZXRYO1xyXG4gICAgICByZXR1cm4gY2xpZW50WCAvIHNjYWxlO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldENvcm5lcnMoZWxlbWVudCwgYWxsbWFyZ2luKSB7XHJcbiAgICAgIGxldCBlbGVtZW50WCA9IGVsZW1lbnQueCAqIGltZ0VsbS53aWR0aCArIGFsbG1hcmdpbjtcclxuICAgICAgbGV0IGVsZW1lbnRZID0gZWxlbWVudC55ICogaW1nRWxtLmhlaWdodCArIGFsbG1hcmdpbjtcclxuICAgICAgbGV0IGVsZW1lbnRXaWR0aCA9IGVsZW1lbnQud2lkdGggKiBpbWdFbG0uaGVpZ2h0O1xyXG4gICAgICBsZXQgZWxlbWVudEhlaWdodCA9IGVsZW1lbnQuaGVpZ2h0ICogaW1nRWxtLmhlaWdodDtcclxuICAgICAgaWYgKCd0ZXh0JyBpbiBlbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgIHsgeDogZWxlbWVudFgsIHk6IGVsZW1lbnRZIC0gZWxlbWVudEhlaWdodCB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgLSBlbGVtZW50SGVpZ2h0IH0sXHJcbiAgICAgICAgICB7IHg6IGVsZW1lbnRYLCB5OiBlbGVtZW50WSB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIH0gZWxzZSBpZiAoJ3VybCcgaW4gZWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7IHg6IGVsZW1lbnRYLCB5OiBlbGVtZW50WSB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgfSxcclxuICAgICAgICAgIHsgeDogZWxlbWVudFgsIHk6IGVsZW1lbnRZICsgZWxlbWVudEhlaWdodCB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgKyBlbGVtZW50SGVpZ2h0IH1cclxuICAgICAgICBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIOavlOS+i+WwulxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7IHg6IGVsZW1lbnRYLCB5OiBlbGVtZW50WSB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgfSxcclxuICAgICAgICAgIHsgeDogZWxlbWVudFgsIHk6IGVsZW1lbnRZICsgZWxlbWVudEhlaWdodCB9LFxyXG4gICAgICAgICAgeyB4OiBlbGVtZW50WCArIGVsZW1lbnRXaWR0aCwgeTogZWxlbWVudFkgKyBlbGVtZW50SGVpZ2h0IH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVDYW52YXMoKSB7XHJcbiAgICAgIGlmIChpc0xvYWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGFsbG1hcmdpbiA9IG1hcmdpblxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FudmFzLndpZHRoID0gaW1nRWxtLndpZHRoICsgKGFsbG1hcmdpbiAqIDIpXHJcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWdFbG0uaGVpZ2h0ICsgKGFsbG1hcmdpbiAqIDIpXHJcbiAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgICAgY3R4LnJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgICAgY3R4LmZpbGxTdHlsZSA9IFwiI2ZmZmZmZlwiO1xyXG4gICAgICBjdHguZmlsbCgpO1xyXG4gICAgICBjdHguZHJhd0ltYWdlKGltZ0VsbSwgYWxsbWFyZ2luLCBhbGxtYXJnaW4sIGltZ0VsbS53aWR0aCwgaW1nRWxtLmhlaWdodCk7XHJcblxyXG4gICAgICAvLyDmoIfpopjlhoXlrrlcclxuICAgICAgaWYgKHRpdGxlLnNob3cpIHtcclxuICAgICAgICBjb25zdCB0ZXh0ID0gdGl0bGUudGV4dDtcclxuICAgICAgICBjb25zdCBmb250U2l6ZSA9IE1hdGgubWF4KDUsICh0aXRsZS5oZWlnaHQgKiBpbWdFbG0uaGVpZ2h0KSAqIDAuNSk7XHJcbiAgICAgICAgY3R4LmZvbnQgPSBgJHtmb250U2l6ZX1weCBzZXJpZmA7XHJcbiAgICAgICAgLy8gY29uc3QgdGV4dFdpZHRoID0gY3R4Lm1lYXN1cmVUZXh0KHRleHQpLndpZHRoO1xyXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aXRsZS5iZ0NvbG9yIHx8ICcjNWQ1ZDVkJztcclxuXHJcbiAgICAgICAgY3R4LmZpbGxSZWN0KGFsbG1hcmdpbiwgYWxsbWFyZ2luLCBjYW52YXMud2lkdGggLSAoYWxsbWFyZ2luICogMiksICh0aXRsZS5oZWlnaHQgKiBpbWdFbG0uaGVpZ2h0KSk7XHJcblxyXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aXRsZS5jb2xvciB8fCAnd2hpdGUnO1xyXG4gICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcclxuICAgICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ21pZGRsZSc7XHJcbiAgICAgICAgY3R4LmZpbGxUZXh0KHRleHQsIGNhbnZhcy53aWR0aCAvIDIsICgodGl0bGUuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkgLyAyKSArIGFsbG1hcmdpbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWFtuS7luWGheWuuVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS5zaG93KSB7XHJcbiAgICAgICAgICBpZiAoJ3RleHQnIGluIGRhdGFbaV0pIHtcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSBgJHtpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHR9cHggc2VyaWZgO1xyXG4gICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZGF0YVtpXS5jb2xvciB8fCAnd2hpdGUnO1xyXG4gICAgICAgICAgICBjdHgudGV4dEFsaWduID0gJ2xlZnQnO1xyXG4gICAgICAgICAgICBjdHgudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XHJcbiAgICAgICAgICAgIGRhdGFbaV0ud2lkdGggPSBjdHgubWVhc3VyZVRleHQoZGF0YVtpXS50ZXh0KS53aWR0aCAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGN0eC5maWxsVGV4dChkYXRhW2ldLnRleHQsIChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgKyBhbGxtYXJnaW4pO1xyXG4gICAgICAgICAgICBpZiAoZGF0YVtpXS5pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgZHJhd1NlbGVjdGlvbkJvcmRlcihkYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gZGF0YVtpXSkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YVtpXS5zdmcgJiYgZGF0YVtpXS5zdmcuY29tcGxldGUpIHtcclxuICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGRhdGFbaV0uc3ZnLCAoaW1nRWxtLndpZHRoICogZGF0YVtpXS54KSArIGFsbG1hcmdpbiwgKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgYWxsbWFyZ2luLCBpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS53aWR0aCwgaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0uaGVpZ2h0KTtcclxuICAgICAgICAgICAgICBpZiAoZGF0YVtpXS5pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBkcmF3U2VsZWN0aW9uQm9yZGVyKGRhdGFbaV0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBzdmcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICAgICAgICBzdmcuc3JjID0gdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArIGRhdGFbaV0udXJsO1xyXG4gICAgICAgICAgICAgIHN2Zy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhW2ldLnN2ZyA9IHN2Z1xyXG4gICAgICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShzdmcsIChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgKyBhbGxtYXJnaW4sIGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLndpZHRoLCBpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGFbaV0uaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICBkcmF3U2VsZWN0aW9uQm9yZGVyKGRhdGFbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g5q+U5L6L5bC6XHJcbiAgICAgIGlmIChwbG90dGluZ1NjYWxlLnNob3cpIHtcclxuICAgICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luXHJcbiAgICAgICAgaWYgKGJvcmRlci5zaG93ICYmIGJvcmRlckltYWdlICYmIGJvcmRlckltYWdlLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBsb3R0aW5nU2NhbGVYID0gaW1nRWxtLndpZHRoICogcGxvdHRpbmdTY2FsZS54ICsgYWxsbWFyZ2luXHJcbiAgICAgICAgbGV0IHBsb3R0aW5nU2NhbGVZID0gaW1nRWxtLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUueSArIGFsbG1hcmdpblxyXG4gICAgICAgIGxldCB1bml0ID0gJ20nXHJcbiAgICAgICAgLy8gY29uc3QgZm9udFNpemUgPSBwbG90dGluZ1NjYWxlLndpZHRoICogMC4xMjtcclxuICAgICAgICBjb25zdCBmb250U2l6ZSA9IGltZ0VsbS53aWR0aCAqIDAuMDggKiAwLjEyO1xyXG4gICAgICAgIGxldCBzcGFjaW5nID0gaW1nRWxtLndpZHRoICogMC4wOCAvIHBsb3R0aW5nU2NhbGUuY2VsbDtcclxuICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZCh1bml0RGlzdGFuY2UgKiBzcGFjaW5nKTtcclxuICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlU3RyaW5nID0gc3BhY2luZ0Rpc3RhbmNlICsgJydcclxuICAgICAgICBpZiAoc3BhY2luZ0Rpc3RhbmNlIDwgMTApIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBzcGFjaW5nRGlzdGFuY2UgPSBOdW1iZXIoc3BhY2luZ0Rpc3RhbmNlU3RyaW5nWzBdKVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGFjaW5nRGlzdGFuY2VTdHJpbmcubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNwYWNpbmdEaXN0YW5jZSA9IHNwYWNpbmdEaXN0YW5jZSAqIDEwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzcGFjaW5nID0gc3BhY2luZ0Rpc3RhbmNlIC8gdW5pdERpc3RhbmNlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBsb3R0aW5nU2NhbGUud2lkdGggPSBzcGFjaW5nICogcGxvdHRpbmdTY2FsZS5jZWxsO1xyXG4gICAgICAgIHBsb3R0aW5nU2NhbGUuaGVpZ2h0ID0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMjtcclxuICAgICAgICBpZiAoc3BhY2luZ0Rpc3RhbmNlID49IDEwMDApIHtcclxuICAgICAgICAgIHVuaXQgPSAn446eJ1xyXG4gICAgICAgICAgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZChzcGFjaW5nRGlzdGFuY2UgLyAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2NhbGVZID0gcGxvdHRpbmdTY2FsZVk7XHJcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGN0eC5tb3ZlVG8ocGxvdHRpbmdTY2FsZVgsIHNjYWxlWSk7XHJcbiAgICAgICAgY3R4LmxpbmVUbyhwbG90dGluZ1NjYWxlWCArIHBsb3R0aW5nU2NhbGUud2lkdGgsIHNjYWxlWSk7XHJcbiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gcGxvdHRpbmdTY2FsZS5jb2xvcjtcclxuICAgICAgICBjdHgubGluZVdpZHRoID0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMDE7XHJcbiAgICAgICAgY3R4LnN0cm9rZSgpO1xyXG5cclxuICAgICAgICBsZXQgdGlja1ggPSAwXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcGxvdHRpbmdTY2FsZS5jZWxsOyBpKyspIHtcclxuICAgICAgICAgIHRpY2tYID0gcGxvdHRpbmdTY2FsZVggKyBpICogc3BhY2luZztcclxuICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGN0eC5tb3ZlVG8odGlja1gsIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUud2lkdGggKiAwLjEpO1xyXG4gICAgICAgICAgY3R4LmxpbmVUbyh0aWNrWCwgc2NhbGVZKTtcclxuICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHBsb3R0aW5nU2NhbGUuY29sb3I7XHJcbiAgICAgICAgICBjdHgubGluZVdpZHRoID0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMDE7XHJcbiAgICAgICAgICBjdHguc3Ryb2tlKCk7XHJcblxyXG4gICAgICAgICAgY3R4LmZvbnQgPSBgJHtmb250U2l6ZX1weCBBcmlhbGA7XHJcbiAgICAgICAgICBjdHguZmlsbFN0eWxlID0gcGxvdHRpbmdTY2FsZS5jb2xvcjtcclxuICAgICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcclxuICAgICAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcclxuICAgICAgICAgIGN0eC5maWxsVGV4dChpICogc3BhY2luZ0Rpc3RhbmNlLCB0aWNrWCwgc2NhbGVZIC0gcGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjdHguZm9udCA9IGAke2ZvbnRTaXplfXB4IEFyaWFsYDtcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gcGxvdHRpbmdTY2FsZS5jb2xvcjtcclxuICAgICAgICBjdHgudGV4dEFsaWduID0gJ2xlZnQnO1xyXG4gICAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcclxuICAgICAgICBjdHguZmlsbFRleHQodW5pdCwgdGlja1ggKyAoZm9udFNpemUgKiAxLjIpLCBzY2FsZVkgLSBwbG90dGluZ1NjYWxlLndpZHRoICogMC4xKTtcclxuXHJcbiAgICAgICAgaWYgKHBsb3R0aW5nU2NhbGUuaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgZHJhd1NlbGVjdGlvbkJvcmRlcihwbG90dGluZ1NjYWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOi+ueahhlxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAvLyDnu5jliLblm5vkuKrop5LvvIjoo4HliarmiJA0NeW6puinku+8iVxyXG4gICAgICAgIGRyYXdCb3JkZXIoY3R4LCBib3JkZXJJbWFnZSwgbWFyZ2luLCBtYXJnaW4sIGJvcmRlci53aWR0aCwgJ3RvcCcsIDEpO1xyXG4gICAgICAgIGRyYXdCb3JkZXIoY3R4LCBib3JkZXJJbWFnZSwgY2FudmFzLndpZHRoIC0gYm9yZGVyLndpZHRoIC0gbWFyZ2luLCBtYXJnaW4sIGJvcmRlci53aWR0aCwgJ3JpZ2h0JywgMSk7XHJcbiAgICAgICAgZHJhd0JvcmRlcihjdHgsIGJvcmRlckltYWdlLCBjYW52YXMud2lkdGggLSBib3JkZXIud2lkdGggLSBtYXJnaW4sIGNhbnZhcy5oZWlnaHQgLSBib3JkZXIud2lkdGggLSBtYXJnaW4sIGJvcmRlci53aWR0aCwgJ2JvdHRvbScsIDEpO1xyXG4gICAgICAgIGRyYXdCb3JkZXIoY3R4LCBib3JkZXJJbWFnZSwgbWFyZ2luLCBjYW52YXMuaGVpZ2h0IC0gYm9yZGVyLndpZHRoIC0gbWFyZ2luLCBib3JkZXIud2lkdGgsICdsZWZ0JywgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDnu5jliLbovrnmoYZcclxuICAgIGZ1bmN0aW9uIGRyYXdCb3JkZXIoY3R4LCBpbWcsIHgsIHksIHNpemUsIHBvc2l0aW9uLCBpc1N0YXJ0ID0gMSkge1xyXG4gICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICBjdHgudHJhbnNsYXRlKHggKyBzaXplIC8gMiwgeSArIHNpemUgLyAyKTtcclxuXHJcbiAgICAgIC8vIOagueaNruS9jee9ruiuvue9ruaXi+i9rOinkuW6plxyXG4gICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XHJcbiAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgY3R4LnJvdGF0ZShNYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgICAgY3R4LnJvdGF0ZShNYXRoLlBJKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICAgICAgY3R4LnJvdGF0ZSgzICogTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy8g5Yib5bu6NDXluqbop5LnmoToo4Hliarot6/lvoRcclxuICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjdHgubW92ZVRvKCgtc2l6ZSAqIGlzU3RhcnQpIC8gMiwgLXNpemUgLyAyKTtcclxuICAgICAgaWYgKHBvc2l0aW9uID09PSAndG9wJyB8fCBwb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcclxuICAgICAgICBjdHgubGluZVRvKGNhbnZhcy53aWR0aCAtIChtYXJnaW4gKiAyKSAtIChzaXplIC8gMiksIC1zaXplIC8gMik7XHJcbiAgICAgICAgY3R4LmxpbmVUbyhjYW52YXMud2lkdGggLSAobWFyZ2luICsgc2l6ZSkgKiAyICsgKHNpemUgLyAyKSwgc2l6ZSAvIDIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGN0eC5saW5lVG8oY2FudmFzLmhlaWdodCAtIChtYXJnaW4gKiAyKSAtIChzaXplIC8gMiksIC1zaXplIC8gMik7XHJcbiAgICAgICAgY3R4LmxpbmVUbyhjYW52YXMuaGVpZ2h0IC0gKG1hcmdpbiArIHNpemUpICogMiArIChzaXplIC8gMiksIHNpemUgLyAyKTtcclxuICAgICAgfVxyXG4gICAgICBjdHgubGluZVRvKChzaXplICogaXNTdGFydCkgLyAyLCBzaXplIC8gMik7XHJcbiAgICAgIGN0eC5jbG9zZVBhdGgoKTtcclxuICAgICAgY3R4LmNsaXAoKTtcclxuXHJcbiAgICAgIGxldCBpbWdXaWR0aCA9IGltZy53aWR0aCAvIGltZy5oZWlnaHQgKiBzaXplXHJcblxyXG4gICAgICAvLyDnu5jliLblm77niYdcclxuICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIC1zaXplIC8gMiwgLXNpemUgLyAyLCBpbWdXaWR0aCwgc2l6ZSk7XHJcblxyXG4gICAgICBsZXQgY291bnQ7XHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcgfHwgcG9zaXRpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgY291bnQgPSBNYXRoLmNlaWwoKGNhbnZhcy53aWR0aCAtIChtYXJnaW4gKiAyKSAtIChib3JkZXIud2lkdGggKiAyKSkgLyBib3JkZXIud2lkdGgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvdW50ID0gTWF0aC5jZWlsKChjYW52YXMuaGVpZ2h0IC0gKG1hcmdpbiAqIDIpIC0gKGJvcmRlci53aWR0aCAqIDIpKSAvIGJvcmRlci53aWR0aCk7XHJcbiAgICAgIH1cclxuICAgICAgY291bnQrK1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykge1xyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAtc2l6ZSAvIDIgKyBpbWdXaWR0aCAqIGksIC1zaXplIC8gMiwgaW1nV2lkdGgsIHNpemUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjdHgucmVzdG9yZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRyYXdTZWxlY3Rpb25Cb3JkZXIoZWxlbWVudCkge1xyXG4gICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luXHJcbiAgICAgIGlmIChib3JkZXIuc2hvdyAmJiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS5jb21wbGV0ZSkge1xyXG4gICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlci53aWR0aFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNvcm5lclJhZGl1cyA9IGNhbnZhcy5oZWlnaHQgKiAwLjAwNTtcclxuICAgICAgY3R4LnN0cm9rZVN0eWxlID0gJ3JlZCc7XHJcbiAgICAgIGN0eC5saW5lV2lkdGggPSBjYW52YXMuaGVpZ2h0ICogMC4wMDI7XHJcbiAgICAgIGlmICgndGV4dCcgaW4gZWxlbWVudCkge1xyXG4gICAgICAgIGN0eC5zdHJva2VSZWN0KChpbWdFbG0ud2lkdGggKiBlbGVtZW50LnggKyBhbGxtYXJnaW4pLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQueSArIGFsbG1hcmdpbikgLSAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQuaGVpZ2h0KSwgKGltZ0VsbS5oZWlnaHQgKiBlbGVtZW50LndpZHRoKSwgKGltZ0VsbS5oZWlnaHQgKiBlbGVtZW50LmhlaWdodCkpO1xyXG4gICAgICB9IGVsc2UgaWYgKCd1cmwnIGluIGVsZW1lbnQpIHtcclxuICAgICAgICBjdHguc3Ryb2tlUmVjdCgoaW1nRWxtLndpZHRoICogZWxlbWVudC54ICsgYWxsbWFyZ2luKSwgKGltZ0VsbS5oZWlnaHQgKiBlbGVtZW50LnkgKyBhbGxtYXJnaW4pLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQud2lkdGgpLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQuaGVpZ2h0KSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZWxlbWVudCA9PT0gcGxvdHRpbmdTY2FsZSkge1xyXG4gICAgICAgIGN0eC5zdHJva2VSZWN0KChpbWdFbG0ud2lkdGggKiBlbGVtZW50LnggKyBhbGxtYXJnaW4pIC0gKHBsb3R0aW5nU2NhbGUud2lkdGggKiAwLjIpLCAoaW1nRWxtLmhlaWdodCAqIGVsZW1lbnQueSArIGFsbG1hcmdpbikgLSBlbGVtZW50LmhlaWdodCAtIChwbG90dGluZ1NjYWxlLmhlaWdodCAqIDAuNSksIGVsZW1lbnQud2lkdGggKyAocGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuNiksIGVsZW1lbnQuaGVpZ2h0ICsgKHBsb3R0aW5nU2NhbGUuaGVpZ2h0KSk7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY29ybmVycyA9IGdldENvcm5lcnMoZWxlbWVudCwgYWxsbWFyZ2luKTtcclxuICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gICAgICBjb3JuZXJzLmZvckVhY2goY29ybmVyID0+IHtcclxuICAgICAgICBjdHguYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY3R4LmFyYyhjb3JuZXIueCwgY29ybmVyLnksIGNvcm5lclJhZGl1cywgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgIGN0eC5maWxsKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICBjb25zdCB4ID0gZ2V0Q2FudmFzTW91c2VYKGUpO1xyXG4gICAgICBjb25zdCB5ID0gZ2V0Q2FudmFzTW91c2VZKGUpO1xyXG4gICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luXHJcbiAgICAgIGlmIChib3JkZXIuc2hvdyAmJiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS5jb21wbGV0ZSkge1xyXG4gICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlci53aWR0aFxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGl0bGUuc2hvdykge1xyXG4gICAgICAgIC8vIOajgOafpeaYr+WQpueCueWHu+S6huagh+mimOe8lui+keinpuWPkeWMuuWfn1xyXG4gICAgICAgIGlmICh5ID49ICgodGl0bGUuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkgKyBhbGxtYXJnaW4pIC0gdHJpZ2dlclJhbmdlICYmIHkgPD0gKCh0aXRsZS5oZWlnaHQgKiBpbWdFbG0uaGVpZ2h0KSArIGFsbG1hcmdpbikgKyB0cmlnZ2VyUmFuZ2UpIHtcclxuICAgICAgICAgIGlzRHJhZ2dpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIC8vIOWFiOWwhuaJgOacieWFg+e0oOeahOmAieS4reeKtuaAgee9ruS4uiBmYWxzZVxyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRhdGFbaV0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICAgIGlzRHJhZ2dpbmdFbGVtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICBpc1Jlc2l6aW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmVzaXplQ29ybmVyID0gbnVsbDtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIOajgOafpeaYr+WQpueCueWHu+S6hui+ueahhuinkuS4iueahOWwj+WchueCuVxyXG4gICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50ICYmIHNlbGVjdGVkRWxlbWVudCAhPT0gcGxvdHRpbmdTY2FsZSkge1xyXG4gICAgICAgIGNvbnN0IGNvcm5lclJhZGl1cyA9IGNhbnZhcy5oZWlnaHQgKiAwLjAwNTtcclxuICAgICAgICBjb25zdCBjb3JuZXJzID0gZ2V0Q29ybmVycyhzZWxlY3RlZEVsZW1lbnQsIGFsbG1hcmdpbik7XHJcbiAgICAgICAgY29ybmVycy5mb3JFYWNoKChjb3JuZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBpZiAoeCA+PSBjb3JuZXIueCAtIGNvcm5lclJhZGl1cyAmJiB4IDw9IGNvcm5lci54ICsgY29ybmVyUmFkaXVzICYmXHJcbiAgICAgICAgICAgIHkgPj0gY29ybmVyLnkgLSBjb3JuZXJSYWRpdXMgJiYgeSA8PSBjb3JuZXIueSArIGNvcm5lclJhZGl1cykge1xyXG4gICAgICAgICAgICBpc1Jlc2l6aW5nRWxlbWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzRHJhZ2dpbmdFbGVtZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJlc2l6ZUNvcm5lciA9IGluZGV4O1xyXG4gICAgICAgICAgICBzdGFydFggPSB4O1xyXG4gICAgICAgICAgICBzdGFydFkgPSB5O1xyXG4gICAgICAgICAgICBlbGVtZW50V2lkdGggPSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCk7XHJcbiAgICAgICAgICAgIGVsZW1lbnRIZWlnaHQgPSAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpO1xyXG4gICAgICAgICAgICBpZiAoJ3RleHQnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnRXaWR0aCA9IChzZWxlY3RlZEVsZW1lbnQud2lkdGggKiBpbWdFbG0uaGVpZ2h0KTtcclxuICAgICAgICAgICAgICBjdXJyZW50Rm9udFNpemUgPSBzZWxlY3RlZEVsZW1lbnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzUmVzaXppbmdFbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWFiOWwhuaJgOacieWFg+e0oOeahOmAieS4reeKtuaAgee9ruS4uiBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBkYXRhW2ldLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBwbG90dGluZ1NjYWxlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcclxuICAgICAgaXNEcmFnZ2luZ0VsZW1lbnQgPSBmYWxzZTtcclxuICAgICAgaXNSZXNpemluZ0VsZW1lbnQgPSBmYWxzZTtcclxuICAgICAgcmVzaXplQ29ybmVyID0gbnVsbDtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSBkYXRhLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0uc2hvdykge1xyXG4gICAgICAgICAgaWYgKCd0ZXh0JyBpbiBkYXRhW2ldKSB7XHJcbiAgICAgICAgICAgIGlmICh4ID49IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luICYmIHggPD0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyBhbGxtYXJnaW4gKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpICYmXHJcbiAgICAgICAgICAgICAgeSA+PSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgKyBhbGxtYXJnaW4gLSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0uaGVpZ2h0KSAmJiB5IDw9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIGFsbG1hcmdpbikge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudCA9IGRhdGFbaV07XHJcbiAgICAgICAgICAgICAgZGF0YVtpXS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBpc0RyYWdnaW5nRWxlbWVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgc3RhcnRYID0geDtcclxuICAgICAgICAgICAgICBzdGFydFkgPSB5O1xyXG4gICAgICAgICAgICAgIHN0YXJ0WTIgPSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ueSkgLSAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0uaGVpZ2h0KVxyXG4gICAgICAgICAgICAgIHN0YXJ0WDIgPSAoaW1nRWxtLndpZHRoICogZGF0YVtpXS54KSArIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS53aWR0aClcclxuICAgICAgICAgICAgICBlbGVtZW50T2Zmc2V0WCA9IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luO1xyXG4gICAgICAgICAgICAgIGVsZW1lbnRPZmZzZXRZID0gKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgYWxsbWFyZ2luO1xyXG4gICAgICAgICAgICAgIHVwZGF0ZUNhbnZhcygpOyAvLyDngrnlh7vml7bph43mlrDnu5jliLbnlLvluIPku6XmmL7npLrovrnmoYZcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCd1cmwnIGluIGRhdGFbaV0pIHtcclxuICAgICAgICAgICAgaWYgKGRhdGFbaV0uc3ZnICYmIGRhdGFbaV0uc3ZnLmNvbXBsZXRlICYmIGRhdGFbaV0uc2hvdykge1xyXG4gICAgICAgICAgICAgIGlmICh4ID49IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgYWxsbWFyZ2luICYmIHggPD0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyBhbGxtYXJnaW4gKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpICYmXHJcbiAgICAgICAgICAgICAgICB5ID49IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIGFsbG1hcmdpbiAmJiB5IDw9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIGFsbG1hcmdpbiArIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQgPSBkYXRhW2ldO1xyXG4gICAgICAgICAgICAgICAgZGF0YVtpXS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlzRHJhZ2dpbmdFbGVtZW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0WCA9IHg7XHJcbiAgICAgICAgICAgICAgICBzdGFydFkgPSB5O1xyXG4gICAgICAgICAgICAgICAgc3RhcnRZMiA9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSArIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpXHJcbiAgICAgICAgICAgICAgICBzdGFydFgyID0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudE9mZnNldFggPSAoaW1nRWxtLndpZHRoICogZGF0YVtpXS54KSArIGFsbG1hcmdpbjtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRPZmZzZXRZID0gKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgYWxsbWFyZ2luO1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2FudmFzKCk7IC8vIOeCueWHu+aXtumHjeaWsOe7mOWItueUu+W4g+S7peaYvuekuui+ueahhlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocGxvdHRpbmdTY2FsZS5zaG93KSB7XHJcbiAgICAgICAgaWYgKHggPj0gKGltZ0VsbS53aWR0aCAqIHBsb3R0aW5nU2NhbGUueCArIGFsbG1hcmdpbikgLSAocGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuMikgJiYgeCA8PSAoaW1nRWxtLndpZHRoICogcGxvdHRpbmdTY2FsZS54ICsgYWxsbWFyZ2luKSAtIChwbG90dGluZ1NjYWxlLndpZHRoICogMC4yKSArIHBsb3R0aW5nU2NhbGUud2lkdGggKyAocGxvdHRpbmdTY2FsZS53aWR0aCAqIDAuNikgJiZcclxuICAgICAgICAgIHkgPj0gKGltZ0VsbS5oZWlnaHQgKiBwbG90dGluZ1NjYWxlLnkgKyBhbGxtYXJnaW4pIC0gcGxvdHRpbmdTY2FsZS5oZWlnaHQgLSAocGxvdHRpbmdTY2FsZS5oZWlnaHQgKiAwLjUpICYmIHkgPD0gKGltZ0VsbS5oZWlnaHQgKiBwbG90dGluZ1NjYWxlLnkgKyBhbGxtYXJnaW4pIC0gKHBsb3R0aW5nU2NhbGUuaGVpZ2h0ICogMC41KSArIChwbG90dGluZ1NjYWxlLmhlaWdodCkpIHtcclxuICAgICAgICAgIHNlbGVjdGVkRWxlbWVudCA9IHBsb3R0aW5nU2NhbGU7XHJcbiAgICAgICAgICBwbG90dGluZ1NjYWxlLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgaXNEcmFnZ2luZ0VsZW1lbnQgPSB0cnVlO1xyXG4gICAgICAgICAgc3RhcnRYID0geDtcclxuICAgICAgICAgIHN0YXJ0WSA9IHk7XHJcbiAgICAgICAgICBzdGFydFkyID0gKGltZ0VsbS5oZWlnaHQgKiBwbG90dGluZ1NjYWxlLnkgKyBhbGxtYXJnaW4pICsgcGxvdHRpbmdTY2FsZS5oZWlnaHQ7XHJcbiAgICAgICAgICBzdGFydFgyID0gKGltZ0VsbS53aWR0aCAqIHBsb3R0aW5nU2NhbGUueCArIGFsbG1hcmdpbikgKyBwbG90dGluZ1NjYWxlLndpZHRoO1xyXG4gICAgICAgICAgZWxlbWVudE9mZnNldFggPSAoaW1nRWxtLndpZHRoICogcGxvdHRpbmdTY2FsZS54ICsgYWxsbWFyZ2luKTtcclxuICAgICAgICAgIGVsZW1lbnRPZmZzZXRZID0gaW1nRWxtLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUueSArIGFsbG1hcmdpbjtcclxuICAgICAgICAgIHVwZGF0ZUNhbnZhcygpOyAvLyDngrnlh7vml7bph43mlrDnu5jliLbnlLvluIPku6XmmL7npLrovrnmoYZcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWmguaenOeCueWHu+WcqOWGheWuueS7peWklu+8jOmHjeaWsOe7mOWItueUu+W4g+S7peenu+mZpOi+ueahhlxyXG4gICAgICBpZiAoIXNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgIHVwZGF0ZUNhbnZhcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgbGV0IGFsbG1hcmdpbiA9IG1hcmdpblxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB4ID0gZ2V0Q2FudmFzTW91c2VYKGUpO1xyXG4gICAgICBjb25zdCB5ID0gZ2V0Q2FudmFzTW91c2VZKGUpO1xyXG4gICAgICBpZiAoeCA8IDAgfHwgeSA8IDAgfHwgeCA+IGNhbnZhcy53aWR0aCB8fCB5ID4gY2FudmFzLmhlaWdodCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGl0bGUuc2hvdykge1xyXG4gICAgICAgIGxldCBhbGxtYXJnaW4gPSBtYXJnaW5cclxuICAgICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlci53aWR0aFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoeSA+PSAoKHRpdGxlLmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpICsgYWxsbWFyZ2luKSAtIHRyaWdnZXJSYW5nZSAmJiB5IDw9ICgodGl0bGUuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkgKyBhbGxtYXJnaW4pICsgdHJpZ2dlclJhbmdlKSB7XHJcbiAgICAgICAgICBjYW52YXMuc3R5bGUuY3Vyc29yID0gJ24tcmVzaXplJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY2FudmFzLnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc0RyYWdnaW5nKSB7XHJcbiAgICAgICAgICB0aXRsZS5oZWlnaHQgPSBNYXRoLm1pbihNYXRoLm1heCh5IC0gYWxsbWFyZ2luLCAzMCkgLyBpbWdFbG0uaGVpZ2h0LCAxKTtcclxuICAgICAgICAgIHVwZGF0ZUNhbnZhcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGlmIChpc0RyYWdnaW5nRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGR4ID0geCAtIHN0YXJ0WDtcclxuICAgICAgICBjb25zdCBkeSA9IHkgLSBzdGFydFk7XHJcbiAgICAgICAgc2VsZWN0ZWRFbGVtZW50LnggPSAoKGVsZW1lbnRPZmZzZXRYICsgZHgpIC0gYWxsbWFyZ2luKSAvIGltZ0VsbS53aWR0aDtcclxuICAgICAgICBzZWxlY3RlZEVsZW1lbnQueSA9ICgoZWxlbWVudE9mZnNldFkgKyBkeSkgLSBhbGxtYXJnaW4pIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICB1cGRhdGVDYW52YXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzUmVzaXppbmdFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgZHggPSB4IC0gc3RhcnRYO1xyXG4gICAgICAgIGNvbnN0IGR5ID0geSAtIHN0YXJ0WTtcclxuICAgICAgICBsZXQgc2NhbGVGYWN0b3I7XHJcblxyXG4gICAgICAgIHN3aXRjaCAocmVzaXplQ29ybmVyKSB7XHJcbiAgICAgICAgICBjYXNlIDA6IC8vIOW3puS4iuinklxyXG4gICAgICAgICAgICBpZiAoJ3RleHQnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIHNjYWxlRmFjdG9yID0gKGVsZW1lbnRXaWR0aCAtIGR4KSAvIGVsZW1lbnRXaWR0aDtcclxuICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuaGVpZ2h0ID0gTWF0aC5tYXgoKDEwIC8gaW1nRWxtLmhlaWdodCksIGN1cnJlbnRGb250U2l6ZSAqIHNjYWxlRmFjdG9yKVxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC54ID0gKHN0YXJ0WDIgLSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLndpZHRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCd1cmwnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC54ID0gKHN0YXJ0WDIgLSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLndpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC55ID0gKHN0YXJ0WTIgLSAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpKSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LndpZHRoID0gTWF0aC5tYXgoMTAsIGVsZW1lbnRXaWR0aCAtIGR4KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LmhlaWdodCA9IE1hdGgubWF4KDEwLCBlbGVtZW50SGVpZ2h0IC0gZHkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMTogLy8g5Y+z5LiK6KeSXHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSAoZWxlbWVudFdpZHRoICsgZHgpIC8gZWxlbWVudFdpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgoMTAgLyBpbWdFbG0uaGVpZ2h0KSwgY3VycmVudEZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCd1cmwnIGluIHNlbGVjdGVkRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC53aWR0aCA9IE1hdGgubWF4KDEwLCBlbGVtZW50V2lkdGggKyBkeCkgLyBpbWdFbG0uaGVpZ2h0O1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgxMCwgZWxlbWVudEhlaWdodCAtIGR5KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LnkgPSAoc3RhcnRZMiAtIChzZWxlY3RlZEVsZW1lbnQuaGVpZ2h0ICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMjogLy8g5bem5LiL6KeSXHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSAoZWxlbWVudFdpZHRoIC0gZHgpIC8gZWxlbWVudFdpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgoMTAgLyBpbWdFbG0uaGVpZ2h0KSwgY3VycmVudEZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC54ID0gKHN0YXJ0WDIgLSAoc2VsZWN0ZWRFbGVtZW50LndpZHRoICogaW1nRWxtLmhlaWdodCkpIC8gaW1nRWxtLndpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC55ID0gKHN0YXJ0WTIgKyAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpKSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LnggPSAoc3RhcnRYMiAtIChzZWxlY3RlZEVsZW1lbnQud2lkdGggKiBpbWdFbG0uaGVpZ2h0KSkgLyBpbWdFbG0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LndpZHRoID0gTWF0aC5tYXgoMTAsIGVsZW1lbnRXaWR0aCAtIGR4KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LmhlaWdodCA9IE1hdGgubWF4KDEwLCBlbGVtZW50SGVpZ2h0ICsgZHkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgMzogLy8g5Y+z5LiL6KeSXHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3IgPSAoZWxlbWVudFdpZHRoICsgZHgpIC8gZWxlbWVudFdpZHRoO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWlnaHQgPSBNYXRoLm1heCgoMTAgLyBpbWdFbG0uaGVpZ2h0KSwgY3VycmVudEZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC55ID0gKHN0YXJ0WTIgKyAoc2VsZWN0ZWRFbGVtZW50LmhlaWdodCAqIGltZ0VsbS5oZWlnaHQpKSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gc2VsZWN0ZWRFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LndpZHRoID0gTWF0aC5tYXgoMTAsIGVsZW1lbnRXaWR0aCArIGR4KSAvIGltZ0VsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50LmhlaWdodCA9IE1hdGgubWF4KDEwLCBlbGVtZW50SGVpZ2h0ICsgZHkpIC8gaW1nRWxtLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgdXBkYXRlQ2FudmFzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgbGV0IGFsbG1hcmdpbiA9IG1hcmdpblxyXG4gICAgICBpZiAoYm9yZGVyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICBhbGxtYXJnaW4gPSBhbGxtYXJnaW4gKyBib3JkZXIud2lkdGhcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS5zaG93ICYmIGRhdGFbaV0uaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgc3RhcnRZMiA9IChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS55KSAtIChpbWdFbG0uaGVpZ2h0ICogZGF0YVtpXS5oZWlnaHQpXHJcbiAgICAgICAgICBzdGFydFgyID0gKGltZ0VsbS53aWR0aCAqIGRhdGFbaV0ueCkgKyAoaW1nRWxtLmhlaWdodCAqIGRhdGFbaV0ud2lkdGgpXHJcbiAgICAgICAgICBpZiAoJ3VybCcgaW4gZGF0YVtpXSkge1xyXG4gICAgICAgICAgICBzdGFydFkyID0gKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLnkpICsgKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLmhlaWdodClcclxuICAgICAgICAgICAgc3RhcnRYMiA9IChpbWdFbG0ud2lkdGggKiBkYXRhW2ldLngpICsgKGltZ0VsbS5oZWlnaHQgKiBkYXRhW2ldLndpZHRoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsZW1lbnRPZmZzZXRYID0gZGF0YVtpXS54O1xyXG4gICAgICAgICAgZWxlbWVudE9mZnNldFkgPSBkYXRhW2ldLnk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwbG90dGluZ1NjYWxlLnNob3cgJiYgcGxvdHRpbmdTY2FsZS5pc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgc3RhcnRZMiA9IHBsb3R0aW5nU2NhbGUueSArIHBsb3R0aW5nU2NhbGUuaGVpZ2h0XHJcbiAgICAgICAgc3RhcnRYMiA9IHBsb3R0aW5nU2NhbGUueCArIHBsb3R0aW5nU2NhbGUud2lkdGhcclxuICAgICAgICBlbGVtZW50T2Zmc2V0WCA9IHBsb3R0aW5nU2NhbGUueDtcclxuICAgICAgICBlbGVtZW50T2Zmc2V0WSA9IHBsb3R0aW5nU2NhbGUueTtcclxuICAgICAgfVxyXG4gICAgICBpc0RyYWdnaW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgICBpc1Jlc2l6aW5nRWxlbWVudCA9IGZhbHNlO1xyXG4gICAgICByZXNpemVDb3JuZXIgPSBudWxsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0UGxvdHRpbmdTY2FsZSgpIHtcclxuICAgICAgaWYgKCFfdGhpcy5yZWN0YW5nbGUpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgd2VzdExuZyA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhfdGhpcy5yZWN0YW5nbGUud2VzdClcclxuICAgICAgbGV0IGVhc3RMbmcgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoX3RoaXMucmVjdGFuZ2xlLmVhc3QpXHJcbiAgICAgIGxldCBub3J0aExhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhfdGhpcy5yZWN0YW5nbGUubm9ydGgpXHJcbiAgICAgIGxldCBzb3V0aExhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhfdGhpcy5yZWN0YW5nbGUuc291dGgpXHJcblxyXG4gICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQoW3dlc3RMbmcsIG5vcnRoTGF0XSk7XHJcbiAgICAgIGxldCB0byA9IHR1cmYucG9pbnQoW2Vhc3RMbmcsIG5vcnRoTGF0XSk7XHJcbiAgICAgIGxldCBkaXN0YW5jZSA9IHR1cmYuZGlzdGFuY2UoZnJvbSwgdG8sIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuXHJcbiAgICAgIHVuaXREaXN0YW5jZSA9IGRpc3RhbmNlICogMTAwMCAvIGltZ0VsbS53aWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXREYXRlVGltZVN0cmluZygpIHtcclxuICAgICAgLy8g5Yib5bu65LiA5Liq6KGo56S65b2T5YmN5pe26Ze055qEIERhdGUg5a+56LGhXHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIC8vIOiOt+WPluW5tOS7vVxyXG4gICAgICBjb25zdCB5ZWFyID0gbm93LmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIC8vIOiOt+WPluaciOS7ve+8iOS7jiAwIOW8gOWni++8jOaJgOS7peimgeWKoCAx77yJ77yM5bm25bCG5YW26L2s5o2i5Li65Lik5L2N5a2X56ym5Liy77yM5LiN6Laz5Lik5L2N5Zyo5YmN6Z2i6KGl6Zu2XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgLy8g6I635Y+W5pel5pyf77yM5bm25bCG5YW26L2s5o2i5Li65Lik5L2N5a2X56ym5Liy77yM5LiN6Laz5Lik5L2N5Zyo5YmN6Z2i6KGl6Zu2XHJcbiAgICAgIGNvbnN0IGRheSA9IFN0cmluZyhub3cuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAvLyDojrflj5blsI/ml7bvvIzlubblsIblhbbovazmjaLkuLrkuKTkvY3lrZfnrKbkuLLvvIzkuI3otrPkuKTkvY3lnKjliY3pnaLooaXpm7ZcclxuICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcobm93LmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIC8vIOiOt+WPluWIhumSn++8jOW5tuWwhuWFtui9rOaNouS4uuS4pOS9jeWtl+espuS4su+8jOS4jei2s+S4pOS9jeWcqOWJjemdouihpembtlxyXG4gICAgICBjb25zdCBtaW51dGVzID0gU3RyaW5nKG5vdy5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIC8vIOiOt+WPluenku+8jOW5tuWwhuWFtui9rOaNouS4uuS4pOS9jeWtl+espuS4su+8jOS4jei2s+S4pOS9jeWcqOWJjemdouihpembtlxyXG4gICAgICBjb25zdCBzZWNvbmRzID0gU3RyaW5nKG5vdy5nZXRTZWNvbmRzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIC8vIOiOt+WPluavq+enku+8jOW5tuWwhuWFtui9rOaNouS4uuS4ieS9jeWtl+espuS4su+8jOS4jei2s+S4ieS9jeWcqOWJjemdouihpembtlxyXG4gICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBTdHJpbmcobm93LmdldE1pbGxpc2Vjb25kcygpKS5wYWRTdGFydCgzLCAnMCcpO1xyXG4gICAgICAvLyDlsIblubTjgIHmnIjjgIHml6XjgIHml7bjgIHliIbjgIHnp5LjgIHmr6vnp5Lmi7zmjqXmiJDmiYDpnIDnmoTlrZfnrKbkuLJcclxuICAgICAgcmV0dXJuIGAke3llYXJ9JHttb250aH0ke2RheX0ke2hvdXJzfSR7bWludXRlc30ke3NlY29uZHN9JHttaWxsaXNlY29uZHN9YDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBleHBvcnRNYXAoKSB7XHJcbiAgICAgIGxldCB1bml0RGlzdGFuY2UyXHJcbiAgICAgIGxldCBjYW52YXMyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgIGxldCBjdHgyID0gY2FudmFzMi5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICBsZXQgaW1nRWxtMiA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICBpbWdFbG0yLnNyYyA9IF90aGlzLm9yaWdpbmFsSW1nXHJcbiAgICAgIGltZ0VsbTIub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChpc0xvYWQpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGl0bGUyID0geyAuLi50aXRsZSB9XHJcbiAgICAgICAgbGV0IGRhdGEyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSlcclxuICAgICAgICBsZXQgcGxvdHRpbmdTY2FsZTIgPSB7IC4uLnBsb3R0aW5nU2NhbGUgfVxyXG4gICAgICAgIGxldCBib3JkZXIyID0geyAuLi5ib3JkZXIgfVxyXG4gICAgICAgIGJvcmRlcjIud2lkdGggPSBib3JkZXIud2lkdGggLyBpbWdFbG0ud2lkdGggKiBpbWdFbG0yLndpZHRoXHJcblxyXG4gICAgICAgIGxldCBtYXJnaW4yID0gbWFyZ2luIC8gaW1nRWxtLndpZHRoICogaW1nRWxtMi53aWR0aDtcclxuICAgICAgICBsZXQgYWxsbWFyZ2luID0gbWFyZ2luMlxyXG4gICAgICAgIGlmIChib3JkZXIyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAgIGFsbG1hcmdpbiA9IGFsbG1hcmdpbiArIGJvcmRlcjIud2lkdGhcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhbnZhczIud2lkdGggPSBpbWdFbG0yLndpZHRoICsgKGFsbG1hcmdpbiAqIDIpO1xyXG4gICAgICAgIGNhbnZhczIuaGVpZ2h0ID0gaW1nRWxtMi5oZWlnaHQgKyAoYWxsbWFyZ2luICogMik7XHJcblxyXG4gICAgICAgIGN0eDIuY2xlYXJSZWN0KDAsIDAsIGNhbnZhczIud2lkdGgsIGNhbnZhczIuaGVpZ2h0KTtcclxuICAgICAgICBjdHgyLnJlY3QoMCwgMCwgY2FudmFzMi53aWR0aCwgY2FudmFzMi5oZWlnaHQpO1xyXG4gICAgICAgIGN0eDIuZmlsbFN0eWxlID0gXCIjZmZmZmZmXCI7XHJcbiAgICAgICAgY3R4Mi5maWxsKCk7XHJcbiAgICAgICAgY3R4Mi5kcmF3SW1hZ2UoaW1nRWxtMiwgYWxsbWFyZ2luLCBhbGxtYXJnaW4sIGltZ0VsbTIud2lkdGgsIGltZ0VsbTIuaGVpZ2h0KTtcclxuICAgICAgICAvLyDmoIfpopjlhoXlrrlcclxuICAgICAgICBpZiAodGl0bGUyLnNob3cpIHtcclxuICAgICAgICAgIGNvbnN0IHRleHQgPSB0aXRsZTIudGV4dDtcclxuICAgICAgICAgIGNvbnN0IGZvbnRTaXplID0gTWF0aC5tYXgoNSwgKHRpdGxlMi5oZWlnaHQgKiBpbWdFbG0yLmhlaWdodCkgKiAwLjUpO1xyXG4gICAgICAgICAgY3R4Mi5mb250ID0gYCR7Zm9udFNpemV9cHggc2VyaWZgO1xyXG4gICAgICAgICAgY3R4Mi5maWxsU3R5bGUgPSB0aXRsZTIuYmdDb2xvciB8fCAnIzVkNWQ1ZCc7XHJcblxyXG4gICAgICAgICAgY3R4Mi5maWxsUmVjdChhbGxtYXJnaW4sIGFsbG1hcmdpbiwgY2FudmFzMi53aWR0aCAtIChhbGxtYXJnaW4gKiAyKSwgKHRpdGxlMi5oZWlnaHQgKiBpbWdFbG0yLmhlaWdodCkpO1xyXG5cclxuICAgICAgICAgIGN0eDIuZmlsbFN0eWxlID0gdGl0bGUyLmNvbG9yIHx8ICd3aGl0ZSc7XHJcbiAgICAgICAgICBjdHgyLnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG4gICAgICAgICAgY3R4Mi50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuICAgICAgICAgIGN0eDIuZmlsbFRleHQodGV4dCwgY2FudmFzMi53aWR0aCAvIDIsICgodGl0bGUyLmhlaWdodCAqIGltZ0VsbTIuaGVpZ2h0KSAvIDIpICsgYWxsbWFyZ2luKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOWFtuS7luWGheWuuVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YTIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChkYXRhMltpXS5zaG93KSB7XHJcbiAgICAgICAgICAgIGlmICgndGV4dCcgaW4gZGF0YTJbaV0pIHtcclxuICAgICAgICAgICAgICBjdHgyLmZvbnQgPSBgJHtpbWdFbG0yLmhlaWdodCAqIGRhdGEyW2ldLmhlaWdodH1weCBzZXJpZmA7XHJcbiAgICAgICAgICAgICAgY3R4Mi5maWxsU3R5bGUgPSBkYXRhMltpXS5jb2xvciB8fCAnd2hpdGUnO1xyXG4gICAgICAgICAgICAgIGN0eDIudGV4dEFsaWduID0gJ2xlZnQnO1xyXG4gICAgICAgICAgICAgIGN0eDIudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XHJcbiAgICAgICAgICAgICAgZGF0YTJbaV0ud2lkdGggPSBjdHgyLm1lYXN1cmVUZXh0KGRhdGEyW2ldLnRleHQpLndpZHRoIC8gaW1nRWxtMi5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgY3R4Mi5maWxsVGV4dChkYXRhMltpXS50ZXh0LCAoaW1nRWxtMi53aWR0aCAqIGRhdGEyW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS55KSArIGFsbG1hcmdpbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoJ3VybCcgaW4gZGF0YTJbaV0pIHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YVtpXS5zdmcgJiYgZGF0YVtpXS5zdmcuY29tcGxldGUpIHtcclxuICAgICAgICAgICAgICAgIGN0eDIuZHJhd0ltYWdlKGRhdGFbaV0uc3ZnLCAoaW1nRWxtMi53aWR0aCAqIGRhdGEyW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS55KSArIGFsbG1hcmdpbiwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS53aWR0aCwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN2ZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgICAgICAgICAgc3ZnLnNyYyA9IHRvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyBkYXRhMltpXS51cmw7XHJcbiAgICAgICAgICAgICAgICBzdmcub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICBkYXRhMltpXS5zdmcgPSBzdmdcclxuICAgICAgICAgICAgICAgICAgY3R4Mi5kcmF3SW1hZ2Uoc3ZnLCAoaW1nRWxtMi53aWR0aCAqIGRhdGEyW2ldLngpICsgYWxsbWFyZ2luLCAoaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS55KSArIGFsbG1hcmdpbiwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS53aWR0aCwgaW1nRWxtMi5oZWlnaHQgKiBkYXRhMltpXS5oZWlnaHQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDmr5TkvovlsLpcclxuICAgICAgICBpZiAocGxvdHRpbmdTY2FsZTIuc2hvdykge1xyXG4gICAgICAgICAgZ2V0UGxvdHRpbmdTY2FsZSgpXHJcbiAgICAgICAgICBsZXQgcGxvdHRpbmdTY2FsZTJYID0gaW1nRWxtMi53aWR0aCAqIHBsb3R0aW5nU2NhbGUyLnggKyBhbGxtYXJnaW5cclxuICAgICAgICAgIGxldCBwbG90dGluZ1NjYWxlMlkgPSBpbWdFbG0yLmhlaWdodCAqIHBsb3R0aW5nU2NhbGUyLnkgKyBhbGxtYXJnaW5cclxuICAgICAgICAgIGxldCB1bml0ID0gJ20nXHJcbiAgICAgICAgICAvLyBjb25zdCBmb250U2l6ZSA9IHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xMjtcclxuICAgICAgICAgIGNvbnN0IGZvbnRTaXplID0gaW1nRWxtMi53aWR0aCAqIDAuMDggKiAwLjEyO1xyXG4gICAgICAgICAgbGV0IHNwYWNpbmcgPSBpbWdFbG0yLndpZHRoICogMC4wOCAvIHBsb3R0aW5nU2NhbGUyLmNlbGw7XHJcbiAgICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZCh1bml0RGlzdGFuY2UyICogc3BhY2luZyk7XHJcbiAgICAgICAgICBsZXQgc3BhY2luZ0Rpc3RhbmNlU3RyaW5nID0gc3BhY2luZ0Rpc3RhbmNlICsgJydcclxuICAgICAgICAgIGlmIChzcGFjaW5nRGlzdGFuY2UgPCAxMCkge1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNwYWNpbmdEaXN0YW5jZSA9IE51bWJlcihzcGFjaW5nRGlzdGFuY2VTdHJpbmdbMF0pXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BhY2luZ0Rpc3RhbmNlU3RyaW5nLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICAgICAgICAgIHNwYWNpbmdEaXN0YW5jZSA9IHNwYWNpbmdEaXN0YW5jZSAqIDEwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3BhY2luZyA9IHNwYWNpbmdEaXN0YW5jZSAvIHVuaXREaXN0YW5jZTJcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHBsb3R0aW5nU2NhbGUyLndpZHRoID0gc3BhY2luZyAqIHBsb3R0aW5nU2NhbGUyLmNlbGw7XHJcbiAgICAgICAgICBwbG90dGluZ1NjYWxlMi5oZWlnaHQgPSBwbG90dGluZ1NjYWxlMi53aWR0aCAqIDAuMjtcclxuICAgICAgICAgIGlmIChzcGFjaW5nRGlzdGFuY2UgPj0gMTAwMCkge1xyXG4gICAgICAgICAgICB1bml0ID0gJ+OOnidcclxuICAgICAgICAgICAgc3BhY2luZ0Rpc3RhbmNlID0gTWF0aC5yb3VuZChzcGFjaW5nRGlzdGFuY2UgLyAxMDAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHNjYWxlWSA9IHBsb3R0aW5nU2NhbGUyWTtcclxuICAgICAgICAgIGN0eDIuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjdHgyLm1vdmVUbyhwbG90dGluZ1NjYWxlMlgsIHNjYWxlWSk7XHJcbiAgICAgICAgICBjdHgyLmxpbmVUbyhwbG90dGluZ1NjYWxlMlggKyBwbG90dGluZ1NjYWxlMi53aWR0aCwgc2NhbGVZKTtcclxuICAgICAgICAgIGN0eDIuc3Ryb2tlU3R5bGUgPSBwbG90dGluZ1NjYWxlMi5jb2xvcjtcclxuICAgICAgICAgIGN0eDIubGluZVdpZHRoID0gcGxvdHRpbmdTY2FsZTIud2lkdGggKiAwLjAxO1xyXG4gICAgICAgICAgY3R4Mi5zdHJva2UoKTtcclxuXHJcbiAgICAgICAgICBsZXQgdGlja1ggPSAwXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwbG90dGluZ1NjYWxlMi5jZWxsOyBpKyspIHtcclxuICAgICAgICAgICAgdGlja1ggPSBwbG90dGluZ1NjYWxlMlggKyBpICogc3BhY2luZztcclxuICAgICAgICAgICAgY3R4Mi5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgY3R4Mi5tb3ZlVG8odGlja1gsIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xKTtcclxuICAgICAgICAgICAgY3R4Mi5saW5lVG8odGlja1gsIHNjYWxlWSk7XHJcbiAgICAgICAgICAgIGN0eDIuc3Ryb2tlU3R5bGUgPSBwbG90dGluZ1NjYWxlMi5jb2xvcjtcclxuICAgICAgICAgICAgY3R4Mi5saW5lV2lkdGggPSBwbG90dGluZ1NjYWxlMi53aWR0aCAqIDAuMDE7XHJcbiAgICAgICAgICAgIGN0eDIuc3Ryb2tlKCk7XHJcblxyXG4gICAgICAgICAgICBjdHgyLmZvbnQgPSBgJHtmb250U2l6ZX1weCBBcmlhbGA7XHJcbiAgICAgICAgICAgIGN0eDIuZmlsbFN0eWxlID0gcGxvdHRpbmdTY2FsZTIuY29sb3I7XHJcbiAgICAgICAgICAgIGN0eDIudGV4dEFsaWduID0gJ2NlbnRlcic7XHJcbiAgICAgICAgICAgIGN0eDIudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XHJcbiAgICAgICAgICAgIGN0eDIuZmlsbFRleHQoaSAqIHNwYWNpbmdEaXN0YW5jZSwgdGlja1gsIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjdHgyLmZvbnQgPSBgJHtmb250U2l6ZX1weCBBcmlhbGA7XHJcbiAgICAgICAgICBjdHgyLmZpbGxTdHlsZSA9IHBsb3R0aW5nU2NhbGUyLmNvbG9yO1xyXG4gICAgICAgICAgY3R4Mi50ZXh0QWxpZ24gPSAnbGVmdCc7XHJcbiAgICAgICAgICBjdHgyLnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xyXG4gICAgICAgICAgY3R4Mi5maWxsVGV4dCh1bml0LCB0aWNrWCArIChmb250U2l6ZSAqIDEuMiksIHNjYWxlWSAtIHBsb3R0aW5nU2NhbGUyLndpZHRoICogMC4xKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOi+ueahhlxyXG4gICAgICAgIGlmIChib3JkZXIyLnNob3cgJiYgYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UuY29tcGxldGUpIHtcclxuICAgICAgICAgIC8vIOe7mOWItuWbm+S4quinku+8iOijgeWJquaIkDQ15bqm6KeS77yJXHJcbiAgICAgICAgICBkcmF3Qm9yZGVyMihjdHgyLCBib3JkZXJJbWFnZSwgbWFyZ2luMiwgbWFyZ2luMiwgYm9yZGVyMi53aWR0aCwgJ3RvcCcsIDEpO1xyXG4gICAgICAgICAgZHJhd0JvcmRlcjIoY3R4MiwgYm9yZGVySW1hZ2UsIGNhbnZhczIud2lkdGggLSBib3JkZXIyLndpZHRoIC0gbWFyZ2luMiwgbWFyZ2luMiwgYm9yZGVyMi53aWR0aCwgJ3JpZ2h0JywgMSk7XHJcbiAgICAgICAgICBkcmF3Qm9yZGVyMihjdHgyLCBib3JkZXJJbWFnZSwgY2FudmFzMi53aWR0aCAtIGJvcmRlcjIud2lkdGggLSBtYXJnaW4yLCBjYW52YXMyLmhlaWdodCAtIGJvcmRlcjIud2lkdGggLSBtYXJnaW4yLCBib3JkZXIyLndpZHRoLCAnYm90dG9tJywgMSk7XHJcbiAgICAgICAgICBkcmF3Qm9yZGVyMihjdHgyLCBib3JkZXJJbWFnZSwgbWFyZ2luMiwgY2FudmFzMi5oZWlnaHQgLSBib3JkZXIyLndpZHRoIC0gbWFyZ2luMiwgYm9yZGVyMi53aWR0aCwgJ2xlZnQnLCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldFBsb3R0aW5nU2NhbGUoKSB7XHJcbiAgICAgICAgICBpZiAoIV90aGlzLnJlY3RhbmdsZSkge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB3ZXN0TG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKF90aGlzLnJlY3RhbmdsZS53ZXN0KVxyXG4gICAgICAgICAgbGV0IGVhc3RMbmcgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoX3RoaXMucmVjdGFuZ2xlLmVhc3QpXHJcbiAgICAgICAgICBsZXQgbm9ydGhMYXQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoX3RoaXMucmVjdGFuZ2xlLm5vcnRoKVxyXG4gICAgICAgICAgbGV0IHNvdXRoTGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKF90aGlzLnJlY3RhbmdsZS5zb3V0aClcclxuXHJcbiAgICAgICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQoW3dlc3RMbmcsIG5vcnRoTGF0XSk7XHJcbiAgICAgICAgICBsZXQgdG8gPSB0dXJmLnBvaW50KFtlYXN0TG5nLCBub3J0aExhdF0pO1xyXG4gICAgICAgICAgbGV0IGRpc3RhbmNlID0gdHVyZi5kaXN0YW5jZShmcm9tLCB0bywgeyB1bml0czogJ2tpbG9tZXRlcnMnIH0pO1xyXG5cclxuICAgICAgICAgIHVuaXREaXN0YW5jZTIgPSBkaXN0YW5jZSAqIDEwMDAgLyBpbWdFbG0yLndpZHRoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g57uY5Yi26L655qGGXHJcbiAgICAgICAgZnVuY3Rpb24gZHJhd0JvcmRlcjIoY3R4MiwgaW1nLCB4LCB5LCBzaXplLCBwb3NpdGlvbiwgaXNTdGFydCA9IDEpIHtcclxuICAgICAgICAgIGN0eDIuc2F2ZSgpO1xyXG4gICAgICAgICAgY3R4Mi50cmFuc2xhdGUoeCArIHNpemUgLyAyLCB5ICsgc2l6ZSAvIDIpO1xyXG5cclxuICAgICAgICAgIC8vIOagueaNruS9jee9ruiuvue9ruaXi+i9rOinkuW6plxyXG4gICAgICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xyXG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgICAgICAgY3R4Mi5yb3RhdGUoTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgICAgICAgIGN0eDIucm90YXRlKE1hdGguUEkpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgICAgICBjdHgyLnJvdGF0ZSgzICogTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8g5Yib5bu6NDXluqbop5LnmoToo4Hliarot6/lvoRcclxuICAgICAgICAgIGN0eDIuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjdHgyLm1vdmVUbygoLXNpemUgKiBpc1N0YXJ0KSAvIDIsIC1zaXplIC8gMik7XHJcbiAgICAgICAgICBpZiAocG9zaXRpb24gPT09ICd0b3AnIHx8IHBvc2l0aW9uID09PSAnYm90dG9tJykge1xyXG4gICAgICAgICAgICBjdHgyLmxpbmVUbyhjYW52YXMyLndpZHRoIC0gKG1hcmdpbjIgKiAyKSAtIChzaXplIC8gMiksIC1zaXplIC8gMik7XHJcbiAgICAgICAgICAgIGN0eDIubGluZVRvKGNhbnZhczIud2lkdGggLSAobWFyZ2luMiArIHNpemUpICogMiArIChzaXplIC8gMiksIHNpemUgLyAyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjdHgyLmxpbmVUbyhjYW52YXMyLmhlaWdodCAtIChtYXJnaW4yICogMikgLSAoc2l6ZSAvIDIpLCAtc2l6ZSAvIDIpO1xyXG4gICAgICAgICAgICBjdHgyLmxpbmVUbyhjYW52YXMyLmhlaWdodCAtIChtYXJnaW4yICsgc2l6ZSkgKiAyICsgKHNpemUgLyAyKSwgc2l6ZSAvIDIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY3R4Mi5saW5lVG8oKHNpemUgKiBpc1N0YXJ0KSAvIDIsIHNpemUgLyAyKTtcclxuICAgICAgICAgIGN0eDIuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjdHgyLmNsaXAoKTtcclxuXHJcbiAgICAgICAgICBsZXQgaW1nV2lkdGggPSBpbWcud2lkdGggLyBpbWcuaGVpZ2h0ICogc2l6ZVxyXG5cclxuICAgICAgICAgIC8vIOe7mOWItuWbvueJh1xyXG4gICAgICAgICAgY3R4Mi5kcmF3SW1hZ2UoaW1nLCAtc2l6ZSAvIDIsIC1zaXplIC8gMiwgaW1nV2lkdGgsIHNpemUpO1xyXG5cclxuICAgICAgICAgIGxldCBjb3VudDtcclxuICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcgfHwgcG9zaXRpb24gPT09ICdib3R0b20nKSB7XHJcbiAgICAgICAgICAgIGNvdW50ID0gTWF0aC5jZWlsKChjYW52YXMyLndpZHRoIC0gKG1hcmdpbjIgKiAyKSAtIChib3JkZXIyLndpZHRoICogMikpIC8gYm9yZGVyMi53aWR0aCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb3VudCA9IE1hdGguY2VpbCgoY2FudmFzMi5oZWlnaHQgLSAobWFyZ2luMiAqIDIpIC0gKGJvcmRlcjIud2lkdGggKiAyKSkgLyBib3JkZXIyLndpZHRoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvdW50KytcclxuXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGN0eDIuZHJhd0ltYWdlKGltZywgLXNpemUgLyAyICsgaW1nV2lkdGggKiBpLCAtc2l6ZSAvIDIsIGltZ1dpZHRoLCBzaXplKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjdHgyLnJlc3RvcmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGxldCBkYXRhVVJMID0gY2FudmFzMi50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCAwLjk1KVxyXG4gICAgICAgIC8vIGxldCBkb3dubG9hZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgLy8gZG93bmxvYWRFbGVtZW50LmhyZWYgPSBkYXRhVVJMO1xyXG4gICAgICAgIC8vIGRvd25sb2FkRWxlbWVudC5kb3dubG9hZCA9IGDpq5jmuIXlh7rlm74tJHtnZXREYXRlVGltZVN0cmluZygpfS5qcGdgO1xyXG4gICAgICAgIC8vIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRFbGVtZW50KTtcclxuICAgICAgICAvLyBkb3dubG9hZEVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICAvLyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvd25sb2FkRWxlbWVudCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGFVUkwnLCBkYXRhVVJMKVxyXG4gICAgICAgIC8vIFVSTC5yZXZva2VPYmplY3RVUkwoZGF0YVVSTCk7XHJcblxyXG4gICAgICAgIC8vIOWcqOmHiuaUvui1hOa6kOWQjuaJp+ihjOWbnuiwg1xyXG5cclxuICAgICAgICBjYW52YXMyLnRvQmxvYihmdW5jdGlvbiAoYmxvYikge1xyXG4gICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgIGxldCBkb3dubG9hZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICBkb3dubG9hZEVsZW1lbnQuaHJlZiA9IHVybDtcclxuICAgICAgICAgIGRvd25sb2FkRWxlbWVudC5kb3dubG9hZCA9IGDpq5jmuIXlh7rlm74tJHtnZXREYXRlVGltZVN0cmluZygpfS5wbmdgO1xyXG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZEVsZW1lbnQpO1xyXG4gICAgICAgICAgZG93bmxvYWRFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvd25sb2FkRWxlbWVudCk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgZXhwb3J0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGV4cG9ydEJ0bi5pbm5lckhUTUwgPSAn5omT5Y2wJztcclxuICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSwgJ2ltYWdlL3BuZycsIDAuOTUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGNhbnZhczIudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XHJcbiAgICAgICAgLy8gICBsZXQgaW1nQmxvYkRhdGEgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgIC8vICAgbGV0IGRvd25sb2FkRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAvLyAgIGRvd25sb2FkRWxlbWVudC5ocmVmID0gaW1nQmxvYkRhdGE7XHJcbiAgICAgICAgLy8gICBkb3dubG9hZEVsZW1lbnQuZG93bmxvYWQgPSBg6auY5riF5Ye65Zu+LSR7Z2V0RGF0ZVRpbWVTdHJpbmcoKX0ucG5nYDtcclxuICAgICAgICAvLyAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRFbGVtZW50KTtcclxuICAgICAgICAvLyAgIGRvd25sb2FkRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgIC8vICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb3dubG9hZEVsZW1lbnQpO1xyXG4gICAgICAgIC8vICAgVVJMLnJldm9rZU9iamVjdFVSTChpbWdCbG9iRGF0YSk7XHJcblxyXG4gICAgICAgIC8vICAgLy8g5Zyo6YeK5pS+6LWE5rqQ5ZCO5omn6KGM5Zue6LCDXHJcbiAgICAgICAgLy8gICBleHBvcnRpbmcgPSBmYWxzZTtcclxuICAgICAgICAvLyAgIGV4cG9ydEJ0bi5pbm5lckhUTUwgPSAn5omT5Y2wJztcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTWFwUHJpbnRcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdxQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBQ0E7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQS9SQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFuTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBakNBO0FBQUE7QUFBQTtBQUNBO0FBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE3S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQW5EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTVDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXhFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQS9mQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUZBO0FBR0E7QUFDQTtBQUNBO0FBaURBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBbUJBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUErSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbU9BO0FBOEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnU0E7QUFqNkNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW82Q0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/MapPrint/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/MapX/index.js":
-/*!**********************************!*\
- !*** ./src/Global/MapX/index.js ***!
- \**********************************/
-/*! exports provided: open, close, destroy */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"open\", function() { return open; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"close\", function() { return close; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"destroy\", function() { return destroy; });\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Event */ \"./src/Event/index.js\");\n\n\nvar tools;\nvar Xevent;\nvar mapx = {};\nvar curRectangle = undefined;\nvar centerResult = undefined;\nvar mouseStart = false;\nvar syncObject = {};\nvar init = function init(sdk) {\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var div = document.createElement('div');\n div.id = 'mapxDiv';\n div.style.width = '222px';\n div.style.height = '112px';\n div.style.position = 'absolute';\n div.style.right = '10px';\n div.style.bottom = '82px';\n div.style.zIndex = '1';\n document.getElementById(sdk.div_id).appendChild(div);\n var options = {\n imageryProvider: new Cesium.TileMapServiceImageryProvider({\n url: Cesium.buildModuleUrl(\"Assets/Textures/NaturalEarthII\")\n }),\n sceneMode: Cesium.SceneMode.SCENE2D,\n // mapMode2D: Cesium.MapMode2D.ROTATE,\n baseLayerPicker: false,\n geocoder: false,\n animation: false,\n fullscreenButton: false,\n navigationHelpButton: false,\n // vrButton?: boolean;\n homeButton: false,\n infoBox: false,\n sceneModePicker: false,\n selectionIndicator: false,\n timeline: false,\n shouldAnimate: true\n };\n mapx.viewer = new Cesium.Viewer('mapxDiv', options);\n mapx.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(0, 0, 40000000)\n });\n mapx.viewer.trackedEntity = undefined;\n mapx.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);\n mapx.viewer.scene.screenSpaceCameraController.enableRotate = false;\n mapx.viewer.scene.screenSpaceCameraController.enableTranslate = false;\n mapx.viewer.scene.screenSpaceCameraController.enableZoom = false;\n mapx.viewer.scene.screenSpaceCameraController.enableTilt = false;\n mapx.viewer.scene.screenSpaceCameraController.enableLook = false;\n\n // 创建范围框\n var entity = mapx.viewer.entities.add({\n name: 'mapX rectangle',\n position: new Cesium.CallbackProperty(function () {\n return centerResult || Cesium.Cartesian3.fromDegrees(0, 0, 0);\n }, false),\n rectangle: {\n coordinates: new Cesium.CallbackProperty(function () {\n return curRectangle || Cesium.Rectangle.fromDegrees(0.0, 0.0, 0.01, 0.01);\n }, false),\n material: Cesium.Color.RED.withAlpha(0.01),\n outline: true,\n outlineColor: Cesium.Color.RED,\n outlineWidth: 2,\n height: 1\n },\n billboard: {\n image: tools.getSourceRootPath() + '/img/cross.svg',\n scale: 1,\n width: 16,\n height: 16\n }\n });\n syncObject = {\n sdk: sdk,\n entity: entity\n };\n mapx.viewer.camera.percentageChanged = 0.001;\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject); // 鹰眼与主图同步\n var pick;\n Xevent = new _Event__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n viewer: mapx.viewer\n });\n Xevent.mouse_left_down(function (movement, cartesian) {\n mouseStart = true;\n pick = mapx.viewer.scene.pick(movement.position);\n });\n Xevent.mouse_left_up(function (movement, cartesian) {\n mouseStart = false;\n });\n Xevent.mouse_move(function (movement, cartesian) {\n if (pick && mouseStart) {\n var sdkCH = tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer).alt;\n var pos84 = tools.cartesian3Towgs84(cartesian, mapx.viewer);\n // sdk.viewer.camera.position = Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, sdkCH)\n sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(pos84.lng, pos84.lat, sdkCH),\n duration: 0\n });\n }\n });\n};\nfunction syncViewer() {\n if (!this.sdk || !this.sdk.viewer) {\n return;\n }\n // 视角中心点(伪)\n centerResult = this.sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(this.sdk.viewer.canvas.clientWidth / 2, this.sdk.viewer.canvas.clientHeight / (2 - (90 + this.sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = this.sdk.viewer.camera.position;\n }\n var height = tools.cartesian3Towgs84(this.sdk.viewer.camera.position, this.sdk.viewer).alt;\n var centerResult84 = tools.cartesian3Towgs84(centerResult, this.sdk.viewer);\n var stepX = 120000;\n var stepY = 280000;\n if (height > 9000000) {\n height = 9000000;\n }\n if (height < 400000) {\n this.entity.billboard.show = true;\n this.entity.rectangle.show = false;\n } else {\n this.entity.billboard.show = false;\n this.entity.rectangle.show = true;\n }\n curRectangle = new Cesium.Rectangle(Cesium.Math.toRadians(centerResult84.lng - height / stepX), Cesium.Math.toRadians(centerResult84.lat - height / stepY), Cesium.Math.toRadians(centerResult84.lng + height / stepX), Cesium.Math.toRadians(centerResult84.lat + height / stepY));\n}\n;\nfunction open(sdk) {\n if (!mapx.viewer) {\n init(sdk);\n } else {\n mapx.viewer.container.style.display = 'block';\n var entity;\n var entities = mapx.viewer.entities.values;\n for (var i = 0; i < entities.length; i++) {\n if (entities[i].name === 'mapX rectangle') {\n entity = entities[i];\n break;\n }\n }\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject); // 鹰眼与主图同步\n }\n}\nfunction close(sdk) {\n if (!mapx.viewer) {\n return;\n }\n mapx.viewer.container.style.display = 'none';\n var entity;\n var entities = mapx.viewer.entities.values;\n for (var i = 0; i < entities.length; i++) {\n if (entities[i].name === 'mapX rectangle') {\n entity = entities[i];\n break;\n }\n }\n sdk.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n}\nfunction destroy(sdk) {\n if (mapx.viewer) {\n if (mapx.viewer.entities) {\n mapx.viewer.entities.removeAll();\n }\n mapx.viewer.destroy && mapx.viewer.destroy();\n }\n mapx = {};\n sdk.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01hcFgvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL01hcFgvaW5kZXguanM/ZTk0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9vbHMgZnJvbSAnLi4vLi4vVG9vbHMnXHJcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi9FdmVudCdcclxuXHJcbmxldCB0b29sc1xyXG5sZXQgWGV2ZW50XHJcbmxldCBtYXB4ID0ge31cclxubGV0IGN1clJlY3RhbmdsZSA9IHVuZGVmaW5lZDtcclxubGV0IGNlbnRlclJlc3VsdCA9IHVuZGVmaW5lZFxyXG5sZXQgbW91c2VTdGFydCA9IGZhbHNlXHJcbmxldCBzeW5jT2JqZWN0ID0ge31cclxuY29uc3QgaW5pdCA9IChzZGspID0+IHtcclxuICB0b29scyA9IG5ldyBUb29scygpXHJcbiAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gIGRpdi5pZCA9ICdtYXB4RGl2J1xyXG4gIGRpdi5zdHlsZS53aWR0aCA9ICcyMjJweCc7XHJcbiAgZGl2LnN0eWxlLmhlaWdodCA9ICcxMTJweCc7XHJcbiAgZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICBkaXYuc3R5bGUucmlnaHQgPSAnMTBweCc7XHJcbiAgZGl2LnN0eWxlLmJvdHRvbSA9ICc4MnB4JztcclxuICBkaXYuc3R5bGUuekluZGV4ID0gJzEnO1xyXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNkay5kaXZfaWQpLmFwcGVuZENoaWxkKGRpdilcclxuICBsZXQgb3B0aW9ucyA9IHtcclxuICAgIGltYWdlcnlQcm92aWRlcjogbmV3IENlc2l1bS5UaWxlTWFwU2VydmljZUltYWdlcnlQcm92aWRlcih7XHJcbiAgICAgIHVybDogQ2VzaXVtLmJ1aWxkTW9kdWxlVXJsKFwiQXNzZXRzL1RleHR1cmVzL05hdHVyYWxFYXJ0aElJXCIpLFxyXG4gICAgfSksXHJcbiAgICBzY2VuZU1vZGU6IENlc2l1bS5TY2VuZU1vZGUuU0NFTkUyRCxcclxuICAgIC8vIG1hcE1vZGUyRDogQ2VzaXVtLk1hcE1vZGUyRC5ST1RBVEUsXHJcbiAgICBiYXNlTGF5ZXJQaWNrZXI6IGZhbHNlLFxyXG4gICAgZ2VvY29kZXI6IGZhbHNlLFxyXG4gICAgYW5pbWF0aW9uOiBmYWxzZSxcclxuICAgIGZ1bGxzY3JlZW5CdXR0b246IGZhbHNlLFxyXG4gICAgbmF2aWdhdGlvbkhlbHBCdXR0b246IGZhbHNlLFxyXG4gICAgLy8gdnJCdXR0b24/OiBib29sZWFuO1xyXG4gICAgaG9tZUJ1dHRvbjogZmFsc2UsXHJcbiAgICBpbmZvQm94OiBmYWxzZSxcclxuICAgIHNjZW5lTW9kZVBpY2tlcjogZmFsc2UsXHJcbiAgICBzZWxlY3Rpb25JbmRpY2F0b3I6IGZhbHNlLFxyXG4gICAgdGltZWxpbmU6IGZhbHNlLFxyXG4gICAgc2hvdWxkQW5pbWF0ZTogdHJ1ZVxyXG4gIH1cclxuICBtYXB4LnZpZXdlciA9IG5ldyBDZXNpdW0uVmlld2VyKCdtYXB4RGl2Jywgb3B0aW9ucyk7XHJcbiAgbWFweC52aWV3ZXIuY2FtZXJhLnNldFZpZXcoe1xyXG4gICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKDAsIDAsIDQwMDAwMDAwKSxcclxuICB9KVxyXG4gIG1hcHgudmlld2VyLnRyYWNrZWRFbnRpdHkgPSB1bmRlZmluZWQ7XHJcbiAgbWFweC52aWV3ZXIuY2VzaXVtV2lkZ2V0LnNjcmVlblNwYWNlRXZlbnRIYW5kbGVyLnJlbW92ZUlucHV0QWN0aW9uKFxyXG4gICAgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLkxFRlRfRE9VQkxFX0NMSUNLXHJcbiAgKTtcclxuICBtYXB4LnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlUm90YXRlID0gZmFsc2U7XHJcbiAgbWFweC52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRyYW5zbGF0ZSA9IGZhbHNlO1xyXG4gIG1hcHgudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVab29tID0gZmFsc2U7XHJcbiAgbWFweC52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRpbHQgPSBmYWxzZTtcclxuICBtYXB4LnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlTG9vayA9IGZhbHNlO1xyXG5cclxuICAvLyDliJvlu7rojIPlm7TmoYZcclxuICBsZXQgZW50aXR5ID0gbWFweC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgIG5hbWU6ICdtYXBYIHJlY3RhbmdsZScsXHJcbiAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICBjZW50ZXJSZXN1bHQgfHwgQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoMCwgMCwgMClcclxuICAgICAgKTtcclxuICAgIH0sIGZhbHNlKSxcclxuICAgIHJlY3RhbmdsZToge1xyXG4gICAgICBjb29yZGluYXRlczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgY3VyUmVjdGFuZ2xlIHx8IENlc2l1bS5SZWN0YW5nbGUuZnJvbURlZ3JlZXMoMC4wLCAwLjAsIDAuMDEsIDAuMDEpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLlJFRC53aXRoQWxwaGEoMC4wMSksXHJcbiAgICAgIG91dGxpbmU6IHRydWUsXHJcbiAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLlJFRCxcclxuICAgICAgb3V0bGluZVdpZHRoOiAyLFxyXG4gICAgICBoZWlnaHQ6IDEsXHJcbiAgICB9LFxyXG4gICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgIGltYWdlOiB0b29scy5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvY3Jvc3Muc3ZnJyxcclxuICAgICAgc2NhbGU6IDEsXHJcbiAgICAgIHdpZHRoOiAxNixcclxuICAgICAgaGVpZ2h0OiAxNlxyXG4gICAgfSxcclxuICB9KTtcclxuICBzeW5jT2JqZWN0ID0geyBzZGssIGVudGl0eSB9XHJcbiAgbWFweC52aWV3ZXIuY2FtZXJhLnBlcmNlbnRhZ2VDaGFuZ2VkID0gMC4wMDE7XHJcbiAgc2RrLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KTsgLy8g6bmw55y85LiO5Li75Zu+5ZCM5q2lXHJcbiAgbGV0IHBpY2tcclxuICBYZXZlbnQgPSBuZXcgRXZlbnQoeyB2aWV3ZXI6IG1hcHgudmlld2VyIH0pXHJcbiAgWGV2ZW50Lm1vdXNlX2xlZnRfZG93bigobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgbW91c2VTdGFydCA9IHRydWVcclxuICAgIHBpY2sgPSBtYXB4LnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gIH0pXHJcbiAgWGV2ZW50Lm1vdXNlX2xlZnRfdXAoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgIG1vdXNlU3RhcnQgPSBmYWxzZVxyXG4gIH0pXHJcbiAgWGV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgIGlmIChwaWNrICYmIG1vdXNlU3RhcnQpIHtcclxuICAgICAgbGV0IHNka0NIID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb24sIHNkay52aWV3ZXIpLmFsdFxyXG4gICAgICBsZXQgcG9zODQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIG1hcHgudmlld2VyKVxyXG4gICAgICAvLyBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvczg0LmxuZywgcG9zODQubGF0LCBzZGtDSClcclxuICAgICAgc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3M4NC5sbmcsIHBvczg0LmxhdCwgc2RrQ0gpLFxyXG4gICAgICAgIGR1cmF0aW9uOiAwXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG5mdW5jdGlvbiBzeW5jVmlld2VyKCkge1xyXG4gIGlmKCF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgLy8g6KeG6KeS5Lit5b+D54K5KOS8qilcclxuICBjZW50ZXJSZXN1bHQgPSB0aGlzLnNkay52aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW52YXMuY2xpZW50V2lkdGggLyAyLFxyXG4gICAgICB0aGlzLnNkay52aWV3ZXIuY2FudmFzLmNsaWVudEhlaWdodCAvICgyIC0gKCg5MCArIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2ggLyAoQ2VzaXVtLk1hdGguUEkgLyAxODApKSAvIDExMCkpLFxyXG4gICAgKSxcclxuICApXHJcbiAgaWYgKCFjZW50ZXJSZXN1bHQpIHtcclxuICAgIGNlbnRlclJlc3VsdCA9IHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25cclxuICB9XHJcbiAgbGV0IGhlaWdodCA9IHRvb2xzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMuc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb24sIHRoaXMuc2RrLnZpZXdlcikuYWx0XHJcbiAgbGV0IGNlbnRlclJlc3VsdDg0ID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2VudGVyUmVzdWx0LCB0aGlzLnNkay52aWV3ZXIpXHJcbiAgbGV0IHN0ZXBYID0gMTIwMDAwXHJcbiAgbGV0IHN0ZXBZID0gMjgwMDAwXHJcbiAgaWYgKGhlaWdodCA+IDkwMDAwMDApIHtcclxuICAgIGhlaWdodCA9IDkwMDAwMDBcclxuICB9XHJcbiAgaWYgKGhlaWdodCA8IDQwMDAwMCkge1xyXG4gICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSB0cnVlXHJcbiAgICB0aGlzLmVudGl0eS5yZWN0YW5nbGUuc2hvdyA9IGZhbHNlXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgdGhpcy5lbnRpdHkuYmlsbGJvYXJkLnNob3cgPSBmYWxzZVxyXG4gICAgdGhpcy5lbnRpdHkucmVjdGFuZ2xlLnNob3cgPSB0cnVlXHJcbiAgfVxyXG4gIGN1clJlY3RhbmdsZSA9IG5ldyBDZXNpdW0uUmVjdGFuZ2xlKENlc2l1bS5NYXRoLnRvUmFkaWFucyhjZW50ZXJSZXN1bHQ4NC5sbmcgLSAoaGVpZ2h0IC8gc3RlcFgpKSwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGNlbnRlclJlc3VsdDg0LmxhdCAtIChoZWlnaHQgLyBzdGVwWSkpLCBDZXNpdW0uTWF0aC50b1JhZGlhbnMoY2VudGVyUmVzdWx0ODQubG5nICsgKGhlaWdodCAvIHN0ZXBYKSksIENlc2l1bS5NYXRoLnRvUmFkaWFucyhjZW50ZXJSZXN1bHQ4NC5sYXQgKyAoaGVpZ2h0IC8gc3RlcFkpKSlcclxufTtcclxuZnVuY3Rpb24gb3BlbihzZGspIHtcclxuICBpZiAoIW1hcHgudmlld2VyKSB7XHJcbiAgICBpbml0KHNkaylcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBtYXB4LnZpZXdlci5jb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICBsZXQgZW50aXR5XHJcbiAgICBsZXQgZW50aXRpZXMgPSBtYXB4LnZpZXdlci5lbnRpdGllcy52YWx1ZXNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50aXRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGVudGl0aWVzW2ldLm5hbWUgPT09ICdtYXBYIHJlY3RhbmdsZScpIHtcclxuICAgICAgICBlbnRpdHkgPSBlbnRpdGllc1tpXVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHNkay52aWV3ZXIuc2NlbmUucHJlUmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoc3luY1ZpZXdlciwgc3luY09iamVjdCk7IC8vIOm5sOecvOS4juS4u+WbvuWQjOatpVxyXG4gIH1cclxufVxyXG5mdW5jdGlvbiBjbG9zZShzZGspIHtcclxuICBpZiAoIW1hcHgudmlld2VyKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbWFweC52aWV3ZXIuY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgbGV0IGVudGl0eVxyXG4gIGxldCBlbnRpdGllcyA9IG1hcHgudmlld2VyLmVudGl0aWVzLnZhbHVlc1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZW50aXRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChlbnRpdGllc1tpXS5uYW1lID09PSAnbWFwWCByZWN0YW5nbGUnKSB7XHJcbiAgICAgIGVudGl0eSA9IGVudGl0aWVzW2ldXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNkay52aWV3ZXIuc2NlbmUucHJlUmVuZGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY1ZpZXdlciwgc3luY09iamVjdClcclxufVxyXG5mdW5jdGlvbiBkZXN0cm95KHNkaykge1xyXG4gIGlmIChtYXB4LnZpZXdlcikge1xyXG4gICAgaWYgKG1hcHgudmlld2VyLmVudGl0aWVzKSB7XHJcbiAgICAgIG1hcHgudmlld2VyLmVudGl0aWVzLnJlbW92ZUFsbCgpXHJcbiAgICB9XHJcbiAgICBtYXB4LnZpZXdlci5kZXN0cm95ICYmIG1hcHgudmlld2VyLmRlc3Ryb3koKVxyXG4gIH1cclxuICBtYXB4ID0ge31cclxuICBzZGsudmlld2VyLnNjZW5lLnByZVJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNWaWV3ZXIsIHN5bmNPYmplY3QpXHJcbn1cclxuXHJcbmV4cG9ydCB7IG9wZW4sIGNsb3NlLCBkZXN0cm95IH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/MapX/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/MouseCoordinate/index.js":
-/*!*********************************************!*\
- !*** ./src/Global/MouseCoordinate/index.js ***!
- \*********************************************/
-/*! exports provided: MouseCoordinate */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MouseCoordinate\", function() { return MouseCoordinate; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Global/MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Global_SplitScreen__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Global/SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\r\n * 鼠标坐标\r\n */\n\n\n\n\n\nvar event;\nvar event2;\nvar MouseCoordinateElm;\nvar requestAnimationFrameEventId;\nvar tmovement;\nvar targetSdk;\nvar sdkD;\nvar MouseCoordinate = function MouseCoordinate(sdk, status) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n targetSdk = sdk;\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_4__[\"getSdk\"])().sdkD;\n if (!sdkD) {\n sdkD = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_5__[\"getSdk\"])().sdkD;\n }\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_1__[\"default\"](sdk);\n var proj = sdk.proj;\n if (status) {\n var _animateUpdate = function animateUpdate() {\n requestAnimationFrameEventId = requestAnimationFrame(_animateUpdate);\n getPosition();\n };\n if (event) {\n event.destroy();\n }\n if (event2) {\n event2.destroy();\n event2 = undefined;\n }\n event = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n tmovement = null;\n var position = {\n x: '',\n y: '',\n z: ''\n };\n var contentElm;\n if (MouseCoordinateElm) {\n contentElm = MouseCoordinateElm;\n } else {\n contentElm = document.createElement('div');\n contentElm.style.position = 'absolute';\n contentElm.style['z-index'] = 777;\n contentElm.style.color = '#ffffff';\n contentElm.style.left = '0px';\n contentElm.style.top = '0px';\n contentElm.style.width = '100%';\n contentElm.style.height = '100%';\n contentElm.style['font-size'] = '12px';\n contentElm.style['pointer-events'] = 'none';\n contentElm.style.background = \"url(\".concat(tools.getSourceRootPath(), \"/img/cross.png) no-repeat 100% 100%\");\n contentElm.style['background-size'] = \"200% 200%\";\n MouseCoordinateElm = contentElm;\n }\n sdk.viewer.container.appendChild(contentElm);\n event.mouse_move(function (movement, cartesian) {\n targetSdk = sdk;\n tmovement = _objectSpread({}, movement.endPosition);\n });\n var posiToCoordinate = function posiToCoordinate(coordinateSystem, position) {\n var type;\n switch (coordinateSystem) {\n case 'EPSG:32601':\n //WGS84 通用横轴墨卡托投影\n //带号 = ⌊(经度 + 180)/6⌋ + 1\n var dh = Math.round((position.lng + 180) / 6 + 1);\n if (position.lat > 0) {\n //北纬\n type = 32600 + dh;\n type = 'EPSG:' + type;\n } else {\n //南纬\n type = 32700 + dh;\n type = 'EPSG:' + type;\n }\n break;\n case 'EPSG:4534':\n //2000 坐标 3 度不带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4534\n\n var dh3y = Math.round(position.lng / 3);\n type = dh3y - 25 + 4534;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4513':\n //2000 坐标 3 度带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4513\n var dh3w = Math.round(position.lng / 3);\n type = dh3w - 25 + 4513;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4502':\n //2000 坐标 6 度不带代号\n var zoneNumber = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (zoneNumber < 13) zoneNumber = 13;\n if (zoneNumber > 23) zoneNumber = 23;\n type = zoneNumber - 13 + 4502;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4491':\n //2000 坐标 6 度带代号\n //N = floor(longitude/6) + 31\n var dh6 = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (dh6 < 13) dh6 = 13;\n if (dh6 > 23) dh6 = 23;\n type = dh6 - 13 + 4491;\n type = 'EPSG:' + type;\n break;\n default:\n break;\n }\n return type;\n };\n var getPosition = function getPosition() {\n if (!targetSdk) {\n return;\n }\n var canvas = sdk.viewer._element.getElementsByTagName('canvas')[0];\n sdkD = Object(_Global_MultiViewportMode__WEBPACK_IMPORTED_MODULE_4__[\"getSdk\"])().sdkD;\n if (!sdkD) {\n sdkD = Object(_Global_SplitScreen__WEBPACK_IMPORTED_MODULE_5__[\"getSdk\"])().sdkD;\n }\n if (!event2 && sdkD) {\n event2 = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdkD);\n event2.mouse_move(function (movement, cartesian) {\n targetSdk = sdkD;\n tmovement = {\n x: movement.endPosition.x,\n y: movement.endPosition.y\n };\n });\n }\n if (!tmovement) {\n return;\n }\n var left = tmovement.x;\n var top = tmovement.y;\n var cartesian;\n if (targetSdk.viewer.scene.mode === 2) {\n left = left + canvas.width;\n cartesian = targetSdk.viewer.camera.pickEllipsoid(tmovement, targetSdk.viewer.scene.globe.ellipsoid);\n } else {\n cartesian = targetSdk.viewer.scene.pickPosition(tmovement);\n if (!cartesian) {\n var ray = targetSdk.viewer.camera.getPickRay(position); //相交的射线\n var pickedObjects = targetSdk.viewer.scene.drillPickFromRay(ray, 10);\n var result = {};\n for (var i = 0; i < pickedObjects.length; i++) {\n if (pickedObjects[i].position) {\n result = pickedObjects[i];\n break;\n }\n }\n cartesian = result.position;\n if (!cartesian) {\n cartesian = targetSdk.viewer.scene.globe.pick(ray, targetSdk.viewer.scene);\n }\n }\n }\n contentElm.style['background-position-x'] = \"\".concat(-sdk.viewer.container.clientWidth + left + 4, \"px\");\n contentElm.style['background-position-y'] = \"\".concat(-sdk.viewer.container.clientHeight + top - 2, \"px\");\n // this.entity.position = cartesian\n if (cartesian) {\n var degrees = tools.cartesian3Towgs84(cartesian, sdk.viewer);\n var coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_2__[\"getCoordinateSystem\"])();\n var positionType = Object(_Global_global__WEBPACK_IMPORTED_MODULE_2__[\"getDMS\"])();\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n position = {\n x: degrees.lng,\n y: degrees.lat,\n z: degrees.alt\n };\n // contentElm.innerHTML = `经度:${degrees.lng.toFixed(6)}°
维度:${degrees.lat.toFixed(6)}°
海拔:${degrees.alt.toFixed(2)} m
`\n switch (positionType || '度') {\n case '度':\n contentElm.innerHTML = \"\\u7ECF\\u5EA6\\uFF1A\").concat(degrees.lng.toFixed(8), \"\\xB0
\\u7EF4\\u5EA6\\uFF1A\").concat(degrees.lat.toFixed(8), \"\\xB0
\\u6D77\\u62D4\\uFF1A\").concat(Number(degrees.alt.toFixed(2)), \" m
\");\n break;\n case '度分':\n contentElm.innerHTML = \"\\u7ECF\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lng, true), \"
\\u7EF4\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lat, true), \"
\\u6D77\\u62D4\\uFF1A\").concat(Number(degrees.alt.toFixed(2)), \" m
\");\n break;\n case '度分秒':\n contentElm.innerHTML = \"\\u7ECF\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lng, false), \"
\\u7EF4\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(degrees.lat, false), \"
\\u6D77\\u62D4\\uFF1A\").concat(Number(degrees.alt.toFixed(2)), \" m
\");\n break;\n default:\n break;\n }\n } else {\n // let result = tools.convert([{ x: degrees.lng, y: degrees.lat, z: degrees.alt }], 'EPSG:4326', coordinateSystem)\n var _result = tools.convert([{\n x: degrees.lng,\n y: degrees.lat,\n z: degrees.alt\n }], 'EPSG:4326', posiToCoordinate(coordinateSystem, degrees));\n position = _result.points[0];\n contentElm.innerHTML = \"x\\uFF1A\").concat(position.x.toFixed(2), \"
y\\uFF1A\").concat(position.y.toFixed(2), \"
z\\uFF1A\").concat(Number(position.z.toFixed(2)), \"
\");\n }\n } else {\n var _coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_2__[\"getCoordinateSystem\"])();\n if (_coordinateSystem === 'EPSG:4326' || _coordinateSystem === 'EPSG:4490') {\n contentElm.innerHTML = \"\\u7ECF\\u5EA6\\uFF1A-
\\u7EF4\\u5EA6\\uFF1A-
\\u6D77\\u62D4\\uFF1A-
\");\n } else {\n contentElm.innerHTML = \"x\\uFF1A-
y\\uFF1A-
z\\uFF1A-
\");\n }\n }\n };\n _animateUpdate();\n } else {\n if (event) {\n event.destroy();\n }\n if (event2) {\n event2.destroy();\n event2 = undefined;\n }\n if (MouseCoordinateElm) {\n sdk.viewer.container.removeChild(MouseCoordinateElm);\n MouseCoordinateElm = undefined;\n }\n if (requestAnimationFrameEventId) {\n cancelAnimationFrame(requestAnimationFrameEventId);\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL01vdXNlQ29vcmRpbmF0ZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvTW91c2VDb29yZGluYXRlL2luZGV4LmpzP2RhZjQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOm8oOagh+WdkOagh1xyXG4gKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi9Ub29sc1wiO1xyXG5pbXBvcnQgeyBnZXRDb29yZGluYXRlU3lzdGVtLCBnZXRETVMgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL2dsb2JhbFwiO1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IHsgZ2V0U2RrIGFzIGdldDJEU2RrIH0gZnJvbSAnLi4vLi4vR2xvYmFsL011bHRpVmlld3BvcnRNb2RlJ1xyXG5pbXBvcnQgeyBnZXRTZGsgYXMgZ2V0U3BsaXRTY3JlZW5TZGsgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL1NwbGl0U2NyZWVuXCI7XHJcblxyXG5sZXQgZXZlbnRcclxubGV0IGV2ZW50MlxyXG5sZXQgTW91c2VDb29yZGluYXRlRWxtXHJcbmxldCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudElkXHJcbmxldCB0bW92ZW1lbnRcclxubGV0IHRhcmdldFNka1xyXG5sZXQgc2RrRFxyXG5cclxuY29uc3QgTW91c2VDb29yZGluYXRlID0gKHNkaywgc3RhdHVzKSA9PiB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICB0YXJnZXRTZGsgPSBzZGtcclxuICBzZGtEID0gZ2V0MkRTZGsoKS5zZGtEXHJcbiAgaWYgKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U3BsaXRTY3JlZW5TZGsoKS5zZGtEXHJcbiAgfVxyXG5cclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoc2RrKVxyXG4gIGxldCBwcm9qID0gc2RrLnByb2pcclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuZGVzdHJveSgpXHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQyKSB7XHJcbiAgICAgIGV2ZW50Mi5kZXN0cm95KClcclxuICAgICAgZXZlbnQyID0gdW5kZWZpbmVkXHJcbiAgICB9XHJcbiAgICBldmVudCA9IG5ldyBNb3VzZUV2ZW50KHNkaylcclxuICAgIHRtb3ZlbWVudCA9IG51bGxcclxuICAgIGxldCBwb3NpdGlvbiA9IHtcclxuICAgICAgeDogJycsXHJcbiAgICAgIHk6ICcnLFxyXG4gICAgICB6OiAnJ1xyXG4gICAgfVxyXG4gICAgbGV0IGNvbnRlbnRFbG1cclxuICAgIGlmIChNb3VzZUNvb3JkaW5hdGVFbG0pIHtcclxuICAgICAgY29udGVudEVsbSA9IE1vdXNlQ29vcmRpbmF0ZUVsbVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGVbJ3otaW5kZXgnXSA9IDc3NztcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5jb2xvciA9ICcjZmZmZmZmJztcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5sZWZ0ID0gJzBweCc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGUudG9wID0gJzBweCc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgIGNvbnRlbnRFbG0uc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgICBjb250ZW50RWxtLnN0eWxlWydmb250LXNpemUnXSA9ICcxMnB4JztcclxuICAgICAgY29udGVudEVsbS5zdHlsZVsncG9pbnRlci1ldmVudHMnXSA9ICdub25lJztcclxuICAgICAgY29udGVudEVsbS5zdHlsZS5iYWNrZ3JvdW5kID0gYHVybCgke3Rvb2xzLmdldFNvdXJjZVJvb3RQYXRoKCl9L2ltZy9jcm9zcy5wbmcpIG5vLXJlcGVhdCAxMDAlIDEwMCVgO1xyXG4gICAgICBjb250ZW50RWxtLnN0eWxlWydiYWNrZ3JvdW5kLXNpemUnXSA9IGAyMDAlIDIwMCVgO1xyXG4gICAgICBNb3VzZUNvb3JkaW5hdGVFbG0gPSBjb250ZW50RWxtXHJcbiAgICB9XHJcbiAgICBzZGsudmlld2VyLmNvbnRhaW5lci5hcHBlbmRDaGlsZChjb250ZW50RWxtKVxyXG5cclxuICAgIGV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgdGFyZ2V0U2RrID0gc2RrXHJcbiAgICAgIHRtb3ZlbWVudCA9IHsgLi4ubW92ZW1lbnQuZW5kUG9zaXRpb24gfVxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBwb3NpVG9Db29yZGluYXRlID0gKGNvb3JkaW5hdGVTeXN0ZW0sIHBvc2l0aW9uKSA9PiB7XHJcbiAgICAgIGxldCB0eXBlXHJcbiAgICAgIHN3aXRjaCAoY29vcmRpbmF0ZVN5c3RlbSkge1xyXG4gICAgICAgIGNhc2UgJ0VQU0c6MzI2MDEnOi8vV0dTODQg6YCa55So5qiq6L205aKo5Y2h5omY5oqV5b2xXHJcbiAgICAgICAgICAvL+W4puWPtyA9IOKMiijnu4/luqYgKyAxODApLzbijIsgKyAxXHJcbiAgICAgICAgICB2YXIgZGggPSBNYXRoLnJvdW5kKChwb3NpdGlvbi5sbmcgKyAxODApIC8gNiArIDEpXHJcblxyXG4gICAgICAgICAgaWYgKHBvc2l0aW9uLmxhdCA+IDApIHsvL+WMl+e6rFxyXG4gICAgICAgICAgICB0eXBlID0gMzI2MDAgKyBkaFxyXG4gICAgICAgICAgICB0eXBlID0gJ0VQU0c6JyArIHR5cGVcclxuICAgICAgICAgIH0gZWxzZSB7Ly/ljZfnuqxcclxuICAgICAgICAgICAgdHlwZSA9IDMyNzAwICsgZGhcclxuICAgICAgICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdFUFNHOjQ1MzQnOi8vMjAwMCDlnZDmoIcgMyDluqbkuI3luKbku6Plj7dcclxuICAgICAgICAgIC8vTiA9IHJvdW5kKOe7j+W6pi8zKVxyXG4gICAgICAgICAgLy9FUFNHID0gTiAtIDI1ICsgNDUzNFxyXG5cclxuICAgICAgICAgIHZhciBkaDN5ID0gTWF0aC5yb3VuZChwb3NpdGlvbi5sbmcgLyAzKVxyXG4gICAgICAgICAgdHlwZSA9IGRoM3kgLSAyNSArIDQ1MzRcclxuICAgICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnRVBTRzo0NTEzJzovLzIwMDAg5Z2Q5qCHIDMg5bqm5bim5Luj5Y+3XHJcbiAgICAgICAgICAvL04gPSByb3VuZCjnu4/luqYvMylcclxuICAgICAgICAgIC8vRVBTRyA9IE4gLSAyNSArIDQ1MTNcclxuICAgICAgICAgIHZhciBkaDN3ID0gTWF0aC5yb3VuZChwb3NpdGlvbi5sbmcgLyAzKVxyXG4gICAgICAgICAgdHlwZSA9IGRoM3cgLSAyNSArIDQ1MTNcclxuICAgICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnRVBTRzo0NTAyJzovLzIwMDAg5Z2Q5qCHIDYg5bqm5LiN5bim5Luj5Y+3XHJcbiAgICAgICAgICBsZXQgem9uZU51bWJlciA9IE1hdGguZmxvb3IocG9zaXRpb24ubG5nIC8gNikgKyAzMVxyXG4gICAgICAgICAgLy8g5Lit5Zu95Yy65Z+fNuW6puW4puW4puWPt+iMg+WbtOS4ujEzLTIzXHJcbiAgICAgICAgICBpZiAoem9uZU51bWJlciA8IDEzKSB6b25lTnVtYmVyID0gMTM7XHJcbiAgICAgICAgICBpZiAoem9uZU51bWJlciA+IDIzKSB6b25lTnVtYmVyID0gMjM7XHJcbiAgICAgICAgICB0eXBlID0gKHpvbmVOdW1iZXIgLSAxMykgKyA0NTAyXHJcbiAgICAgICAgICB0eXBlID0gJ0VQU0c6JyArIHR5cGVcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0VQU0c6NDQ5MSc6Ly8yMDAwIOWdkOaghyA2IOW6puW4puS7o+WPt1xyXG4gICAgICAgICAgLy9OID0gZmxvb3IobG9uZ2l0dWRlLzYpICsgMzFcclxuICAgICAgICAgIHZhciBkaDYgPSBNYXRoLmZsb29yKHBvc2l0aW9uLmxuZyAvIDYpICsgMzFcclxuICAgICAgICAgIC8vIOS4reWbveWMuuWfnzbluqbluKbluKblj7fojIPlm7TkuLoxMy0yM1xyXG4gICAgICAgICAgaWYgKGRoNiA8IDEzKSBkaDYgPSAxMztcclxuICAgICAgICAgIGlmIChkaDYgPiAyMykgZGg2ID0gMjM7XHJcbiAgICAgICAgICB0eXBlID0gKGRoNiAtIDEzKSArIDQ0OTFcclxuICAgICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0eXBlXHJcbiAgICB9XHJcbiAgICBjb25zdCBnZXRQb3NpdGlvbiA9ICgpID0+IHtcclxuICAgICAgaWYgKCF0YXJnZXRTZGspIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgY2FudmFzID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF1cclxuICAgICAgc2RrRCA9IGdldDJEU2RrKCkuc2RrRFxyXG4gICAgICBpZiAoIXNka0QpIHtcclxuICAgICAgICBzZGtEID0gZ2V0U3BsaXRTY3JlZW5TZGsoKS5zZGtEXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFldmVudDIgJiYgc2RrRCkge1xyXG4gICAgICAgIGV2ZW50MiA9IG5ldyBNb3VzZUV2ZW50KHNka0QpXHJcbiAgICAgICAgZXZlbnQyLm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICAgIHRhcmdldFNkayA9IHNka0RcclxuICAgICAgICAgIHRtb3ZlbWVudCA9IHsgeDogbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgeTogbW92ZW1lbnQuZW5kUG9zaXRpb24ueSB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRtb3ZlbWVudCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBsZWZ0ID0gdG1vdmVtZW50Lng7XHJcbiAgICAgIGxldCB0b3AgPSB0bW92ZW1lbnQueTtcclxuICAgICAgbGV0IGNhcnRlc2lhblxyXG4gICAgICBpZiAodGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICAgICAgbGVmdCA9IGxlZnQgKyBjYW52YXMud2lkdGhcclxuICAgICAgICBjYXJ0ZXNpYW4gPSB0YXJnZXRTZGsudmlld2VyLmNhbWVyYS5waWNrRWxsaXBzb2lkKHRtb3ZlbWVudCwgdGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY2FydGVzaWFuID0gdGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24odG1vdmVtZW50KVxyXG4gICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICBjb25zdCByYXkgPSB0YXJnZXRTZGsudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvc2l0aW9uKTsgLy/nm7jkuqTnmoTlsITnur9cclxuICAgICAgICAgIGxldCBwaWNrZWRPYmplY3RzID0gdGFyZ2V0U2RrLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KHJheSwgMTApO1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHt9XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBpY2tlZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHBpY2tlZE9iamVjdHNbaV0ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICByZXN1bHQgPSBwaWNrZWRPYmplY3RzW2ldXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FydGVzaWFuID0gcmVzdWx0LnBvc2l0aW9uXHJcbiAgICAgICAgICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgICAgICAgICBjYXJ0ZXNpYW4gPSB0YXJnZXRTZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCB0YXJnZXRTZGsudmlld2VyLnNjZW5lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29udGVudEVsbS5zdHlsZVsnYmFja2dyb3VuZC1wb3NpdGlvbi14J10gPSBgJHstc2RrLnZpZXdlci5jb250YWluZXIuY2xpZW50V2lkdGggKyBsZWZ0ICsgNH1weGA7XHJcblxyXG4gICAgICBjb250ZW50RWxtLnN0eWxlWydiYWNrZ3JvdW5kLXBvc2l0aW9uLXknXSA9IGAkey1zZGsudmlld2VyLmNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyB0b3AgLSAyfXB4YDtcclxuICAgICAgLy8gdGhpcy5lbnRpdHkucG9zaXRpb24gPSBjYXJ0ZXNpYW5cclxuICAgICAgaWYgKGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBkZWdyZWVzID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gICAgICAgIGxldCBjb29yZGluYXRlU3lzdGVtID0gZ2V0Q29vcmRpbmF0ZVN5c3RlbSgpXHJcbiAgICAgICAgbGV0IHBvc2l0aW9uVHlwZSA9IGdldERNUygpXHJcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQzMjYnIHx8IGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbiA9IHtcclxuICAgICAgICAgICAgeDogZGVncmVlcy5sbmcsXHJcbiAgICAgICAgICAgIHk6IGRlZ3JlZXMubGF0LFxyXG4gICAgICAgICAgICB6OiBkZWdyZWVzLmFsdFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBzdHlsZT0nd2lkdGg6IDE1MHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNzc3OyBjb2xvcjogI2ZmMDAwMDsgZm9udC1zaXplOiAxMnB4OyBsZWZ0OiR7bGVmdCArIDIwfXB4OyB0b3A6JHt0b3AgKyAxMH1weDsnPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7nu4/luqbvvJoke2RlZ3JlZXMubG5nLnRvRml4ZWQoNil9wrA8L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7tOW6pu+8miR7ZGVncmVlcy5sYXQudG9GaXhlZCg2KX3CsDwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+5rW35ouU77yaJHtkZWdyZWVzLmFsdC50b0ZpeGVkKDIpfSBtPC9wPjwvZGl2PmBcclxuICAgICAgICAgIHN3aXRjaCAocG9zaXRpb25UeXBlIHx8ICfluqYnKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ+W6pic6XHJcbiAgICAgICAgICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0nbW91c2VQb3NpV29yZHMnIHN0eWxlPSd3aWR0aDogMTYwcHg7cG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA3Nzc7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDEycHg7IGxlZnQ6JHtsZWZ0ICsgMjB9cHg7IHRvcDoke3RvcCArIDEwfXB4Oyc+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7j+W6pu+8miR7ZGVncmVlcy5sbmcudG9GaXhlZCg4KX3CsDwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+57u05bqm77yaJHtkZWdyZWVzLmxhdC50b0ZpeGVkKDgpfcKwPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7mtbfmi5TvvJoke051bWJlcihkZWdyZWVzLmFsdC50b0ZpeGVkKDIpKX0gbTwvcD48L2Rpdj5gXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ+W6puWIhic6XHJcbiAgICAgICAgICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0nbW91c2VQb3NpV29yZHMnIHN0eWxlPSd3aWR0aDogMTUwcHg7cG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA3Nzc7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDEycHg7IGxlZnQ6JHtsZWZ0ICsgMjB9cHg7IHRvcDoke3RvcCArIDEwfXB4Oyc+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7j+W6pu+8miR7cHJvai5kZWdyZWVzVG9ETVMoZGVncmVlcy5sbmcsIHRydWUpfTwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+57u05bqm77yaJHtwcm9qLmRlZ3JlZXNUb0RNUyhkZWdyZWVzLmxhdCwgdHJ1ZSl9PC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7mtbfmi5TvvJoke051bWJlcihkZWdyZWVzLmFsdC50b0ZpeGVkKDIpKX0gbTwvcD48L2Rpdj5gXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ+W6puWIhuenkic6XHJcbiAgICAgICAgICAgICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz0nbW91c2VQb3NpV29yZHMnIHN0eWxlPSd3aWR0aDogMTUwcHg7cG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA3Nzc7IGNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDEycHg7IGxlZnQ6JHtsZWZ0ICsgMjB9cHg7IHRvcDoke3RvcCArIDEwfXB4Oyc+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7j+W6pu+8miR7cHJvai5kZWdyZWVzVG9ETVMoZGVncmVlcy5sbmcsIGZhbHNlKX08L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPue7tOW6pu+8miR7cHJvai5kZWdyZWVzVG9ETVMoZGVncmVlcy5sYXQsIGZhbHNlKX08L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPua1t+aLlO+8miR7TnVtYmVyKGRlZ3JlZXMuYWx0LnRvRml4ZWQoMikpfSBtPC9wPjwvZGl2PmBcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAvLyBsZXQgcmVzdWx0ID0gdG9vbHMuY29udmVydChbeyB4OiBkZWdyZWVzLmxuZywgeTogZGVncmVlcy5sYXQsIHo6IGRlZ3JlZXMuYWx0IH1dLCAnRVBTRzo0MzI2JywgY29vcmRpbmF0ZVN5c3RlbSlcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB0b29scy5jb252ZXJ0KFt7IHg6IGRlZ3JlZXMubG5nLCB5OiBkZWdyZWVzLmxhdCwgejogZGVncmVlcy5hbHQgfV0sICdFUFNHOjQzMjYnLCBwb3NpVG9Db29yZGluYXRlKGNvb3JkaW5hdGVTeXN0ZW0sIGRlZ3JlZXMpKVxyXG4gICAgICAgICAgcG9zaXRpb24gPSByZXN1bHQucG9pbnRzWzBdXHJcbiAgICAgICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPSdtb3VzZVBvc2lXb3Jkcycgc3R5bGU9J3dpZHRoOiAxNTBweDtwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDc3NzsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMTJweDsgbGVmdDoke2xlZnQgKyAyMH1weDsgdG9wOiR7dG9wICsgMTB9cHg7Jz48cCBzdHlsZT0nbWFyZ2luOiAwOyc+eO+8miR7cG9zaXRpb24ueC50b0ZpeGVkKDIpfTwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+ee+8miR7cG9zaXRpb24ueS50b0ZpeGVkKDIpfTwvcD48cCBzdHlsZT0nbWFyZ2luOiAwOyc+eu+8miR7TnVtYmVyKHBvc2l0aW9uLnoudG9GaXhlZCgyKSl9PC9wPjwvZGl2PmBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVTeXN0ZW0gPSBnZXRDb29yZGluYXRlU3lzdGVtKClcclxuICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgICAgICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9J21vdXNlUG9zaVdvcmRzJyBzdHlsZT0nd2lkdGg6IDE2MHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNzc3OyBjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAxMnB4OyBsZWZ0OiR7bGVmdCArIDIwfXB4OyB0b3A6JHt0b3AgKyAxMH1weDsnPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7nu4/luqbvvJotPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7nu7TluqbvvJotPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz7mtbfmi5TvvJotPC9wPjwvZGl2PmBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPSdtb3VzZVBvc2lXb3Jkcycgc3R5bGU9J3dpZHRoOiAxNTBweDtwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDc3NzsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMTJweDsgbGVmdDoke2xlZnQgKyAyMH1weDsgdG9wOiR7dG9wICsgMTB9cHg7Jz48cCBzdHlsZT0nbWFyZ2luOiAwOyc+eO+8mi08L3A+PHAgc3R5bGU9J21hcmdpbjogMDsnPnnvvJotPC9wPjxwIHN0eWxlPSdtYXJnaW46IDA7Jz5677yaLTwvcD48L2Rpdj5gXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYW5pbWF0ZVVwZGF0ZSgpXHJcbiAgICBmdW5jdGlvbiBhbmltYXRlVXBkYXRlKCkge1xyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudElkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFxyXG4gICAgICAgIGFuaW1hdGVVcGRhdGVcclxuICAgICAgKVxyXG4gICAgICBnZXRQb3NpdGlvbigpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LmRlc3Ryb3koKVxyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50Mikge1xyXG4gICAgICBldmVudDIuZGVzdHJveSgpXHJcbiAgICAgIGV2ZW50MiA9IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gICAgaWYgKE1vdXNlQ29vcmRpbmF0ZUVsbSkge1xyXG4gICAgICBzZGsudmlld2VyLmNvbnRhaW5lci5yZW1vdmVDaGlsZChNb3VzZUNvb3JkaW5hdGVFbG0pXHJcbiAgICAgIE1vdXNlQ29vcmRpbmF0ZUVsbSA9IHVuZGVmaW5lZFxyXG4gICAgfVxyXG4gICAgaWYgKHJlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50SWQpIHtcclxuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZClcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IE1vdXNlQ29vcmRpbmF0ZSB9XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUEwTEE7QUFHQTtBQUNBO0FBN0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFPQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/MouseCoordinate/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/MultiViewportMode/ClickCallback/index.js":
-/*!*************************************************************!*\
- !*** ./src/Global/MultiViewportMode/ClickCallback/index.js ***!
- \*************************************************************/
-/*! exports provided: openLeftClick, closeLeftClick, regLeftClickCallback, unRegLeftClickCallback, openRightClick, closeRightClick, regRightClickCallback, unRegRightClickCallback, openMove, closeMove, regMoveCallback, unregMoveCallback, getLeftClickState, getRightClickState, getMoveState */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openLeftClick\", function() { return openLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeLeftClick\", function() { return closeLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regLeftClickCallback\", function() { return regLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegLeftClickCallback\", function() { return unRegLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openRightClick\", function() { return openRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRightClick\", function() { return closeRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regRightClickCallback\", function() { return regRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegRightClickCallback\", function() { return unRegRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openMove\", function() { return openMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeMove\", function() { return closeMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regMoveCallback\", function() { return regMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregMoveCallback\", function() { return unregMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLeftClickState\", function() { return getLeftClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRightClickState\", function() { return getRightClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMoveState\", function() { return getMoveState; });\n/**\r\n * @name: click\r\n * @author: Administrator\r\n * @date: 2023-05-28 11:05\r\n * @description:click\r\n * @update: 2023-05-28 11:05\r\n */\nvar leftClickHandler = null;\nvar rightClickHandler = null;\nvar MoveHandler = null;\nvar leftClickCallbackMap = new Map();\nvar rightClickCallbackMap = new Map();\nvar MoveCallbackMap = new Map();\nvar selectedFeature;\nfunction cartesian3Towgs84(cartesian, viewer) {\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n}\nfunction getcartesian(sdk, movement) {\n if (movement.endPosition) {\n movement.endPosition.y -= 2;\n }\n var position = movement.position || movement.endPosition;\n // 获取世界坐标系地表坐标,考虑地形,不包括模型,倾斜摄影模型表面;\n var cartesian = sdk.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n return cartesian;\n}\nfunction openLeftClick(sdk, cb) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n var click = true;\n leftClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n leftClickHandler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(movement.position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n if (!cartesian) {\n return;\n }\n var pos84 = cartesian3Towgs84(cartesian, sdk.viewer);\n cb && cb(pos84);\n if (click) {\n click = false;\n setTimeout(function () {\n click = true;\n }, 600);\n if (!YJ.Measure.GetMeasureStatus() && cartesian) {\n var flag = false;\n for (var i = leftClickCallbackMap.size - 1; i >= 0; i--) {\n var key = Array.from(leftClickCallbackMap.keys())[i];\n var obj = leftClickCallbackMap.get(key);\n if (obj) {\n if (obj.that) {\n // 是否为多边形\n if (obj.that.type === 'PolygonObject') {\n // 是否可点击y\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var pt = turf.point([pos84.lng, pos84.lat]);\n var polyPos = [];\n for (var _i = 0; _i < obj.that.options.positions.length; _i++) {\n polyPos.push([obj.that.options.positions[_i].lng, obj.that.options.positions[_i].lat]);\n }\n polyPos.push([obj.that.options.positions[0].lng, obj.that.options.positions[0].lat]);\n var poly = turf.polygon([polyPos]);\n var contain = turf.booleanPointInPolygon(pt, poly);\n if (contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 聚集地\n else if (obj.that.type === 'AssembleObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var positions = obj.that.computeAssemble(obj.that.options.positions, true);\n var _pt = turf.point([pos84.lng, pos84.lat]);\n var _polyPos = [];\n for (var _i2 = 0; _i2 < positions.length; _i2 += 2) {\n _polyPos.push([positions[_i2], positions[_i2 + 1]]);\n }\n var _poly = turf.polygon([_polyPos]);\n var _contain = turf.booleanPointInPolygon(_pt, _poly);\n if (_contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 单箭头\n else if (obj.that.type === 'AttackArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var _pt2 = turf.point([pos84.lng, pos84.lat]);\n var _positions = obj.that.computeAttackArrow(obj.that.options.positions);\n var _polyPos2 = [];\n for (var m = 0; m < _positions.length; m++) {\n var _pos = cartesian3Towgs84(_positions[m], sdk.viewer);\n _polyPos2.push([_pos.lng, _pos.lat]);\n }\n var _poly2 = turf.polygon([_polyPos2]);\n var _contain2 = turf.booleanPointInPolygon(_pt2, _poly2);\n if (_contain2) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 双箭头\n else if (obj.that.type === 'PincerArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 5) {\n var _pt3 = turf.point([pos84.lng, pos84.lat]);\n var _positions2 = obj.that.computePincerArrow(obj.that.options.positions);\n var _polyPos3 = [];\n for (var _m = 0; _m < _positions2.length; _m++) {\n var _pos2 = cartesian3Towgs84(_positions2[_m], sdk.viewer);\n _polyPos3.push([_pos2.lng, _pos2.lat]);\n }\n var pos84_0 = cartesian3Towgs84(_positions2[0], sdk.viewer);\n _polyPos3.push([pos84_0.lng, pos84_0.lat]);\n var _poly3 = turf.polygon([_polyPos3]);\n var _contain3 = turf.booleanPointInPolygon(_pt3, _poly3);\n if (_contain3) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 圆\n else if (obj.that.type === 'CircleObject') {\n if (obj.that.picking) {\n var _pt4 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius) {\n var center = [obj.that.options.center.lng, obj.that.options.center.lat];\n var radius = obj.that.options.radius / 1000;\n var options = {\n steps: 360,\n units: 'kilometers'\n };\n var circle = turf.circle(center, radius, options);\n var _contain4 = turf.booleanPointInPolygon(_pt4, circle);\n if (_contain4) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 扇形\n else if (obj.that.type === 'SectorObject') {\n if (obj.that.picking) {\n var _pt5 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius && obj.that.options.startAngle && obj.that.options.endAngle) {\n var _positions3 = obj.that.calSector(obj.that.options.center, obj.that.options.radius, obj.that.options.startAngle, obj.that.options.endAngle, undefined, true);\n var _polyPos4 = [];\n for (var _m2 = 0; _m2 < _positions3.length; _m2++) {\n _polyPos4.push([_positions3[_m2].lng, _positions3[_m2].lat]);\n }\n var _poly4 = turf.polygon([_polyPos4]);\n var _contain5 = turf.booleanPointInPolygon(_pt5, _poly4);\n if (_contain5) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n }\n }\n }\n if (!flag) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n var entityId;\n // 矢量\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var _obj = leftClickCallbackMap.get(pick.id.parentId);\n if (_obj.that.picking && _obj.that.geojson) {\n for (var _i3 = 0; _i3 < _obj.that.geojson.features.length; _i3++) {\n if (_obj.that.geojson.features[_i3].id === pick.id._id) {\n _obj.callback(movement, _obj.that.geojson.features[_i3].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj.that);\n }\n }\n }\n } else if (typeof pick.id.id == 'string') {\n var array = pick.id.id.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n }\n if (pick.id.properties && pick.id.properties.id && leftClickCallbackMap.has(pick.id.properties.id._value)) {\n var _obj2 = leftClickCallbackMap.get(pick.id.properties.id._value);\n if (_obj2.that.picking) {\n _obj2.callback(movement, pick.id.properties.id._value, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj2.that);\n }\n } else if (leftClickCallbackMap.has(pick.id.id)) {\n var _obj3 = leftClickCallbackMap.get(pick.id.id);\n if (_obj3.that.picking) {\n _obj3.callback(movement, pick.id.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj3.that);\n }\n } else if (entityId && leftClickCallbackMap.has(entityId)) {\n var _obj4 = leftClickCallbackMap.get(entityId);\n if (_obj4.that.picking) {\n _obj4.callback(movement, entityId, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj4.that);\n }\n } else if (pick.primitive) {\n if (typeof pick.id == 'string' && leftClickCallbackMap.has(pick.id)) {\n var _obj5 = leftClickCallbackMap.get(pick.id);\n _obj5.callback(movement, pick.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj5.that);\n }\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n if (leftClickCallbackMap.has(pick.primitive.id)) {\n var _obj6 = leftClickCallbackMap.get(pick.primitive.id);\n if (_obj6.that.picking) {\n if (_obj6.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj6.callback(movement, pick.primitive, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n } else {\n _obj6.callback(movement, pick.primitive.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n }\n }\n }\n }\n if (pick.content && (!pick.primitive || !pick.primitive.id)) {\n if (leftClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj7 = leftClickCallbackMap.get(pick.content.tileset.id);\n if (_obj7.that.picking) {\n if (_obj7.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj7.callback(movement, pick.content.tileset, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n } else {\n _obj7.callback(movement, pick.content.tileset.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // if (click) {\n // click = false\n // setTimeout(() => {\n // click = true\n // }, 300);\n // if (!YJ.Measure.GetMeasureStatus()) {\n\n // }\n // }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n\n // leftClickHandler.setInputAction(function (movement) {\n // const feature = sdk.viewer.scene.pick(movement.endPosition);\n // // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // selectedFeature.color = Cesium.Color.WHITE;\n // }\n // selectedFeature = feature\n // if (feature) {\n // feature.color = Cesium.Color.YELLOW;\n // }\n // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // }\n}\nfunction closeLeftClick(sdk) {\n leftClickHandler.destroy(); //关闭事件句柄\n leftClickHandler = null;\n // }\n}\nfunction openRightClick(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n rightClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n rightClickHandler.setInputAction(function (movement) {\n if (!YJ.Measure.GetMeasureStatus()) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id) {\n var id;\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var obj = rightClickCallbackMap.get(pick.id.parentId);\n if (obj.that.picking && obj.that.geojson) {\n for (var i = 0; i < obj.that.geojson.features.length; i++) {\n if (obj.that.geojson.features[i].id === pick.id._id) {\n obj.callback(movement, obj.that.geojson.features[i].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n }\n }\n }\n } else {\n if (typeof pick.id === 'string') {\n id = pick.id;\n } else {\n id = pick.id.id;\n }\n if (rightClickCallbackMap.has(id)) {\n var _obj8 = rightClickCallbackMap.get(id);\n if (_obj8.that.picking) {\n var cartesian = getcartesian(sdk, movement);\n if (!cartesian) {\n return;\n }\n _obj8.callback(movement, id, cartesian3Towgs84(cartesian, sdk.viewer), _obj8.that);\n }\n }\n }\n }\n if (pick && pick.content) {\n if (rightClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj9 = rightClickCallbackMap.get(pick.content.tileset.id);\n if (_obj9.that.picking) {\n if (_obj9.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n var _cartesian = getcartesian(sdk, movement);\n if (!_cartesian) {\n return;\n }\n _obj9.callback(movement, pick.getProperty('id'), cartesian3Towgs84(_cartesian, sdk.viewer), _obj9.that);\n }\n } else {\n var _cartesian2 = getcartesian(sdk, movement);\n if (!_cartesian2) {\n return;\n }\n _obj9.callback(movement, pick.content.tileset.id, cartesian3Towgs84(_cartesian2, sdk.viewer), _obj9.that);\n }\n }\n }\n }\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n}\nfunction closeRightClick() {\n if (rightClickHandler) {\n rightClickHandler.destroy(); //关闭事件句柄\n rightClickHandler = null;\n }\n}\nfunction openMove(sdk) {\n MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n // if (pick && pick.id) { }\n // if (pick && pick.content) {\n // if (MoveCallbackMap.has(pick.content.tileset.id)) {\n // let obj = MoveCallbackMap.get(pick.content.tileset.id)\n // if (obj.that.picking) {\n // if (obj.that.type === 'bim') {\n // if (YJ.Global.getBimPickStatus(sdk)) {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // else {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction closeMove() {\n if (MoveHandler) {\n MoveHandler.destroy(); //关闭事件句柄\n MoveHandler = null;\n }\n}\n\n/*注册左键回调*/\nfunction regLeftClickCallback(id, callback, that) {\n leftClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unRegLeftClickCallback(id) {\n leftClickCallbackMap.delete(id);\n}\n\n/*注册右键回调*/\nfunction regRightClickCallback(id, callback, that) {\n rightClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消右键回调*/\nfunction unRegRightClickCallback(id) {\n rightClickCallbackMap.delete(id);\n}\n\n/*注册左键回调*/\nfunction regMoveCallback(id, callback, that) {\n MoveCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unregMoveCallback(id) {\n MoveCallbackMap.delete(id);\n}\nfunction getLeftClickState() {\n if (leftClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getRightClickState() {\n if (rightClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getMoveState() {\n if (MoveHandler) {\n return true;\n } else {\n false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL011bHRpVmlld3BvcnRNb2RlL0NsaWNrQ2FsbGJhY2svaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL011bHRpVmlld3BvcnRNb2RlL0NsaWNrQ2FsbGJhY2svaW5kZXguanM/NzMyYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGNsaWNrXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMDUtMjggMTE6MDVcclxuICogQGRlc2NyaXB0aW9u77yaY2xpY2tcclxuICogQHVwZGF0ZTogMjAyMy0wNS0yOCAxMTowNVxyXG4gKi9cclxubGV0IGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbmxldCByaWdodENsaWNrSGFuZGxlciA9IG51bGxcclxubGV0IE1vdmVIYW5kbGVyID0gbnVsbFxyXG5sZXQgbGVmdENsaWNrQ2FsbGJhY2tNYXAgPSBuZXcgTWFwKClcclxubGV0IHJpZ2h0Q2xpY2tDYWxsYmFja01hcCA9IG5ldyBNYXAoKVxyXG5sZXQgTW92ZUNhbGxiYWNrTWFwID0gbmV3IE1hcCgpXHJcbmxldCBzZWxlY3RlZEZlYXR1cmU7XHJcblxyXG5cclxuZnVuY3Rpb24gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB2aWV3ZXIpIHtcclxuICB2YXIgZWxsaXBzb2lkID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgY2FydGVzaWFuLngsXHJcbiAgICBjYXJ0ZXNpYW4ueSxcclxuICAgIGNhcnRlc2lhbi56XHJcbiAgKVxyXG4gIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICB2YXIgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4ge1xyXG4gICAgbG5nOiBsbmcsXHJcbiAgICBsYXQ6IGxhdCxcclxuICAgIGFsdDogYWx0LFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpIHtcclxuICBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLT0gMlxyXG4gIH1cclxuICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gIC8vIOiOt+WPluS4lueVjOWdkOagh+ezu+WcsOihqOWdkOagh++8jOiAg+iZkeWcsOW9ou+8jOS4jeWMheaLrOaooeWei++8jOWAvuaWnOaRhOW9seaooeWei+ihqOmdou+8m1xyXG4gIGxldCBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihwb3NpdGlvbilcclxuICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCBzZGsudmlld2VyLnNjZW5lKTtcclxuICB9XHJcbiAgcmV0dXJuIGNhcnRlc2lhblxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuTGVmdENsaWNrKHNkaywgY2IpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjbGljayA9IHRydWVcclxuICBsZWZ0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5wb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXksIHNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG5cclxuICAgIGNiICYmIGNiKHBvczg0KVxyXG5cclxuICAgIGlmIChjbGljaykge1xyXG4gICAgICBjbGljayA9IGZhbHNlXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNsaWNrID0gdHJ1ZVxyXG4gICAgICB9LCA2MDApO1xyXG4gICAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpICYmIGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICBmb3IgKGxldCBpID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gQXJyYXkuZnJvbShsZWZ0Q2xpY2tDYWxsYmFja01hcC5rZXlzKCkpW2ldXHJcbiAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KGtleSlcclxuICAgICAgICAgIGlmIChvYmopIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdCkge1xyXG4gICAgICAgICAgICAgIC8vIOaYr+WQpuS4uuWkmui+ueW9olxyXG4gICAgICAgICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnUG9seWdvbk9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIOaYr+WQpuWPr+eCueWHu3lcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDogZrpm4blnLBcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnQXNzZW1ibGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gb2JqLnRoYXQuY29tcHV0ZUFzc2VtYmxlKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNbaV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tpICsgMV1cclxuICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWNleeureWktFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdBdHRhY2tBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNvbXB1dGVBdHRhY2tBcnJvdyhvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3M4NCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1ttXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zODQubG5nLCBwb3M4NC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDlj4znrq3lpLRcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnUGluY2VyQXJyb3dPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jb21wdXRlUGluY2VyQXJyb3cob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgcG9zaXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zODQgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbbV0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW3Bvczg0LmxuZywgcG9zODQubGF0XSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvczg0XzAgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3M4NF8wLmxuZywgcG9zODRfMC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWchlxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdDaXJjbGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIgJiYgb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2VudGVyID0gW29iai50aGF0Lm9wdGlvbnMuY2VudGVyLmxuZywgb2JqLnRoYXQub3B0aW9ucy5jZW50ZXIubGF0XTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFkaXVzID0gb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMgLyAxMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBzdGVwczogMzYwLCB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNpcmNsZSA9IHR1cmYuY2lyY2xlKGNlbnRlciwgcmFkaXVzLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBjaXJjbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5omH5b2iXHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ1NlY3Rvck9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLmNlbnRlciAmJiBvYmoudGhhdC5vcHRpb25zLnJhZGl1cyAmJiBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUgJiYgb2JqLnRoYXQub3B0aW9ucy5lbmRBbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jYWxTZWN0b3Iob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIsIG9iai50aGF0Lm9wdGlvbnMucmFkaXVzLCBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUsIG9iai50aGF0Lm9wdGlvbnMuZW5kQW5nbGUsIHVuZGVmaW5lZCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgIGNvbnN0IHBpY2sgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pXHJcbiAgICAgICAgICBpZiAocGljaykge1xyXG4gICAgICAgICAgICBpZiAocGljay5pZCkge1xyXG4gICAgICAgICAgICAgIGxldCBlbnRpdHlJZFxyXG4gICAgICAgICAgICAgIC8vIOefoumHj1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQucGFyZW50SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5nZW9qc29uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmlkID09PSBwaWNrLmlkLl9pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwaWNrLmlkLmlkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSBwaWNrLmlkLmlkLnNwbGl0KCctJylcclxuICAgICAgICAgICAgICAgIGFycmF5LnNwbGljZShhcnJheS5sZW5ndGggLSAxLCAxKVxyXG4gICAgICAgICAgICAgICAgZW50aXR5SWQgPSBhcnJheS5qb2luKCctJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnByb3BlcnRpZXMgJiYgcGljay5pZC5wcm9wZXJ0aWVzLmlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLmlkKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eUlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhlbnRpdHlJZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHBpY2sucHJpbWl0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBpY2suaWQgPT0gJ3N0cmluZycgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5pZClcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLnByaW1pdGl2ZSAmJiBwaWNrLnByaW1pdGl2ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLnByaW1pdGl2ZS5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLnByaW1pdGl2ZS5pZClcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChZSi5HbG9iYWwuZ2V0QmltUGlja1N0YXR1cyhzZGspKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmNvbnRlbnQgJiYgKCFwaWNrLnByaW1pdGl2ZSB8fCAhcGljay5wcmltaXRpdmUuaWQpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmNvbnRlbnQudGlsZXNldC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGljay5jb250ZW50LnRpbGVzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpY2suY29udGVudC50aWxlc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaWYgKGNsaWNrKSB7XHJcbiAgICAvLyAgIGNsaWNrID0gZmFsc2VcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgY2xpY2sgPSB0cnVlXHJcbiAgICAvLyAgIH0sIDMwMCk7XHJcbiAgICAvLyAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuXHJcbiAgLy8gbGVmdENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbiAobW92ZW1lbnQpIHtcclxuICAvLyAgIGNvbnN0IGZlYXR1cmUgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQuZW5kUG9zaXRpb24pO1xyXG4gIC8vICAgLy8gdW5zZWxlY3RGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSk7XHJcbiAgLy8gICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XHJcbiAgLy8gICAgIHNlbGVjdGVkRmVhdHVyZS5jb2xvciA9IENlc2l1bS5Db2xvci5XSElURTtcclxuICAvLyAgIH1cclxuICAvLyAgIHNlbGVjdGVkRmVhdHVyZSA9IGZlYXR1cmVcclxuICAvLyAgIGlmIChmZWF0dXJlKSB7XHJcbiAgLy8gICAgIGZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKTtcclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZUxlZnRDbGljayhzZGspIHtcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gIGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbiAgLy8gfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuUmlnaHRDbGljayhzZGspIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICByaWdodENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCkge1xyXG4gICAgICAgIGxldCBpZFxyXG4gICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gcmlnaHRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnBhcmVudElkKVxyXG4gICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuZ2VvanNvbikge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAob2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9PT0gcGljay5pZC5faWQpIHtcclxuICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgIG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRDbGlja0NhbGxiYWNrTWFwLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQoaWQpXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaWNrICYmIHBpY2suY29udGVudCkge1xyXG4gICAgICAgIGlmIChyaWdodENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suY29udGVudC50aWxlc2V0LmlkKSkge1xyXG4gICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICBwaWNrLmdldFByb3BlcnR5KCdpZCcpLFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBwaWNrLmNvbnRlbnQudGlsZXNldC5pZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVJpZ2h0Q2xpY2soKSB7XHJcbiAgaWYgKHJpZ2h0Q2xpY2tIYW5kbGVyKSB7XHJcbiAgICByaWdodENsaWNrSGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbnVsbFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gb3Blbk1vdmUoc2RrKSB7XHJcbiAgTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIE1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICAvLyB1bnNlbGVjdEZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlKTtcclxuICAgIC8vIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHBpY2sgJiYgcGljay5pZCkgeyB9XHJcbiAgICAvLyBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgIC8vICAgaWYgKE1vdmVDYWxsYmFja01hcC5oYXMocGljay5jb250ZW50LnRpbGVzZXQuaWQpKSB7XHJcbiAgICAvLyAgICAgbGV0IG9iaiA9IE1vdmVDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAvLyAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgIC8vICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnYmltJykge1xyXG4gICAgLy8gICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgLy8gICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IHBpY2tcclxuICAgIC8vICAgICAgICAgICBwaWNrLmNvbG9yID0gQ2VzaXVtLkNvbG9yLllFTExPVztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBudWxsXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBwaWNrXHJcbiAgICAvLyAgICAgICAgIHBpY2suY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IG51bGxcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3NlTW92ZSgpIHtcclxuICBpZiAoTW92ZUhhbmRsZXIpIHtcclxuICAgIE1vdmVIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gICAgTW92ZUhhbmRsZXIgPSBudWxsXHJcbiAgfVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGlkLCBjYWxsYmFjaywgdGhhdCkge1xyXG5cclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5zZXQoaWQsIHsgY2FsbGJhY2ssIHRoYXQgfSlcclxufS8q5Y+W5raI5bem6ZSu5Zue6LCDKi9cclxuZnVuY3Rpb24gdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjayhpZCwpIHtcclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICByaWdodENsaWNrQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVuUmVnUmlnaHRDbGlja0NhbGxiYWNrKGlkLCkge1xyXG4gIHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ01vdmVDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICBNb3ZlQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVucmVnTW92ZUNhbGxiYWNrKGlkLCkge1xyXG4gIE1vdmVDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMZWZ0Q2xpY2tTdGF0ZSgpIHtcclxuICBpZiAobGVmdENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UmlnaHRDbGlja1N0YXRlKCkge1xyXG4gIGlmIChyaWdodENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TW92ZVN0YXRlKCkge1xyXG4gIGlmIChNb3ZlSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IG9wZW5MZWZ0Q2xpY2ssIGNsb3NlTGVmdENsaWNrLCByZWdMZWZ0Q2xpY2tDYWxsYmFjaywgdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjaywgb3BlblJpZ2h0Q2xpY2ssIGNsb3NlUmlnaHRDbGljaywgcmVnUmlnaHRDbGlja0NhbGxiYWNrLCB1blJlZ1JpZ2h0Q2xpY2tDYWxsYmFjaywgb3Blbk1vdmUsIGNsb3NlTW92ZSwgcmVnTW92ZUNhbGxiYWNrLCB1bnJlZ01vdmVDYWxsYmFjaywgZ2V0TGVmdENsaWNrU3RhdGUsIGdldFJpZ2h0Q2xpY2tTdGF0ZSwgZ2V0TW92ZVN0YXRlIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/MultiViewportMode/ClickCallback/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/MultiViewportMode/index.js":
-/*!***********************************************!*\
- !*** ./src/Global/MultiViewportMode/index.js ***!
- \***********************************************/
-/*! exports provided: on, off, syncData, syncEntities, syncDataSources, syncPrimitives, get2DView, get3DView, setActiveViewer, getSdk */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"on\", function() { return on; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"off\", function() { return off; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncData\", function() { return syncData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncEntities\", function() { return syncEntities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncDataSources\", function() { return syncDataSources; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncPrimitives\", function() { return syncPrimitives; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get2DView\", function() { return get2DView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get3DView\", function() { return get3DView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveViewer\", function() { return setActiveViewer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSdk\", function() { return getSdk; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _SheetIndex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../SheetIndex */ \"./src/Global/SheetIndex/index.js\");\n/* harmony import */ var _Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Global/ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _ClickCallback__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ClickCallback */ \"./src/Global/MultiViewportMode/ClickCallback/index.js\");\n/* harmony import */ var _efflect__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../efflect */ \"./src/Global/efflect/index.js\");\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n/**\r\n * 多视口模式 \r\n * */\n\n\n\n\n\n\n\n\n\nvar sdk2D = null;\nvar sdk3D = null;\nvar activeViewer;\nvar controlViewer;\nvar syncObject = {};\nvar handlers = [];\nfunction init(_x) {\n return _init.apply(this, arguments);\n}\nfunction _init() {\n _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(sdk) {\n var tools, sdk2, imageryLayers, i, entity, stages, _i2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n sdk3D = sdk;\n activeViewer = 0;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n _context.next = 5;\n return new YJ.YJEarth(sdk.div_id);\n case 5:\n sdk2 = _context.sent;\n sdk2.viewer._element.className = 'cesium-viewer 2d';\n Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_8__[\"SheetIndexStatusSwitch\"])(sdk2, Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_8__[\"getStatus\"])());\n // setTimeout(() => {\n // let switchCluster = new YJ.Global.switchCluster(sdk2, true)\n // }, 500);\n Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"CesiumContainer\"])(sdk2, {\n compass: false,\n // 罗盘\n // legend: false, // 比例尺\n info: false,\n // 信息栏\n frame: false // 刷新率\n });\n sdk2.viewer.scene.mode = Cesium.SceneMode.SCENE2D;\n _context.next = 12;\n return sdk2;\n case 12:\n sdk2D = _context.sent;\n if (Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"getLeftClickState\"])()) {\n Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"openLeftClick\"])(sdk2D);\n }\n if (Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"getRightClickState\"])()) {\n Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"openRightClick\"])(sdk2D);\n }\n if (Object(_Global_ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"getMoveState\"])()) {\n Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_10__[\"openMove\"])(sdk2D);\n }\n window.sdk2D = sdk2D;\n solveBug();\n syncObject = {\n sdks: [sdk, sdk2],\n tools: tools\n };\n _context.next = 21;\n return eventBind(sdk, 0, syncObject);\n case 21:\n _context.next = 23;\n return eventBind(sdk2, 1, syncObject);\n case 23:\n _context.next = 25;\n return syncData(sdk);\n case 25:\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject);\n sdk.viewer.imageryLayers.layerAdded.addEventListener(syncImageryLayerAdded);\n sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);\n sdk.viewer.imageryLayers.layerRemoved.addEventListener(syncImageryLayerRemoved);\n sdk.viewer.imageryLayers.layerShownOrHidden.addEventListener(syncImageryLayerShownOrHidden);\n imageryLayers = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(sdk.viewer.imageryLayers._layers);\n imageryLayers.sort(function (a, b) {\n return a._layerIndex - b._layerIndex;\n });\n sdk2D.viewer.imageryLayers.removeAll();\n for (i = 0; i < imageryLayers.length; i++) {\n entity = sdk2D.viewer.imageryLayers.addImageryProvider(imageryLayers[i].imageryProvider, imageryLayers[i]._layerIndex);\n if (imageryLayers[i]._id) {\n entity._id = imageryLayers[i]._id;\n }\n entity.show = imageryLayers[i].show;\n entity.alpha = imageryLayers[i].alpha;\n if (imageryLayers[i]._objectState) {\n if (imageryLayers[i]._showView == 3) {\n entity.show = false;\n }\n }\n }\n // sdk.viewer.entities.collectionChanged.addEventListener(syncEntities)\n // sdk.viewer.dataSources.dataSourceAdded.addEventListener(syncDataSources)\n\n if (Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"getFlwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"FlwStatusSwitch\"])(sdk2, true);\n }\n if (Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"getJwwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_6__[\"JwwStatusSwitch\"])(sdk2, true);\n }\n // 雨雪雾夜视星空光照\n stages = sdk.viewer.scene.postProcessStages._stages;\n _i2 = 0;\n case 38:\n if (!(_i2 < stages.length)) {\n _context.next = 53;\n break;\n }\n _context.t0 = stages[_i2].name;\n _context.next = _context.t0 === 'rain' ? 42 : _context.t0 === 'snow' ? 44 : _context.t0 === 'fog' ? 46 : _context.t0 === 'czm_night_vision' ? 48 : 50;\n break;\n case 42:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"rain\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 44:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"snow\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 46:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"fog\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 48:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"nightVision\"])(sdk2, true);\n return _context.abrupt(\"break\", 50);\n case 50:\n _i2++;\n _context.next = 38;\n break;\n case 53:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"skyStarry\"])(sdk2, !sdk.viewer.scene.skyAtmosphere.show);\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"illumination\"])(sdk2, sdk.viewer.shadows);\n sdk.entityMap.forEach(function (item, key) {\n if (item.showView == 2) {\n item.showView = 2;\n }\n });\n case 56:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _init.apply(this, arguments);\n}\nfunction on(_x2) {\n return _on.apply(this, arguments);\n}\nfunction _on() {\n _on = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee2(sdk) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (sdk2D) {} else {\n init(sdk);\n Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_7__[\"off\"])();\n }\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _on.apply(this, arguments);\n}\nfunction off(sdk) {\n sdk.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n sdk.viewer.imageryLayers.layerAdded.removeEventListener(syncImageryLayerAdded);\n sdk.viewer.imageryLayers.layerMoved.removeEventListener(syncImageryLayerMoved);\n sdk.viewer.imageryLayers.layerRemoved.removeEventListener(syncImageryLayerRemoved);\n sdk.viewer.imageryLayers.layerShownOrHidden.removeEventListener(syncImageryLayerShownOrHidden);\n // sdk.viewer.entities.collectionChanged.removeEventListener(syncEntities)\n // sdk.viewer.dataSources.dataSourceAdded.removeEventListener(syncDataSources)\n\n //primitiveAdded=undefined基元同步设置在add位置\n // sdk.viewer.scene.primitives.primitiveAdded.removeEventListener(syncPrimitivesAdded)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].destroy();\n }\n if (sdk2D) {\n sdk2D.destroy();\n handlers = [];\n sdk2D = null;\n sdk3D = null;\n activeViewer = null;\n syncObject = {};\n }\n sdk.entityMap.forEach(function (item, key) {\n if (item.showView) {\n item.show = item.show;\n }\n });\n}\nfunction syncData2(_x3, _x4, _x5) {\n return _syncData.apply(this, arguments);\n}\nfunction _syncData() {\n _syncData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee3(sdk, id, entityId) {\n var entityMap, that, that2, options, callback, newObject, state, _that, _iterator, _step, _step$value, key, obj, _that2, _iterator2, _step2, _loop;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee3$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(sdk && sdk.viewer && sdk.viewer._element && sdk.viewer._element.className === 'cesium-viewer 2d')) {\n _context4.next = 2;\n break;\n }\n return _context4.abrupt(\"return\");\n case 2:\n if (!(!sdk3D || !sdk2D)) {\n _context4.next = 4;\n break;\n }\n return _context4.abrupt(\"return\");\n case 4:\n entityMap = sdk3D.entityMap;\n if (!id) {\n _context4.next = 40;\n break;\n }\n that = entityMap.get(id);\n if (!that) {\n _context4.next = 34;\n break;\n }\n that2 = sdk2D.entityMap.get(id);\n if (!that2) {\n _context4.next = 12;\n break;\n }\n _context4.next = 12;\n return that2.remove();\n case 12:\n options = syncObject.tools.deepCopyObj(that.options);\n if (that.type === 'BillboardObject') {\n options.heightReference = 1;\n }\n if (that.type === 'PolygonObject') {\n options.heightMode = 0;\n options.height = 0;\n }\n if (!(!that.type || that.type !== 'tileset' && that.type !== 'bim' && that.type !== 'glb' && that.type !== 'layer' && that.type !== 'wallStereoscopic')) {\n _context4.next = 32;\n break;\n }\n if (that.showView == 3) {\n options.show = false;\n }\n if (that.type === 'TextBox') {\n callback = that.callback;\n }\n _context4.next = 20;\n return new that.constructor(sdk2D, options, callback);\n case 20:\n newObject = _context4.sent;\n newObject.onClick = that.onClick;\n newObject.onRightClick = that.onRightClick;\n newObject.onMouseMove = that.onMouseMove;\n if (that.type === 'TrajectoryMotion') {\n that.firstPersonView = false;\n if (that.TweenAnimate) {\n state = that.state;\n if (state) {\n that.state = false;\n }\n if (!newObject.state) {\n setTimeout(function () {\n newObject.setMovePositionByDistance(Number(that.TweenAnimate._object.distance.toFixed(8)) + 0.00000001);\n setTimeout(function () {\n newObject.setMovePositionByDistance(Number(that.TweenAnimate._object.distance.toFixed(8)) + 0.00000002);\n }, 500);\n }, 500);\n } else {\n newObject.setMovePositionByDistance(Number(that.TweenAnimate._object.distance.toFixed(8)));\n }\n that.state = state;\n } else {\n setTimeout(function () {\n newObject.setMovePositionByDistance(0.00000001);\n setTimeout(function () {\n newObject.setMovePositionByDistance(0.00000002);\n }, 500);\n }, 500);\n }\n if (that.viewFollow) {\n newObject.viewFollow = true;\n }\n }\n if (that.type === 'AttackArrowObject' || that.type === 'StraightArrowObject') {\n if (that.spreadState && that.TweenAnimate && that.TweenAnimate._object) {\n newObject.setSpreadProgressByTime(that.TweenAnimate._object.distance / that.TweenAnimate._valuesEnd.distance * that.spreadTime);\n }\n }\n if (that.type === 'PincerArrowObject') {\n if (that.spreadState && that.TweenAnimate && that.TweenAnimate._object) {\n newObject.setSpreadProgressByTime(that.TweenAnimate._object.distance1 / that.TweenAnimate._valuesEnd.distance1 * that.spreadTime);\n }\n }\n if (that.type === 'Explosion') {\n newObject.entity.imgIndex = that.entity.imgIndex;\n }\n if (!(newObject.on && newObject.type !== 'glb')) {\n _context4.next = 32;\n break;\n }\n if (newObject.type === 'vector') {\n newObject.data = that.data;\n newObject.load(function () {\n if (newObject.entity) {\n for (var i = 0; i < newObject.entity.entities.values.length; i++) {\n newObject.entity.entities.values[i].show = that.entity.entities.values[i]._customShow === false ? false : true;\n }\n }\n });\n }\n _context4.next = 32;\n return newObject.on();\n case 32:\n _context4.next = 38;\n break;\n case 34:\n _that = sdk2D.entityMap.get(id);\n if (!_that) {\n _context4.next = 38;\n break;\n }\n _context4.next = 38;\n return _that.remove();\n case 38:\n _context4.next = 75;\n break;\n case 40:\n _iterator = _createForOfIteratorHelper(sdk2D.entityMap);\n _context4.prev = 41;\n _iterator.s();\n case 43:\n if ((_step = _iterator.n()).done) {\n _context4.next = 51;\n break;\n }\n _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2), key = _step$value[0], obj = _step$value[1];\n _that2 = sdk2D.entityMap.get(key);\n if (!_that2) {\n _context4.next = 49;\n break;\n }\n _context4.next = 49;\n return _that2.remove();\n case 49:\n _context4.next = 43;\n break;\n case 51:\n _context4.next = 56;\n break;\n case 53:\n _context4.prev = 53;\n _context4.t0 = _context4[\"catch\"](41);\n _iterator.e(_context4.t0);\n case 56:\n _context4.prev = 56;\n _iterator.f();\n return _context4.finish(56);\n case 59:\n _iterator2 = _createForOfIteratorHelper(entityMap);\n _context4.prev = 60;\n _loop = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _loop() {\n var _step2$value, key, obj, options, target, _callback, _state;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _loop$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _step2$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step2.value, 2), key = _step2$value[0], obj = _step2$value[1];\n if (obj.type === 'BillboardObject') {\n obj.options.heightReference = 1;\n }\n options = syncObject.tools.deepCopyObj(obj.options);\n if (!(!obj.type || obj.type !== 'tileset' && obj.type !== 'bim' && obj.type !== 'glb' && obj.type !== 'layer' && obj.type !== 'wallStereoscopic')) {\n _context3.next = 26;\n break;\n }\n if (obj.showView == 3) {\n options.show = false;\n }\n _context3.next = 7;\n return sdk2D.entityMap.get(options.id);\n case 7:\n target = _context3.sent;\n if (!target) {\n _context3.next = 11;\n break;\n }\n _context3.next = 11;\n return target.remove();\n case 11:\n if (obj.type === 'TextBox') {\n _callback = obj.callback;\n }\n _context3.next = 14;\n return new obj.constructor(sdk2D, options, _callback);\n case 14:\n target = _context3.sent;\n target.onClick = obj.onClick;\n target.onRightClick = obj.onRightClick;\n target.onMouseMove = obj.onMouseMove;\n if (obj.type === 'TrajectoryMotion') {\n obj.firstPersonView = false;\n if (obj.TweenAnimate) {\n _state = obj.state;\n if (_state) {\n obj.state = false;\n }\n if (!target.state) {\n setTimeout(function () {\n target.setMovePositionByDistance(Number(obj.TweenAnimate._object.distance.toFixed(8)) + 0.000000001);\n setTimeout(function () {\n target.setMovePositionByDistance(Number(obj.TweenAnimate._object.distance.toFixed(8)) + 0.000000002);\n }, 1500);\n }, 1500);\n } else {\n target.setMovePositionByDistance(Number(obj.TweenAnimate._object.distance.toFixed(8)));\n }\n obj.state = _state;\n } else {\n setTimeout(function () {\n target.setMovePositionByDistance(0.000000001);\n setTimeout(function () {\n target.setMovePositionByDistance(0.000000002);\n }, 1500);\n }, 1500);\n }\n if (obj.viewFollow) {\n target.viewFollow = true;\n }\n // else {\n // newObject.viewFollow = false\n // }\n }\n if (obj.type === 'AttackArrowObject' || obj.type === 'StraightArrowObject') {\n if (obj.spreadState && obj.TweenAnimate && obj.TweenAnimate._object) {\n target.setSpreadProgressByTime(obj.TweenAnimate._object.distance / obj.TweenAnimate._valuesEnd.distance * obj.spreadTime);\n }\n }\n if (obj.type === 'PincerArrowObject') {\n if (obj.spreadState && obj.TweenAnimate && obj.TweenAnimate._object) {\n target.setSpreadProgressByTime(obj.TweenAnimate._object.distance1 / obj.TweenAnimate._valuesEnd.distance1 * obj.spreadTime);\n }\n }\n if (obj.type === 'Explosion') {\n target.entity.imgIndex = obj.entity.imgIndex;\n }\n if (!(target.on && obj.type !== 'glb')) {\n _context3.next = 26;\n break;\n }\n if (target.type === 'vector') {\n target.data = obj.data;\n target.load(function () {\n if (target.entity) {\n for (var i = 0; i < target.entity.entities.values.length; i++) {\n target.entity.entities.values[i].show = obj.entity.entities.values[i]._customShow === false ? false : true;\n }\n }\n });\n }\n _context3.next = 26;\n return target.on();\n case 26:\n case \"end\":\n return _context3.stop();\n }\n }, _loop);\n });\n _iterator2.s();\n case 63:\n if ((_step2 = _iterator2.n()).done) {\n _context4.next = 67;\n break;\n }\n return _context4.delegateYield(_loop(), \"t1\", 65);\n case 65:\n _context4.next = 63;\n break;\n case 67:\n _context4.next = 72;\n break;\n case 69:\n _context4.prev = 69;\n _context4.t2 = _context4[\"catch\"](60);\n _iterator2.e(_context4.t2);\n case 72:\n _context4.prev = 72;\n _iterator2.f();\n return _context4.finish(72);\n case 75:\n case \"end\":\n return _context4.stop();\n }\n }, _callee3, null, [[41, 53, 56, 59], [60, 69, 72, 75]]);\n }));\n return _syncData.apply(this, arguments);\n}\nfunction syncData(_x6, _x7, _x8) {\n return _syncData2.apply(this, arguments);\n}\nfunction _syncData2() {\n _syncData2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee4(sdk, id, entityId) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee4$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n syncData2(sdk, id, entityId);\n // syncEntities()\n // syncDataSources()\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }, _callee4);\n }));\n return _syncData2.apply(this, arguments);\n}\nfunction syncEntities(entities1, entities2) {\n if (!sdk3D) {\n return;\n }\n if (sdk2D) {\n if (Array.isArray(entities1) || Array.isArray(entities2)) {\n entities1 = null;\n entities2 = null;\n }\n if (!entities1) {\n entities1 = sdk2D.viewer.entities;\n }\n if (!entities2) {\n entities2 = sdk3D.viewer.entities;\n }\n var entities2D = entities1;\n var entities3D = entities2;\n for (var i = entities2D.values.length - 1; i >= 0; i--) {\n var flag = false;\n for (var m = entities3D.values.length - 1; m >= 0; m--) {\n if (entities2D.values[i].id === entities3D.values[m].id) {\n flag = true;\n entities2D.values[i] === entities3D.values[m];\n }\n }\n if (!flag) {\n entities2D.remove(entities2D.values[i]);\n }\n }\n for (var _m = entities3D.values.length - 1; _m >= 0; _m--) {\n var _flag = false;\n for (var _i = entities2D.values.length - 1; _i >= 0; _i--) {\n if (entities2D.values[_i].id === entities3D.values[_m].id) {\n _flag = true;\n break;\n }\n }\n if (!_flag) {\n var entity = entities2D.add(entities3D.values[_m]);\n // if (entity.rectangle) {\n // // 设置高度,否则在某些位置无法显示,但色彩会变暗\n // entity.rectangle.height = 0\n // console.log('242342354235',entities3D.values[m])\n // }\n }\n }\n }\n}\nfunction syncDataSources(dataSources, type) {\n if (!sdk3D) {\n return;\n }\n if (sdk2D) {\n var dataSources2D = sdk2D.viewer.dataSources;\n if (dataSources) {\n for (var i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n if (dataSources2D._dataSources[i].name === dataSources.name) {\n if (type === 'entities') {\n syncEntities(dataSources2D._dataSources[i].entities, dataSources.entities);\n }\n if (type === 'clustering') {\n dataSources2D._dataSources[i].clustering.enabled = dataSources.clustering.enabled;\n }\n }\n }\n }\n // for (let m = dataSources3D._dataSources.length - 1; m >= 0; m--) {\n // let flag = false\n // for (let i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n // console.log(dataSources2D._dataSources[i].name, dataSources3D._dataSources[m].name)\n // if (dataSources2D._dataSources[i].name === dataSources3D._dataSources[m].name) {\n // flag = true\n // break\n // }\n // }\n // if (!flag) {\n // dataSources2D.add(dataSources3D._dataSources[m])\n // }\n // }\n }\n}\nfunction syncImageryLayerAdded(layer, index) {\n sdk2D.viewer.imageryLayers.addImageryProvider(layer.imageryProvider, index);\n}\nfunction syncImageryLayerMoved(layer, newindxe, oldindex) {\n var layer2d = sdk2D.viewer.imageryLayers._layers[oldindex];\n if (!layer2d) {\n return;\n }\n // 移到最底层\n if (newindxe === 0) {\n sdk2D.viewer.imageryLayers.lowerToBottom(layer2d);\n }\n // 移到最高层\n else if (newindxe >= sdk3D.viewer.imageryLayers._layers.length - 1) {\n sdk2D.viewer.imageryLayers.raiseToTop(layer2d);\n } else {\n if (newindxe < oldindex) {\n sdk2D.viewer.imageryLayers.lower(layer2d);\n } else {\n sdk2D.viewer.imageryLayers.raise(layer2d);\n }\n }\n}\nfunction syncImageryLayerRemoved(layer, index) {\n var layer2d = sdk2D.viewer.imageryLayers._layers[index];\n if (!layer2d) {\n return;\n }\n sdk2D.viewer.imageryLayers.remove(layer2d);\n}\nfunction syncImageryLayerShownOrHidden(layer, index, state) {\n return;\n var layer2d = sdk2D.viewer.imageryLayers._layers[index];\n var layer3d = sdk3D.viewer.imageryLayers._layers[index];\n console.log('layer2d', layer2d, sdk2D, layer3d);\n if (!layer2d) {\n return;\n }\n if (layer3d._objectState) {\n if (!layer3d._showView || layer3d._showView == 2) {\n layer2d.show = true;\n }\n if (layer3d._showView == 3) {\n layer2d.show = false;\n }\n } else {\n layer2d.show = state;\n }\n}\nfunction syncPrimitives(_x9) {\n return _syncPrimitives.apply(this, arguments);\n}\nfunction _syncPrimitives() {\n _syncPrimitives = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee5(primitive) {\n var primitives2D, primitives3D, i, flag, m, _m2, _flag2, _i3;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee5$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (sdk3D) {\n _context6.next = 2;\n break;\n }\n return _context6.abrupt(\"return\");\n case 2:\n if (sdk2D) {\n // await sdk2D.viewer.scene.primitives.remove(primitive)\n // await sdk2D.viewer.scene.primitives.add(primitive)\n primitives2D = sdk2D.viewer.scene.primitives._primitives;\n primitives3D = sdk3D.viewer.scene.primitives._primitives; // console.log(primitives2D, primitives3D)\n // setTimeout(() => {\n // sdk2D.viewer.scene.primitives._primitives[1] = sdk3D.viewer.scene.primitives._primitives[1]\n // }, 2000);\n for (i = primitives2D.length - 1; i >= 1; i--) {\n flag = false;\n for (m = primitives3D.length - 1; m >= 1; m--) {\n if (primitives3D[m].id && primitives2D[i].id && primitives3D[m].id === primitives2D[i].id) {\n flag = true;\n }\n }\n // if (!flag) {\n // sdk2D.viewer.scene.primitives.remove(primitives2D[i])\n // }\n }\n for (_m2 = primitives3D.length - 1; _m2 >= 1; _m2--) {\n _flag2 = false;\n for (_i3 = primitives2D.length - 1; _i3 >= 1; _i3--) {\n if (primitives3D[_m2].id && primitives2D[_i3].id && primitives3D[_m2].id === primitives2D[_i3].id) {\n _flag2 = true;\n primitives2D[_i3].show = primitives3D[_m2].show;\n primitives2D[_i3].startColor = primitives3D[_m2].startColor;\n primitives2D[_i3].endColor = primitives3D[_m2].endColor;\n primitives2D[_i3].minimumSpeed = primitives3D[_m2].minimumSpeed;\n primitives2D[_i3].maximumSpeed = primitives3D[_m2].maximumSpeed;\n primitives2D[_i3].minimumParticleLife = primitives3D[_m2].minimumParticleLife;\n primitives2D[_i3].maximumParticleLife = primitives3D[_m2].maximumParticleLife;\n primitives2D[_i3].startScale = primitives3D[_m2].startScale;\n primitives2D[_i3].endScale = primitives3D[_m2].endScale;\n primitives2D[_i3].emissionRate = primitives3D[_m2].emissionRate;\n primitives2D[_i3].particleSize = primitives3D[_m2].particleSize;\n primitives2D[_i3].modelMatrix = primitives3D[_m2].modelMatrix;\n }\n }\n // if (!flag) {\n // sdk2D.viewer.scene.primitives.add(primitives3D[m])\n // }\n }\n }\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }, _callee5);\n }));\n return _syncPrimitives.apply(this, arguments);\n}\nfunction eventBind(sdk, i, syncObject) {\n var handler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n handler.setInputAction(function () {\n activeViewer = i;\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n handler.setInputAction(function () {\n activeViewer = i;\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n handler.setInputAction(function () {\n activeViewer = i;\n }, Cesium.ScreenSpaceEventType.WHEEL);\n handlers.push(handler);\n}\nfunction syncViewer() {\n var sdk = this.sdks[activeViewer];\n var sdk2;\n if (activeViewer === 0) {\n sdk2 = this.sdks[1];\n } else if (activeViewer === 1) {\n sdk2 = this.sdks[0];\n }\n // this.sdks[0].viewer.trackedEntity = null\n // this.sdks[1].viewer.trackedEntity = null\n if (sdk.viewer.scene.mode === 2) {\n if (this.sdks[0].viewer.trackedEntity) {\n var distance = sdk.viewer.camera.positionCartographic.height;\n sdk2.viewer.camera.lookAt(Cesium.Cartesian3.fromRadians(sdk.viewer.camera.positionCartographic.longitude, sdk.viewer.camera.positionCartographic.latitude, 0), new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90), distance));\n } else {\n if (this.sdks[1].viewer.trackedEntity) {\n this.sdks[1].viewer.entities.remove(this.sdks[1].viewer.trackedEntity);\n this.sdks[1].viewer.trackedEntity = null;\n }\n var centerResult84 = this.tools.cartesian3Towgs84(Cesium.Cartesian3.fromRadians(sdk.viewer.camera.positionCartographic.longitude, sdk.viewer.camera.positionCartographic.latitude, sdk.viewer.camera.positionCartographic.height), sdk.viewer);\n sdk2.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(centerResult84.lng, centerResult84.lat, centerResult84.alt)\n });\n }\n } else {\n // 视角中心点(伪)\n var centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.clientWidth / 2, sdk.viewer.canvas.clientHeight / (2 - (90 + sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.positionWC;\n }\n var height = this.tools.cartesian3Towgs84(sdk.viewer.camera.positionWC, sdk.viewer).alt;\n var _centerResult = this.tools.cartesian3Towgs84(centerResult, sdk.viewer);\n\n // console.log('--------------', sdk.viewer.camera.position, sdk.viewer.camera.positionWC, centerResult84, height)\n\n sdk2.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(_centerResult.lng, _centerResult.lat, height)\n // orientation: {\n // heading: sdk2.viewer.camera.heading,\n // pitch: sdk2.viewer.camera.pitch,\n // roll: sdk2.viewer.camera.roll\n // }\n });\n }\n}\nfunction get2DView() {\n return sdk2D;\n}\nfunction get3DView() {\n return sdk3D;\n}\nfunction solveBug() {\n // 在能显示的地方加载一个多边形,解决二维模式下某些地方无法显示多边形的bug,原因不明\n sdk2D && sdk2D.viewer.entities.add({\n show: false,\n polygon: {\n hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArray([100, 50, 100.0001, 50, 100.0001, 50.0001]))\n }\n });\n}\nfunction setActiveViewer(v) {\n activeViewer = v;\n}\nfunction getSdk() {\n return {\n sdkP: sdk3D,\n sdkD: sdk2D\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL011bHRpVmlld3BvcnRNb2RlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9NdWx0aVZpZXdwb3J0TW9kZS9pbmRleC5qcz9mYjYwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDlpJrop4blj6PmqKHlvI8gXHJcbiAqICovXHJcbmltcG9ydCBUb29scyBmcm9tIFwiLi4vLi4vVG9vbHNcIjtcclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vLi4vRXZlbnQnXHJcbmltcG9ydCB7IENlc2l1bUNvbnRhaW5lciB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IHsgb2ZmIGFzIG9mZlNwbGl0U2NyZWVuIH0gZnJvbSBcIi4uL1NwbGl0U2NyZWVuXCI7XHJcbmltcG9ydCB7IEZsd1N0YXR1c1N3aXRjaCwgSnd3U3RhdHVzU3dpdGNoLCBnZXRGbHdTdGF0dXMsIGdldEp3d1N0YXR1cyB9IGZyb20gXCIuLi9nbG9iYWxcIlxyXG5pbXBvcnQgeyBTaGVldEluZGV4U3RhdHVzU3dpdGNoLCBnZXRTdGF0dXMgfSBmcm9tICcuLi9TaGVldEluZGV4J1xyXG5pbXBvcnQgeyBnZXRMZWZ0Q2xpY2tTdGF0ZSwgZ2V0UmlnaHRDbGlja1N0YXRlLCBnZXRNb3ZlU3RhdGUgfSBmcm9tIFwiLi4vLi4vR2xvYmFsL0NsaWNrQ2FsbGJhY2tcIlxyXG5pbXBvcnQgeyBvcGVuTGVmdENsaWNrLCBvcGVuUmlnaHRDbGljaywgb3Blbk1vdmUgfSBmcm9tIFwiLi9DbGlja0NhbGxiYWNrXCJcclxuaW1wb3J0IHsgcmFpbiwgc25vdywgZm9nLCBuaWdodFZpc2lvbiwgc2t5U3RhcnJ5LCBpbGx1bWluYXRpb24gfSBmcm9tICcuLi9lZmZsZWN0J1xyXG5cclxuXHJcbmxldCBzZGsyRCA9IG51bGxcclxubGV0IHNkazNEID0gbnVsbFxyXG5sZXQgYWN0aXZlVmlld2VyXHJcbmxldCBjb250cm9sVmlld2VyXHJcbmxldCBzeW5jT2JqZWN0ID0ge31cclxubGV0IGhhbmRsZXJzID0gW11cclxuYXN5bmMgZnVuY3Rpb24gaW5pdChzZGspIHtcclxuICBzZGszRCA9IHNka1xyXG4gIGFjdGl2ZVZpZXdlciA9IDBcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIGxldCBzZGsyID0gYXdhaXQgbmV3IFlKLllKRWFydGgoc2RrLmRpdl9pZClcclxuICBzZGsyLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWUgPSAnY2VzaXVtLXZpZXdlciAyZCdcclxuICBTaGVldEluZGV4U3RhdHVzU3dpdGNoKHNkazIsIGdldFN0YXR1cygpKVxyXG4gIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gIC8vICAgbGV0IHN3aXRjaENsdXN0ZXIgPSBuZXcgWUouR2xvYmFsLnN3aXRjaENsdXN0ZXIoc2RrMiwgdHJ1ZSlcclxuICAvLyB9LCA1MDApO1xyXG4gIENlc2l1bUNvbnRhaW5lcihzZGsyLCB7XHJcbiAgICBjb21wYXNzOiBmYWxzZSwgLy8g572X55uYXHJcbiAgICAvLyBsZWdlbmQ6IGZhbHNlLCAvLyDmr5TkvovlsLpcclxuICAgIGluZm86IGZhbHNlLCAvLyDkv6Hmga/moI9cclxuICAgIGZyYW1lOiBmYWxzZSAvLyDliLfmlrDnjodcclxuICB9KVxyXG4gIHNkazIudmlld2VyLnNjZW5lLm1vZGUgPSBDZXNpdW0uU2NlbmVNb2RlLlNDRU5FMkRcclxuICBzZGsyRCA9IGF3YWl0IHNkazJcclxuICBpZihnZXRMZWZ0Q2xpY2tTdGF0ZSgpKSB7XHJcbiAgICBvcGVuTGVmdENsaWNrKHNkazJEKVxyXG4gIH1cclxuICBpZihnZXRSaWdodENsaWNrU3RhdGUoKSkge1xyXG4gICAgb3BlblJpZ2h0Q2xpY2soc2RrMkQpXHJcbiAgfVxyXG4gIGlmKGdldE1vdmVTdGF0ZSgpKSB7XHJcbiAgICBvcGVuTW92ZShzZGsyRClcclxuICB9XHJcblxyXG4gIHdpbmRvdy5zZGsyRCA9IHNkazJEXHJcbiAgc29sdmVCdWcoKVxyXG4gIHN5bmNPYmplY3QgPSB7IHNka3M6IFtzZGssIHNkazJdLCB0b29scyB9XHJcbiAgYXdhaXQgZXZlbnRCaW5kKHNkaywgMCwgc3luY09iamVjdClcclxuICBhd2FpdCBldmVudEJpbmQoc2RrMiwgMSwgc3luY09iamVjdClcclxuICBhd2FpdCBzeW5jRGF0YShzZGspXHJcbiAgc2RrLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KVxyXG5cclxuICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJBZGRlZC5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZCk7XHJcbiAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyTW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyTW92ZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclJlbW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyUmVtb3ZlZCk7XHJcbiAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyU2hvd25PckhpZGRlbi5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJTaG93bk9ySGlkZGVuKTtcclxuICBsZXQgaW1hZ2VyeUxheWVycyA9IFsuLi5zZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc11cclxuICBpbWFnZXJ5TGF5ZXJzLnNvcnQoKGEsIGIpID0+IGEuX2xheWVySW5kZXggLSBiLl9sYXllckluZGV4KTtcclxuICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5yZW1vdmVBbGwoKVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW1hZ2VyeUxheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGVudGl0eSA9IHNkazJELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihpbWFnZXJ5TGF5ZXJzW2ldLmltYWdlcnlQcm92aWRlciwgaW1hZ2VyeUxheWVyc1tpXS5fbGF5ZXJJbmRleClcclxuICAgIGlmKGltYWdlcnlMYXllcnNbaV0uX2lkKSB7XHJcbiAgICAgIGVudGl0eS5faWQgPSBpbWFnZXJ5TGF5ZXJzW2ldLl9pZFxyXG4gICAgfVxyXG4gICAgZW50aXR5LnNob3cgPSBpbWFnZXJ5TGF5ZXJzW2ldLnNob3dcclxuICAgIGVudGl0eS5hbHBoYSA9IGltYWdlcnlMYXllcnNbaV0uYWxwaGFcclxuICAgIGlmIChpbWFnZXJ5TGF5ZXJzW2ldLl9vYmplY3RTdGF0ZSkge1xyXG4gICAgICBpZiAoaW1hZ2VyeUxheWVyc1tpXS5fc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICAgIGVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmNvbGxlY3Rpb25DaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0VudGl0aWVzKVxyXG4gIC8vIHNkay52aWV3ZXIuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZUFkZGVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0RhdGFTb3VyY2VzKVxyXG5cclxuICBpZiAoZ2V0Rmx3U3RhdHVzKHNkaykpIHtcclxuICAgIEZsd1N0YXR1c1N3aXRjaChzZGsyLCB0cnVlKVxyXG4gIH1cclxuICBpZiAoZ2V0Snd3U3RhdHVzKHNkaykpIHtcclxuICAgIEp3d1N0YXR1c1N3aXRjaChzZGsyLCB0cnVlKVxyXG4gIH1cclxuICAvLyDpm6jpm6rpm77lpJzop4bmmJ/nqbrlhYnnhadcclxuICBsZXQgc3RhZ2VzID0gc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIHN3aXRjaCAoc3RhZ2VzW2ldLm5hbWUpIHtcclxuICAgICAgY2FzZSAncmFpbic6XHJcbiAgICAgICAgcmFpbihzZGsyLCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ3Nub3cnOlxyXG4gICAgICAgIHNub3coc2RrMiwgdHJ1ZSlcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICdmb2cnOlxyXG4gICAgICAgIGZvZyhzZGsyLCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ2N6bV9uaWdodF92aXNpb24nOlxyXG4gICAgICAgIG5pZ2h0VmlzaW9uKHNkazIsIHRydWUpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgc2t5U3RhcnJ5KHNkazIsICFzZGsudmlld2VyLnNjZW5lLnNreUF0bW9zcGhlcmUuc2hvdylcclxuICBpbGx1bWluYXRpb24oc2RrMiwgc2RrLnZpZXdlci5zaGFkb3dzKVxyXG5cclxuICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xyXG4gICAgaWYgKGl0ZW0uc2hvd1ZpZXcgPT0gMikge1xyXG4gICAgICBpdGVtLnNob3dWaWV3ID0gMlxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG59XHJcbmFzeW5jIGZ1bmN0aW9uIG9uKHNkaykge1xyXG4gIGlmIChzZGsyRCkge1xyXG5cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBpbml0KHNkaylcclxuICAgIG9mZlNwbGl0U2NyZWVuKClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9mZihzZGspIHtcclxuICBzZGsudmlld2VyLnNjZW5lLnByZVJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNWaWV3ZXIsIHN5bmNPYmplY3QpXHJcbiAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyQWRkZWQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyQWRkZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllck1vdmVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllck1vdmVkKTtcclxuICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJSZW1vdmVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllclJlbW92ZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclNob3duT3JIaWRkZW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyU2hvd25PckhpZGRlbik7XHJcbiAgLy8gc2RrLnZpZXdlci5lbnRpdGllcy5jb2xsZWN0aW9uQ2hhbmdlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNFbnRpdGllcylcclxuICAvLyBzZGsudmlld2VyLmRhdGFTb3VyY2VzLmRhdGFTb3VyY2VBZGRlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNEYXRhU291cmNlcylcclxuXHJcbiAgLy9wcmltaXRpdmVBZGRlZD11bmRlZmluZWTln7rlhYPlkIzmraXorr7nva7lnKhhZGTkvY3nva5cclxuICAvLyBzZGsudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucHJpbWl0aXZlQWRkZWQucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jUHJpbWl0aXZlc0FkZGVkKVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGhhbmRsZXJzW2ldLmRlc3Ryb3koKVxyXG4gIH1cclxuICBpZiAoc2RrMkQpIHtcclxuICAgIHNkazJELmRlc3Ryb3koKVxyXG4gICAgaGFuZGxlcnMgPSBbXVxyXG4gICAgc2RrMkQgPSBudWxsXHJcbiAgICBzZGszRCA9IG51bGxcclxuICAgIGFjdGl2ZVZpZXdlciA9IG51bGxcclxuICAgIHN5bmNPYmplY3QgPSB7fVxyXG4gIH1cclxuICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xyXG4gICAgaWYgKGl0ZW0uc2hvd1ZpZXcpIHtcclxuICAgICAgaXRlbS5zaG93ID0gaXRlbS5zaG93XHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc3luY0RhdGEyKHNkaywgaWQsIGVudGl0eUlkKSB7XHJcbiAgaWYgKHNkayAmJiBzZGsudmlld2VyICYmIHNkay52aWV3ZXIuX2VsZW1lbnQgJiYgc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWUgPT09ICdjZXNpdW0tdmlld2VyIDJkJykge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmICghc2RrM0QgfHwgIXNkazJEKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IGVudGl0eU1hcCA9IHNkazNELmVudGl0eU1hcFxyXG4gIGlmIChpZCkge1xyXG4gICAgbGV0IHRoYXQgPSBlbnRpdHlNYXAuZ2V0KGlkKVxyXG4gICAgaWYgKHRoYXQpIHtcclxuICAgICAgbGV0IHRoYXQyID0gc2RrMkQuZW50aXR5TWFwLmdldChpZClcclxuICAgICAgaWYgKHRoYXQyKSB7XHJcbiAgICAgICAgYXdhaXQgdGhhdDIucmVtb3ZlKClcclxuICAgICAgfVxyXG4gICAgICBsZXQgb3B0aW9ucyA9IHN5bmNPYmplY3QudG9vbHMuZGVlcENvcHlPYmoodGhhdC5vcHRpb25zKVxyXG4gICAgICBpZiAodGhhdC50eXBlID09PSAnQmlsbGJvYXJkT2JqZWN0Jykge1xyXG4gICAgICAgIG9wdGlvbnMuaGVpZ2h0UmVmZXJlbmNlID0gMVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGF0LnR5cGUgPT09ICdQb2x5Z29uT2JqZWN0Jykge1xyXG4gICAgICAgIG9wdGlvbnMuaGVpZ2h0TW9kZSA9IDBcclxuICAgICAgICBvcHRpb25zLmhlaWdodCA9IDBcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGF0LnR5cGUgfHwgKHRoYXQudHlwZSAhPT0gJ3RpbGVzZXQnICYmIHRoYXQudHlwZSAhPT0gJ2JpbScgJiYgdGhhdC50eXBlICE9PSAnZ2xiJyAmJiB0aGF0LnR5cGUgIT09ICdsYXllcicgJiYgdGhhdC50eXBlICE9PSAnd2FsbFN0ZXJlb3Njb3BpYycpKSB7XHJcbiAgICAgICAgaWYgKHRoYXQuc2hvd1ZpZXcgPT0gMykge1xyXG4gICAgICAgICAgb3B0aW9ucy5zaG93ID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNhbGxiYWNrXHJcbiAgICAgICAgaWYodGhhdC50eXBlID09PSAnVGV4dEJveCcpIHtcclxuICAgICAgICAgIGNhbGxiYWNrID0gdGhhdC5jYWxsYmFja1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IG5ld09iamVjdCA9IGF3YWl0IG5ldyB0aGF0LmNvbnN0cnVjdG9yKHNkazJELCBvcHRpb25zLCBjYWxsYmFjaylcclxuICAgICAgICBuZXdPYmplY3Qub25DbGljayA9IHRoYXQub25DbGlja1xyXG4gICAgICAgIG5ld09iamVjdC5vblJpZ2h0Q2xpY2sgPSB0aGF0Lm9uUmlnaHRDbGlja1xyXG4gICAgICAgIG5ld09iamVjdC5vbk1vdXNlTW92ZSA9IHRoYXQub25Nb3VzZU1vdmVcclxuICAgICAgICBpZiAodGhhdC50eXBlID09PSAnVHJhamVjdG9yeU1vdGlvbicpIHtcclxuICAgICAgICAgIHRoYXQuZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgICAgICAgIGlmICh0aGF0LlR3ZWVuQW5pbWF0ZSkge1xyXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGF0LnN0YXRlXHJcbiAgICAgICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgIHRoYXQuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghbmV3T2JqZWN0LnN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBuZXdPYmplY3Quc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZShOdW1iZXIodGhhdC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZS50b0ZpeGVkKDgpKSArIDAuMDAwMDAwMDEpXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbmV3T2JqZWN0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoTnVtYmVyKHRoYXQuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UudG9GaXhlZCg4KSkgKyAwLjAwMDAwMDAyKVxyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIG5ld09iamVjdC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKE51bWJlcih0aGF0LlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlLnRvRml4ZWQoOCkpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoYXQuc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld09iamVjdC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKDAuMDAwMDAwMDEpXHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBuZXdPYmplY3Quc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSgwLjAwMDAwMDAyKVxyXG4gICAgICAgICAgICAgIH0sIDUwMClcclxuICAgICAgICAgICAgfSwgNTAwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXQudmlld0ZvbGxvdykge1xyXG4gICAgICAgICAgICBuZXdPYmplY3Qudmlld0ZvbGxvdyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoYXQudHlwZSA9PT0gJ0F0dGFja0Fycm93T2JqZWN0JyB8fCB0aGF0LnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgaWYgKHRoYXQuc3ByZWFkU3RhdGUgJiYgdGhhdC5Ud2VlbkFuaW1hdGUgJiYgdGhhdC5Ud2VlbkFuaW1hdGUuX29iamVjdCkge1xyXG4gICAgICAgICAgICBuZXdPYmplY3Quc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGhhdC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSAvIHRoYXQuVHdlZW5BbmltYXRlLl92YWx1ZXNFbmQuZGlzdGFuY2UgKiB0aGF0LnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGF0LnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgIGlmICh0aGF0LnNwcmVhZFN0YXRlICYmIHRoYXQuVHdlZW5BbmltYXRlICYmIHRoYXQuVHdlZW5BbmltYXRlLl9vYmplY3QpIHtcclxuICAgICAgICAgICAgbmV3T2JqZWN0LnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKHRoYXQuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UxIC8gdGhhdC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZTEgKiB0aGF0LnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGF0LnR5cGUgPT09ICdFeHBsb3Npb24nKSB7XHJcbiAgICAgICAgICBuZXdPYmplY3QuZW50aXR5LmltZ0luZGV4ID0gdGhhdC5lbnRpdHkuaW1nSW5kZXhcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld09iamVjdC5vbiAmJiBuZXdPYmplY3QudHlwZSAhPT0gJ2dsYicpIHtcclxuICAgICAgICAgIGlmIChuZXdPYmplY3QudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgbmV3T2JqZWN0LmRhdGEgPSB0aGF0LmRhdGFcclxuICAgICAgICAgICAgbmV3T2JqZWN0LmxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChuZXdPYmplY3QuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld09iamVjdC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld09iamVjdC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXdhaXQgbmV3T2JqZWN0Lm9uKClcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKG5ld09iamVjdC50eXBlICYmIChuZXdPYmplY3QudHlwZSA9PT0gJ3RpbGVzZXQnIHx8IG5ld09iamVjdC50eXBlID09PSAnYmltJykpIHtcclxuICAgICAgICAvLyAgIG5ld09iamVjdC5oZWlnaHQgPSAtMTAwMDBcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gLy8gQ2VzaXVtMS45OOeJiOacrOS6jOe7tOaooeW8j+S4i+WIneasoeaYvuekuuaciemXrumimO+8jDEuMTEw5Lul5LiK54mI5pys5q2j5bi4XHJcbiAgICAgICAgLy8gaWYgKG5ld09iamVjdC50eXBlICYmIChuZXdPYmplY3QudHlwZSA9PT0gJ2dsYicpKSB7XHJcbiAgICAgICAgLy8gICBuZXdPYmplY3Qub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSAwXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHRoYXQyID0gc2RrMkQuZW50aXR5TWFwLmdldChpZClcclxuICAgICAgaWYgKHRoYXQyKSB7XHJcbiAgICAgICAgYXdhaXQgdGhhdDIucmVtb3ZlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGZvciAobGV0IFtrZXksIG9ial0gb2Ygc2RrMkQuZW50aXR5TWFwKSB7XHJcbiAgICAgIGxldCB0aGF0ID0gc2RrMkQuZW50aXR5TWFwLmdldChrZXkpXHJcbiAgICAgIGlmICh0aGF0KSB7XHJcbiAgICAgICAgYXdhaXQgdGhhdC5yZW1vdmUoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBba2V5LCBvYmpdIG9mIGVudGl0eU1hcCkge1xyXG4gICAgICBpZiAob2JqLnR5cGUgPT09ICdCaWxsYm9hcmRPYmplY3QnKSB7XHJcbiAgICAgICAgb2JqLm9wdGlvbnMuaGVpZ2h0UmVmZXJlbmNlID0gMVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBvcHRpb25zID0gc3luY09iamVjdC50b29scy5kZWVwQ29weU9iaihvYmoub3B0aW9ucylcclxuICAgICAgaWYgKCFvYmoudHlwZSB8fCAob2JqLnR5cGUgIT09ICd0aWxlc2V0JyAmJiBvYmoudHlwZSAhPT0gJ2JpbScgJiYgb2JqLnR5cGUgIT09ICdnbGInICYmIG9iai50eXBlICE9PSAnbGF5ZXInICYmIG9iai50eXBlICE9PSAnd2FsbFN0ZXJlb3Njb3BpYycpKSB7XHJcbiAgICAgICAgaWYgKG9iai5zaG93VmlldyA9PSAzKSB7XHJcbiAgICAgICAgICBvcHRpb25zLnNob3cgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGFyZ2V0ID0gYXdhaXQgc2RrMkQuZW50aXR5TWFwLmdldChvcHRpb25zLmlkKVxyXG4gICAgICAgIGlmKHRhcmdldCkge1xyXG4gICAgICAgICAgYXdhaXQgdGFyZ2V0LnJlbW92ZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjYWxsYmFja1xyXG4gICAgICAgIGlmKG9iai50eXBlID09PSAnVGV4dEJveCcpIHtcclxuICAgICAgICAgIGNhbGxiYWNrID0gb2JqLmNhbGxiYWNrXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhcmdldCA9IGF3YWl0IG5ldyBvYmouY29uc3RydWN0b3Ioc2RrMkQsIG9wdGlvbnMsIGNhbGxiYWNrKVxyXG4gICAgICAgIHRhcmdldC5vbkNsaWNrID0gb2JqLm9uQ2xpY2tcclxuICAgICAgICB0YXJnZXQub25SaWdodENsaWNrID0gb2JqLm9uUmlnaHRDbGlja1xyXG4gICAgICAgIHRhcmdldC5vbk1vdXNlTW92ZSA9IG9iai5vbk1vdXNlTW92ZVxyXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICBvYmouZmlyc3RQZXJzb25WaWV3ID0gZmFsc2VcclxuICAgICAgICAgIGlmIChvYmouVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IG9iai5zdGF0ZVxyXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICBvYmouc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghdGFyZ2V0LnN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZShOdW1iZXIob2JqLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlLnRvRml4ZWQoOCkpICsgMC4wMDAwMDAwMDEpXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoTnVtYmVyKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZS50b0ZpeGVkKDgpKSArIDAuMDAwMDAwMDAyKVxyXG4gICAgICAgICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoTnVtYmVyKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZS50b0ZpeGVkKDgpKSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvYmouc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRhcmdldC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKDAuMDAwMDAwMDAxKVxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UoMC4wMDAwMDAwMDIpXHJcbiAgICAgICAgICAgICAgfSwgMTUwMCk7XHJcbiAgICAgICAgICAgIH0sIDE1MDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG9iai52aWV3Rm9sbG93KSB7XHJcbiAgICAgICAgICAgIHRhcmdldC52aWV3Rm9sbG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgICAvLyAgIG5ld09iamVjdC52aWV3Rm9sbG93ID0gZmFsc2VcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai50eXBlID09PSAnQXR0YWNrQXJyb3dPYmplY3QnIHx8IG9iai50eXBlID09PSAnU3RyYWlnaHRBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgIGlmIChvYmouc3ByZWFkU3RhdGUgJiYgb2JqLlR3ZWVuQW5pbWF0ZSAmJiBvYmouVHdlZW5BbmltYXRlLl9vYmplY3QpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSAvIG9iai5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZSAqIG9iai5zcHJlYWRUaW1lKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgIGlmIChvYmouc3ByZWFkU3RhdGUgJiYgb2JqLlR3ZWVuQW5pbWF0ZSAmJiBvYmouVHdlZW5BbmltYXRlLl9vYmplY3QpIHtcclxuICAgICAgICAgICAgdGFyZ2V0LnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKG9iai5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZTEgLyBvYmouVHdlZW5BbmltYXRlLl92YWx1ZXNFbmQuZGlzdGFuY2UxICogb2JqLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ0V4cGxvc2lvbicpIHtcclxuICAgICAgICAgIHRhcmdldC5lbnRpdHkuaW1nSW5kZXggPSBvYmouZW50aXR5LmltZ0luZGV4XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0YXJnZXQub24gJiYgb2JqLnR5cGUgIT09ICdnbGInKSB7XHJcbiAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICd2ZWN0b3InKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5kYXRhID0gb2JqLmRhdGFcclxuICAgICAgICAgICAgdGFyZ2V0LmxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0YXJnZXQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSBvYmouZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhd2FpdCB0YXJnZXQub24oKVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiAob2JqLnR5cGUgJiYgKG9iai50eXBlID09PSAndGlsZXNldCcgfHwgb2JqLnR5cGUgPT09ICdiaW0nKSkge1xyXG4gICAgICAgIC8vICAgdGFyZ2V0LmhlaWdodCA9IC0xMDAwMFxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZiAob2JqLnR5cGUgJiYgKG9iai50eXBlID09PSAnZ2xiJykpIHtcclxuICAgICAgICAvLyAgIHRhcmdldC5vcHRpb25zLnBvc2l0aW9uLmFsdCA9IDBcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHN5bmNEYXRhKHNkaywgaWQsIGVudGl0eUlkKSB7XHJcbiAgc3luY0RhdGEyKHNkaywgaWQsIGVudGl0eUlkKVxyXG4gIC8vIHN5bmNFbnRpdGllcygpXHJcbiAgLy8gc3luY0RhdGFTb3VyY2VzKClcclxufVxyXG5cclxuZnVuY3Rpb24gc3luY0VudGl0aWVzKGVudGl0aWVzMSwgZW50aXRpZXMyKSB7XHJcbiAgaWYgKCFzZGszRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZW50aXRpZXMxKSB8fCBBcnJheS5pc0FycmF5KGVudGl0aWVzMikpIHtcclxuICAgICAgZW50aXRpZXMxID0gbnVsbFxyXG4gICAgICBlbnRpdGllczIgPSBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoIWVudGl0aWVzMSkge1xyXG4gICAgICBlbnRpdGllczEgPSBzZGsyRC52aWV3ZXIuZW50aXRpZXNcclxuICAgIH1cclxuICAgIGlmICghZW50aXRpZXMyKSB7XHJcbiAgICAgIGVudGl0aWVzMiA9IHNkazNELnZpZXdlci5lbnRpdGllc1xyXG4gICAgfVxyXG4gICAgbGV0IGVudGl0aWVzMkQgPSBlbnRpdGllczFcclxuICAgIGxldCBlbnRpdGllczNEID0gZW50aXRpZXMyXHJcbiAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgZW50aXRpZXMyRC52YWx1ZXNbaV0gPT09IGVudGl0aWVzM0QudmFsdWVzW21dXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgIGVudGl0aWVzMkQucmVtb3ZlKGVudGl0aWVzMkQudmFsdWVzW2ldKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmbGFnKSB7XHJcbiAgICAgICAgbGV0IGVudGl0eSA9IGVudGl0aWVzMkQuYWRkKGVudGl0aWVzM0QudmFsdWVzW21dKVxyXG4gICAgICAgIC8vIGlmIChlbnRpdHkucmVjdGFuZ2xlKSB7XHJcbiAgICAgICAgLy8gICAvLyDorr7nva7pq5jluqbvvIzlkKbliJnlnKjmn5DkupvkvY3nva7ml6Dms5XmmL7npLrvvIzkvYboibLlvankvJrlj5jmmpdcclxuICAgICAgICAvLyAgIGVudGl0eS5yZWN0YW5nbGUuaGVpZ2h0ID0gMFxyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJzI0MjM0MjM1NDIzNScsZW50aXRpZXMzRC52YWx1ZXNbbV0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNEYXRhU291cmNlcyhkYXRhU291cmNlcywgdHlwZSkge1xyXG4gIGlmICghc2RrM0QpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoc2RrMkQpIHtcclxuICAgIGxldCBkYXRhU291cmNlczJEID0gc2RrMkQudmlld2VyLmRhdGFTb3VyY2VzXHJcbiAgICBpZiAoZGF0YVNvdXJjZXMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgaWYgKGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLm5hbWUgPT09IGRhdGFTb3VyY2VzLm5hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZW50aXRpZXMnKSB7XHJcbiAgICAgICAgICAgIHN5bmNFbnRpdGllcyhkYXRhU291cmNlczJELl9kYXRhU291cmNlc1tpXS5lbnRpdGllcywgZGF0YVNvdXJjZXMuZW50aXRpZXMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NsdXN0ZXJpbmcnKSB7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLmNsdXN0ZXJpbmcuZW5hYmxlZCA9IGRhdGFTb3VyY2VzLmNsdXN0ZXJpbmcuZW5hYmxlZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZm9yIChsZXQgbSA9IGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IG0gPj0gMDsgbS0tKSB7XHJcbiAgICAvLyAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgIC8vICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSwgZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSlcclxuICAgIC8vICAgICBpZiAoZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSkge1xyXG4gICAgLy8gICAgICAgZmxhZyA9IHRydWVcclxuICAgIC8vICAgICAgIGJyZWFrXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICghZmxhZykge1xyXG4gICAgLy8gICAgIGRhdGFTb3VyY2VzMkQuYWRkKGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzW21dKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZChsYXllciwgaW5kZXgpIHtcclxuICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5hZGRJbWFnZXJ5UHJvdmlkZXIobGF5ZXIuaW1hZ2VyeVByb3ZpZGVyLCBpbmRleClcclxufVxyXG5mdW5jdGlvbiBzeW5jSW1hZ2VyeUxheWVyTW92ZWQobGF5ZXIsIG5ld2luZHhlLCBvbGRpbmRleCkge1xyXG4gIGxldCBsYXllcjJkID0gc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tvbGRpbmRleF1cclxuICBpZiAoIWxheWVyMmQpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICAvLyDnp7vliLDmnIDlupXlsYJcclxuICBpZiAobmV3aW5keGUgPT09IDApIHtcclxuICAgIHNkazJELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxvd2VyVG9Cb3R0b20obGF5ZXIyZClcclxuICB9XHJcbiAgLy8g56e75Yiw5pyA6auY5bGCXHJcbiAgZWxzZSBpZiAobmV3aW5keGUgPj0gc2RrM0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVycy5sZW5ndGggLSAxKSB7XHJcbiAgICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZVRvVG9wKGxheWVyMmQpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKG5ld2luZHhlIDwgb2xkaW5kZXgpIHtcclxuICAgICAgc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMubG93ZXIobGF5ZXIyZClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZGsyRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5yYWlzZShsYXllcjJkKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5mdW5jdGlvbiBzeW5jSW1hZ2VyeUxheWVyUmVtb3ZlZChsYXllciwgaW5kZXgpIHtcclxuICBsZXQgbGF5ZXIyZCA9IHNkazJELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaW5kZXhdXHJcbiAgaWYgKCFsYXllcjJkKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMucmVtb3ZlKGxheWVyMmQpXHJcbn1cclxuZnVuY3Rpb24gc3luY0ltYWdlcnlMYXllclNob3duT3JIaWRkZW4obGF5ZXIsIGluZGV4LCBzdGF0ZSkge1xyXG4gIHJldHVyblxyXG4gIGxldCBsYXllcjJkID0gc2RrMkQudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpbmRleF1cclxuICBsZXQgbGF5ZXIzZCA9IHNkazNELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaW5kZXhdXHJcbiAgY29uc29sZS5sb2coJ2xheWVyMmQnLCBsYXllcjJkLCBzZGsyRCwgbGF5ZXIzZClcclxuXHJcbiAgaWYgKCFsYXllcjJkKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgaWYgKGxheWVyM2QuX29iamVjdFN0YXRlKSB7XHJcbiAgICBpZiAoIWxheWVyM2QuX3Nob3dWaWV3IHx8IGxheWVyM2QuX3Nob3dWaWV3ID09IDIpIHtcclxuICAgICAgbGF5ZXIyZC5zaG93ID0gdHJ1ZVxyXG4gICAgfVxyXG4gICAgaWYgKGxheWVyM2QuX3Nob3dWaWV3ID09IDMpIHtcclxuICAgICAgbGF5ZXIyZC5zaG93ID0gZmFsc2VcclxuICAgIH1cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBsYXllcjJkLnNob3cgPSBzdGF0ZVxyXG4gIH1cclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc3luY1ByaW1pdGl2ZXMocHJpbWl0aXZlKSB7XHJcbiAgaWYgKCFzZGszRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgLy8gYXdhaXQgc2RrMkQudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHByaW1pdGl2ZSlcclxuICAgIC8vIGF3YWl0IHNkazJELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChwcmltaXRpdmUpXHJcbiAgICBsZXQgcHJpbWl0aXZlczJEID0gc2RrMkQudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNcclxuICAgIGxldCBwcmltaXRpdmVzM0QgPSBzZGszRC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1xyXG4gICAgLy8gY29uc29sZS5sb2cocHJpbWl0aXZlczJELCBwcmltaXRpdmVzM0QpXHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgc2RrMkQudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbMV0gPSBzZGszRC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1sxXVxyXG4gICAgLy8gfSwgMjAwMCk7XHJcbiAgICBmb3IgKGxldCBpID0gcHJpbWl0aXZlczJELmxlbmd0aCAtIDE7IGkgPj0gMTsgaS0tKSB7XHJcbiAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgZm9yIChsZXQgbSA9IHByaW1pdGl2ZXMzRC5sZW5ndGggLSAxOyBtID49IDE7IG0tLSkge1xyXG4gICAgICAgIGlmIChwcmltaXRpdmVzM0RbbV0uaWQgJiYgcHJpbWl0aXZlczJEW2ldLmlkICYmIChwcmltaXRpdmVzM0RbbV0uaWQgPT09IHByaW1pdGl2ZXMyRFtpXS5pZCkpIHtcclxuICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmICghZmxhZykge1xyXG4gICAgICAvLyAgIHNkazJELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZShwcmltaXRpdmVzMkRbaV0pXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IG0gPSBwcmltaXRpdmVzM0QubGVuZ3RoIC0gMTsgbSA+PSAxOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gcHJpbWl0aXZlczJELmxlbmd0aCAtIDE7IGkgPj0gMTsgaS0tKSB7XHJcbiAgICAgICAgaWYgKHByaW1pdGl2ZXMzRFttXS5pZCAmJiBwcmltaXRpdmVzMkRbaV0uaWQgJiYgKHByaW1pdGl2ZXMzRFttXS5pZCA9PT0gcHJpbWl0aXZlczJEW2ldLmlkKSkge1xyXG4gICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zaG93ID0gcHJpbWl0aXZlczNEW21dLnNob3dcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zdGFydENvbG9yID0gcHJpbWl0aXZlczNEW21dLnN0YXJ0Q29sb3JcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbmRDb2xvciA9IHByaW1pdGl2ZXMzRFttXS5lbmRDb2xvclxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1pbmltdW1TcGVlZCA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtU3BlZWRcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5tYXhpbXVtU3BlZWQgPSBwcmltaXRpdmVzM0RbbV0ubWF4aW11bVNwZWVkXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWluaW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWF4aW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5tYXhpbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uc3RhcnRTY2FsZSA9IHByaW1pdGl2ZXMzRFttXS5zdGFydFNjYWxlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uZW5kU2NhbGUgPSBwcmltaXRpdmVzM0RbbV0uZW5kU2NhbGVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbWlzc2lvblJhdGUgPSBwcmltaXRpdmVzM0RbbV0uZW1pc3Npb25SYXRlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ucGFydGljbGVTaXplID0gcHJpbWl0aXZlczNEW21dLnBhcnRpY2xlU2l6ZVxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1vZGVsTWF0cml4ID0gcHJpbWl0aXZlczNEW21dLm1vZGVsTWF0cml4XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmICghZmxhZykge1xyXG4gICAgICAvLyAgIHNkazJELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChwcmltaXRpdmVzM0RbbV0pXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV2ZW50QmluZChzZGssIGksIHN5bmNPYmplY3QpIHtcclxuICBsZXQgaGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICBzZGsudmlld2VyLmNhbnZhc1xyXG4gIClcclxuICBoYW5kbGVyLnNldElucHV0QWN0aW9uKCgpID0+IHtcclxuICAgIGFjdGl2ZVZpZXdlciA9IGlcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9ET1dOKVxyXG4gIGhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gaVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9ET1dOKVxyXG4gIGhhbmRsZXIuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gaVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5XSEVFTClcclxuICBoYW5kbGVycy5wdXNoKGhhbmRsZXIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN5bmNWaWV3ZXIoKSB7XHJcbiAgbGV0IHNkayA9IHRoaXMuc2Rrc1thY3RpdmVWaWV3ZXJdXHJcbiAgbGV0IHNkazJcclxuXHJcbiAgaWYgKGFjdGl2ZVZpZXdlciA9PT0gMCkge1xyXG4gICAgc2RrMiA9IHRoaXMuc2Rrc1sxXVxyXG4gIH1cclxuICBlbHNlIGlmIChhY3RpdmVWaWV3ZXIgPT09IDEpIHtcclxuICAgIHNkazIgPSB0aGlzLnNka3NbMF1cclxuICB9XHJcbiAgLy8gdGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5ID0gbnVsbFxyXG4gIC8vIHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSA9IG51bGxcclxuICBpZiAoc2RrLnZpZXdlci5zY2VuZS5tb2RlID09PSAyKSB7XHJcbiAgICBpZiAodGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgICAgIGxldCBkaXN0YW5jZSA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgICBzZGsyLnZpZXdlci5jYW1lcmEubG9va0F0KFxyXG4gICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21SYWRpYW5zKHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmxvbmdpdHVkZSwgc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMubGF0aXR1ZGUsIDApLFxyXG4gICAgICAgIG5ldyBDZXNpdW0uSGVhZGluZ1BpdGNoUmFuZ2UoMCwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MCksIGRpc3RhbmNlKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuc2Rrc1sxXS52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAgICAgICB0aGlzLnNka3NbMV0udmlld2VyLnRyYWNrZWRFbnRpdHkgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGNlbnRlclJlc3VsdDg0ID0gdGhpcy50b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5sb25naXR1ZGUsIHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmxhdGl0dWRlLCBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHQpLCBzZGsudmlld2VyKVxyXG4gICAgICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgICAgZGVzdGluYXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlclJlc3VsdDg0LmxuZywgY2VudGVyUmVzdWx0ODQubGF0LCBjZW50ZXJSZXN1bHQ4NC5hbHQpLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIC8vIOinhuinkuS4reW/g+eCuSjkvKopXHJcbiAgICBsZXQgY2VudGVyUmVzdWx0ID0gc2RrLnZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgIHNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoIC8gMixcclxuICAgICAgICBzZGsudmlld2VyLmNhbnZhcy5jbGllbnRIZWlnaHQgLyAoMiAtICgoOTAgKyBzZGsudmlld2VyLmNhbWVyYS5waXRjaCAvIChDZXNpdW0uTWF0aC5QSSAvIDE4MCkpIC8gMTEwKSksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgICBpZiAoIWNlbnRlclJlc3VsdCkge1xyXG4gICAgICBjZW50ZXJSZXN1bHQgPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbldDXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMudG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25XQywgc2RrLnZpZXdlcikuYWx0XHJcbiAgICBsZXQgY2VudGVyUmVzdWx0ODQgPSB0aGlzLnRvb2xzLmNhcnRlc2lhbjNUb3dnczg0KGNlbnRlclJlc3VsdCwgc2RrLnZpZXdlcilcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0nLCBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25XQywgY2VudGVyUmVzdWx0ODQsIGhlaWdodClcclxuXHJcbiAgICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXJSZXN1bHQ4NC5sbmcsIGNlbnRlclJlc3VsdDg0LmxhdCwgaGVpZ2h0KSxcclxuICAgICAgLy8gb3JpZW50YXRpb246IHtcclxuICAgICAgLy8gICBoZWFkaW5nOiBzZGsyLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgLy8gICBwaXRjaDogc2RrMi52aWV3ZXIuY2FtZXJhLnBpdGNoLFxyXG4gICAgICAvLyAgIHJvbGw6IHNkazIudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgICAgIC8vIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBnZXQyRFZpZXcoKSB7XHJcbiAgcmV0dXJuIHNkazJEXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldDNEVmlldygpIHtcclxuICByZXR1cm4gc2RrM0RcclxufVxyXG5cclxuZnVuY3Rpb24gc29sdmVCdWcoKSB7XHJcbiAgLy8g5Zyo6IO95pi+56S655qE5Zyw5pa55Yqg6L295LiA5Liq5aSa6L655b2i77yM6Kej5Yaz5LqM57u05qih5byP5LiL5p+Q5Lqb5Zyw5pa55peg5rOV5pi+56S65aSa6L655b2i55qEYnVn77yM5Y6f5Zug5LiN5piOXHJcbiAgc2RrMkQgJiYgc2RrMkQudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICBzaG93OiBmYWxzZSxcclxuICAgIHBvbHlnb246IHtcclxuICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShbMTAwLCA1MCwgMTAwLjAwMDEsIDUwLCAxMDAuMDAwMSwgNTAuMDAwMV0pKVxyXG4gICAgfVxyXG4gIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEFjdGl2ZVZpZXdlcih2KSB7XHJcbiAgYWN0aXZlVmlld2VyID0gdlxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTZGsoKSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNka1A6IHNkazNELFxyXG4gICAgc2RrRDogc2RrMkRcclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgeyBvbiwgb2ZmLCBzeW5jRGF0YSwgc3luY0VudGl0aWVzLCBzeW5jRGF0YVNvdXJjZXMsIHN5bmNQcmltaXRpdmVzLCBnZXQyRFZpZXcsIGdldDNEVmlldywgc2V0QWN0aXZlVmlld2VyLCBnZXRTZGsgfSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVUE7QUFBQTtBQVJBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBWUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/MultiViewportMode/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/ScreenRecord/index.js":
-/*!******************************************!*\
- !*** ./src/Global/ScreenRecord/index.js ***!
- \******************************************/
-/*! exports provided: startScreenRecord, stopScreenRecord */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startScreenRecord\", function() { return startScreenRecord; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stopScreenRecord\", function() { return stopScreenRecord; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nvar ScreenRecord = /*#__PURE__*/function () {\n function ScreenRecord() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ScreenRecord);\n this.start();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ScreenRecord, [{\n key: \"start\",\n value: function start() {\n var _this = this;\n navigator.mediaDevices.getDisplayMedia({\n video: true\n }).then(function (stream) {\n // 需要更好的浏览器支持\n // const mime = MediaRecorder.isTypeSupported('video/webm; codecs=vp9')\n // ? 'video/webm; codecs=vp9'\n // : 'video/webm'\n _this.mediaRecorder = new MediaRecorder(stream, {\n // mimeType: mime,\n mimeType: 'video/webm'\n });\n var chunks = [];\n _this.mediaRecorder.addEventListener('dataavailable', function (e) {\n chunks.push(e.data);\n });\n _this.mediaRecorder.addEventListener('stop', /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee() {\n var blob, opts, handle, writable;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n blob = new Blob(chunks, {\n type: 'video/mp4'\n });\n opts = {\n suggestedName: '视频录制.mp4',\n types: [{\n description: '文件类型',\n accept: {\n 'video/mp4': ['.mp4']\n }\n }],\n excludeAcceptAllOption: true\n };\n _context.next = 5;\n return window.showSaveFilePicker(opts);\n case 5:\n handle = _context.sent;\n _context.next = 8;\n return handle.createWritable();\n case 8:\n writable = _context.sent;\n // 创建可写入的文件对象\n // 写入视频内容\n writable.write(blob);\n _context.next = 12;\n return writable.close();\n case 12:\n YJ.Global.ScreenRecord.screenRecord = null;\n _context.next = 18;\n break;\n case 15:\n _context.prev = 15;\n _context.t0 = _context[\"catch\"](0);\n console.info('文件保存失败:', _context.t0);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 15]]);\n })));\n\n // 必须手动启动\n _this.mediaRecorder.start();\n }).catch(function (e) {\n console.info('取消录屏');\n console.info(e);\n YJ.Global.ScreenRecord.screenRecord = null;\n });\n }\n }]);\n}();\nfunction startScreenRecord() {\n if (YJ.Global.ScreenRecord.screenRecord) {\n return '录屏任务进行中';\n } else {\n YJ.Global.ScreenRecord.screenRecord = new ScreenRecord();\n }\n}\nfunction stopScreenRecord() {\n if (YJ.Global.ScreenRecord && YJ.Global.ScreenRecord.screenRecord && YJ.Global.ScreenRecord.screenRecord) {\n YJ.Global.ScreenRecord.screenRecord.mediaRecorder.stop();\n YJ.Global.ScreenRecord.screenRecord = null;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NjcmVlblJlY29yZC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvU2NyZWVuUmVjb3JkL2luZGV4LmpzPzVkMzYiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgU2NyZWVuUmVjb3JkIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc3RhcnQoKVxyXG4gIH1cclxuXHJcbiAgc3RhcnQoKSB7XHJcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSh7XHJcbiAgICAgIHZpZGVvOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcclxuICAgICAgICAvLyDpnIDopoHmm7Tlpb3nmoTmtY/op4jlmajmlK/mjIFcclxuICAgICAgICAvLyBjb25zdCBtaW1lID0gTWVkaWFSZWNvcmRlci5pc1R5cGVTdXBwb3J0ZWQoJ3ZpZGVvL3dlYm07IGNvZGVjcz12cDknKVxyXG4gICAgICAgIC8vICAgPyAndmlkZW8vd2VibTsgY29kZWNzPXZwOSdcclxuICAgICAgICAvLyAgIDogJ3ZpZGVvL3dlYm0nXHJcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCB7XHJcbiAgICAgICAgICAvLyBtaW1lVHlwZTogbWltZSxcclxuICAgICAgICAgIG1pbWVUeXBlOiAndmlkZW8vd2VibScsXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgbGV0IGNodW5rcyA9IFtdXHJcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFhdmFpbGFibGUnLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgY2h1bmtzLnB1c2goZS5kYXRhKVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdzdG9wJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IGJsb2IgPSBuZXcgQmxvYihjaHVua3MsIHtcclxuICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgICAgICAgICBzdWdnZXN0ZWROYW1lOiAn6KeG6aKR5b2V5Yi2Lm1wNCcsXHJcbiAgICAgICAgICAgICAgdHlwZXM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfmlofku7bnsbvlnosnLFxyXG4gICAgICAgICAgICAgICAgICBhY2NlcHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAndmlkZW8vbXA0JzogWycubXA0J10sXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb246IHRydWVcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGF3YWl0IHdpbmRvdy5zaG93U2F2ZUZpbGVQaWNrZXIob3B0cyk7IC8vIOaJk+W8gOS/neWtmOaWh+S7tuWvueivneahhlxyXG4gICAgICAgICAgICBjb25zdCB3cml0YWJsZSA9IGF3YWl0IGhhbmRsZS5jcmVhdGVXcml0YWJsZSgpOyAvLyDliJvlu7rlj6/lhpnlhaXnmoTmlofku7blr7nosaFcclxuICAgICAgICAgICAgLy8g5YaZ5YWl6KeG6aKR5YaF5a65XHJcbiAgICAgICAgICAgIHdyaXRhYmxlLndyaXRlKGJsb2IpO1xyXG4gICAgICAgICAgICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpO1xyXG4gICAgICAgICAgICBZSi5HbG9iYWwuU2NyZWVuUmVjb3JkLnNjcmVlblJlY29yZCA9IG51bGxcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbygn5paH5Lu25L+d5a2Y5aSx6LSlOicsIGVycm9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBsZXQgYmxvYiA9IG5ldyBCbG9iKGNodW5rcywge1xyXG4gICAgICAgICAgLy8gICB0eXBlOiBjaHVua3NbMF0udHlwZSxcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICAvLyBsZXQgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxyXG5cclxuICAgICAgICAgIC8vIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgICAgICAvLyBhLmhyZWYgPSB1cmxcclxuICAgICAgICAgIC8vIGEuZG93bmxvYWQgPSAndmlkZW8ud2VibSdcclxuICAgICAgICAgIC8vIGEuY2xpY2soKVxyXG4gICAgICAgICAgLy8gdGhpcy5yZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgLy8gWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgPSBudWxsXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLy8g5b+F6aG75omL5Yqo5ZCv5YqoXHJcbiAgICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLnN0YXJ0KClcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKCflj5bmtojlvZXlsY8nKVxyXG4gICAgICAgIGNvbnNvbGUuaW5mbyhlKVxyXG4gICAgICAgIFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQuc2NyZWVuUmVjb3JkID0gbnVsbFxyXG4gICAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnRTY3JlZW5SZWNvcmQoKSB7XHJcbiAgaWYgKFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQuc2NyZWVuUmVjb3JkKSB7XHJcbiAgICByZXR1cm4gJ+W9leWxj+S7u+WKoei/m+ihjOS4rSdcclxuICB9IGVsc2Uge1xyXG4gICAgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgPSBuZXcgU2NyZWVuUmVjb3JkKClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN0b3BTY3JlZW5SZWNvcmQoKSB7XHJcbiAgaWYgKFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQgJiYgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgJiYgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQpIHtcclxuICAgIFlKLkdsb2JhbC5TY3JlZW5SZWNvcmQuc2NyZWVuUmVjb3JkLm1lZGlhUmVjb3JkZXIuc3RvcCgpXHJcbiAgICBZSi5HbG9iYWwuU2NyZWVuUmVjb3JkLnNjcmVlblJlY29yZCA9IG51bGxcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IHN0YXJ0U2NyZWVuUmVjb3JkLCBzdG9wU2NyZWVuUmVjb3JkIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/ScreenRecord/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/ScreenShot/index.js":
-/*!****************************************!*\
- !*** ./src/Global/ScreenShot/index.js ***!
- \****************************************/
-/*! exports provided: ScreenShot, ScreenShotHD */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScreenShot\", function() { return ScreenShot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScreenShotHD\", function() { return ScreenShotHD; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _Obj_Element_datalist__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../Obj/Element/datalist */ \"./src/Obj/Element/datalist.js\");\n/* harmony import */ var _MapPrint__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../MapPrint */ \"./src/Global/MapPrint/index.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\n\n\n// 生成快照\nvar convertToImage = function convertToImage(container) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // 设置放大倍数\n var scale = window.devicePixelRatio;\n\n // 传入节点原始宽高\n var width = container.offsetWidth;\n var height = container.offsetHeight;\n\n // html2canvas配置项\n var ops = _objectSpread({\n scale: scale,\n //比例,越大分辨率越高,图片越小\n width: width,\n height: height,\n async: false,\n x: 0,\n y: 0,\n backgroundColor: 'rgb(20,47,65)',\n imageTimeout: 0,\n useCORS: true,\n //允许跨域\n allowTaint: false,\n //允许跨域数据污染'被污染'的canvas\n tainttest: true,\n foreignObjectRendering: true\n }, options);\n return html2canvas(container, ops).then(function (canvas) {\n // 返回图片的二进制数据\n return canvas.toDataURL(\"image/png\");\n });\n};\nfunction ScreenShot(_x) {\n return _ScreenShot.apply(this, arguments);\n}\nfunction _ScreenShot() {\n _ScreenShot = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee(sdk) {\n var cd,\n imgBlobData,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n cd = _args.length > 1 && _args[1] !== undefined ? _args[1] : function () {};\n // const imgBlobData = await convertToImage(sdk.viewer.canvas);\n imgBlobData = sdk.viewer.canvas.toDataURL();\n cd && cd(imgBlobData);\n // try {\n // const imgBlobData = await convertToImage(sdk.viewer.canvas);\n // let arr = imgBlobData.split(','), mime = arr[0].match(/:(.*?);/)[1],\n // bstr = atob(arr[1]), i = bstr.length, u8arr = new Uint8Array(i);\n // while (i--) {\n // u8arr[i] = bstr.charCodeAt(i);\n // }\n\n // let blob = new Blob([u8arr], { type: mime });\n // const opts = {\n // suggestedName: '截图.png',\n // types: [\n // {\n // description: '文件类型',\n // accept: {\n // 'image/png': ['.png'],\n // 'image/jpg': ['.jpg']\n // }\n // }\n // ],\n // excludeAcceptAllOption: true\n // };\n\n // const handle = await window.showSaveFilePicker(opts); // 打开保存文件对话框\n // const writable = await handle.createWritable(); // 创建可写入的文件对象\n // // 写入视频内容\n // writable.write(blob);\n // await writable.close();\n // YJ.Global.ScreenRecord.screenRecord = null\n // } catch (error) {\n // console.info('文件保存失败:', error);\n // }\n case 3:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _ScreenShot.apply(this, arguments);\n}\nvar _DialogObject;\nvar startScreenShotObject;\nfunction ScreenShotHD(_x2) {\n return _ScreenShotHD.apply(this, arguments);\n}\nfunction _ScreenShotHD() {\n _ScreenShotHD = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee4(sdk) {\n var confirm,\n params,\n cd,\n enableTranslate,\n enableTilt,\n enableLook,\n scale,\n level,\n progressInputElm,\n progressBarElm,\n rangeNodeActive,\n rangeNodeActiveText,\n tools,\n centerResult,\n height,\n centerResult84,\n scaleData,\n i,\n startScreenShot,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n confirm = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;\n params = _args4.length > 2 ? _args4[2] : undefined;\n cd = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : function () {};\n if (sdk) {\n _context4.next = 5;\n break;\n }\n return _context4.abrupt(\"return\");\n case 5:\n if (confirm) {\n _context4.next = 8;\n break;\n }\n if (startScreenShotObject) {\n startScreenShotObject.desist();\n startScreenShotObject = null;\n }\n return _context4.abrupt(\"return\");\n case 8:\n Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_9__[\"off\"])(sdk);\n Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_10__[\"off\"])(sdk);\n if (_DialogObject) {\n _DialogObject.close();\n _DialogObject = null;\n }\n enableTranslate = sdk.viewer.scene.screenSpaceCameraController.enableTranslate;\n enableTilt = sdk.viewer.scene.screenSpaceCameraController.enableTilt;\n enableLook = sdk.viewer.scene.screenSpaceCameraController.enableLook;\n scale = params.scaleV * 1;\n // let startScreenShotObject\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_5__[\"default\"](); // _DialogObject = await new Dialog(sdk, {}, {\n // title: '高清出图', left: '180px', top: '100px',\n // confirmCallBack: (options) => {\n // if (startScreenShotObject) {\n // startScreenShotObject.desist()\n // startScreenShotObject = null\n // }\n // progressInputElm && (progressInputElm.style.width = '0%')\n // rangeNodeActive && (rangeNodeActive.style.left = '0%')\n // progressBarElm && (progressBarElm.style.width = '0%')\n // rangeNodeActiveText && (rangeNodeActiveText.innerHTML = '0%')\n // startScreenShotObject = new startScreenShot()\n // },\n // closeCallBack: () => {\n // sdk.viewer.scene.screenSpaceCameraController.enableTranslate = enableTranslate;\n // sdk.viewer.scene.screenSpaceCameraController.enableTilt = enableTilt;\n // sdk.viewer.scene.screenSpaceCameraController.enableLook = enableLook;\n // sdk.viewer._element.getElementsByClassName('compass')[0].style.pointerEvents = 'auto'\n // if (startScreenShotObject) {\n // startScreenShotObject.desist()\n // startScreenShotObject = null\n // }\n // _DialogObject = undefined\n // }\n // })\n // _DialogObject._element.body.className = _DialogObject._element.body.className + ' screenShotHD'\n // let contentElm = document.createElement('div');\n // contentElm.innerHTML = `\n // \n // \n //
\n //
\n // 当前窗口长宽:${sdk.viewer.canvas.width}*${sdk.viewer.canvas.height}像素\n //
\n //
\n //
\n //
\n //
图片大小\n //
\n //
倍窗口\n //
\n //
\n //
\n //
\n // 输出图片长宽:${sdk.viewer.canvas.width * scale}*${sdk.viewer.canvas.height * scale}像素\n //
\n //
\n //
\n //
\n //
输出进度\n //
\n //
\n //
\n //
0%\n //
100%\n //
0%
\n //
\n //
\n //
\n //
\n //
\n //
\n // \n // `\n // _DialogObject.contentAppChild(contentElm)\n sdk.viewer.scene.screenSpaceCameraController.enableTranslate = false;\n sdk.viewer.scene.screenSpaceCameraController.enableTilt = false;\n sdk.viewer.scene.screenSpaceCameraController.enableLook = false;\n sdk.viewer._element.getElementsByClassName('compass')[0].style.pointerEvents = 'none';\n centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.clientWidth / 2, sdk.viewer.canvas.clientHeight / 2));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.clientWidth / 2, sdk.viewer.canvas.clientHeight / (2 - (90 + sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.position;\n }\n }\n height = tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer).alt;\n centerResult84 = tools.cartesian3Towgs84(centerResult, sdk.viewer);\n sdk.viewer.camera.flyTo({\n destination: Cesium.Cartesian3.fromDegrees(centerResult84.lng, centerResult84.lat, height),\n orientation: {\n heading: 0,\n pitch: Cesium.Math.toRadians(-90),\n roll: 0\n },\n duration: 1\n });\n scaleData = [];\n for (i = 1; i <= 10; i++) {\n scaleData.push({\n name: i,\n value: i\n });\n }\n // progressInputElm = document.getElementsByClassName('progress-input')[0]\n // progressBarElm = document.getElementsByClassName('range-process')[0]\n // rangeNodeActive = contentElm.getElementsByClassName('range-node-active')[0]\n // rangeNodeActiveText = contentElm.getElementsByClassName('range-node-active-text')[0]\n // let scaleDataLegpObject = legp(_DialogObject._element.content.getElementsByClassName('scale-box')[0], \".scale\")\n // if (scaleDataLegpObject) {\n // scaleDataLegpObject.legp_search(scaleData)\n // let scaleDataLegpElm = _DialogObject._element.content.getElementsByClassName('scale')[0].getElementsByTagName('input')[0]\n // scale = scaleData[0].value\n // scaleDataLegpObject.legp_searchActive(scaleData[0].value)\n // scaleDataLegpElm.value = scaleData[0].value\n // scaleDataLegpElm.addEventListener('input', () => {\n // for (let i = 0; i < scaleData.length; i++) {\n // if (scaleData[i].value == scaleDataLegpElm.value) {\n // scale = scaleData[i].value\n // _DialogObject._element.content.getElementsByClassName('output-width')[0].innerHTML = sdk.viewer.canvas.width * scale\n // _DialogObject._element.content.getElementsByClassName('output-height')[0].innerHTML = sdk.viewer.canvas.height * scale\n // break\n // }\n // }\n // })\n // }\n startScreenShot = /*#__PURE__*/function () {\n function startScreenShot() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, startScreenShot);\n this.state = false;\n this.start();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(startScreenShot, [{\n key: \"start\",\n value: function start() {\n if (sdk.viewer.scene.imageryLayers._layers.length <= 1) {\n this.error = '未加载底图!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: this.error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: this.error\n });\n console.warn(this.error);\n return;\n }\n var haveBaseMap = false;\n for (var _i = 0; _i < sdk.viewer.scene.imageryLayers._layers.length; _i++) {\n var layer = sdk.viewer.scene.imageryLayers._layers[_i];\n if (layer && layer.show && (!layer.notes || layer.notes !== 'default-base-map')) {\n haveBaseMap = true;\n }\n }\n if (!haveBaseMap) {\n this.error = '未加载底图!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: this.error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: this.error\n });\n console.warn(this.error);\n return;\n }\n var scaleZoom = 0;\n this.state = true;\n var _this = this;\n computeLayers(1);\n function computeLayers(s) {\n var num = s * 2;\n if (num <= scale) {\n scaleZoom++;\n computeLayers(num);\n }\n }\n scaleZoom = scaleZoom + 1;\n var centerResult = sdk.viewer.camera.pickEllipsoid(new Cesium.Cartesian2(sdk.viewer.canvas.width / 2, sdk.viewer.canvas.height / (2 - (90 + sdk.viewer.camera.pitch / (Cesium.Math.PI / 180)) / 110)));\n if (!centerResult) {\n centerResult = sdk.viewer.camera.position;\n }\n function altitudeToZoom(altitude) {\n var A = 40487.57;\n var B = 0.00007096758;\n var C = 91610.74;\n var D = -40467.74;\n return Math.round(D + (A - D) / (1 + Math.pow(altitude / C, B)));\n }\n var height = tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer).alt;\n var zoom = altitudeToZoom(height) + 1;\n var rectangle = sdk.viewer.camera.computeViewRectangle();\n // if (height > 9000000) {\n // height = 9000000\n // }\n // let curRectangle = new Cesium.Rectangle(Cesium.Math.toRadians(centerResult84.lng - (height / stepX)), Cesium.Math.toRadians(centerResult84.lat - (height / stepY)), Cesium.Math.toRadians(centerResult84.lng + (height / stepX)), Cesium.Math.toRadians(centerResult84.lat + (height / stepY)))\n // for (let i = 1; i < sdk.viewer.scene.imageryLayers._layers.length; i++) {\n // let layer = sdk.viewer.scene.imageryLayers._layers[i]\n // createCanvas(layer)\n // }\n var total;\n var totalCount = 0;\n var progress = {};\n var index = 0;\n var layerLength = 0;\n var countIndex = 0;\n for (var _i2 = 0; _i2 < sdk.viewer.scene.imageryLayers._layers.length; _i2++) {\n var _layer = sdk.viewer.scene.imageryLayers._layers[_i2];\n if (_layer && _layer.show && _layer.imageryProvider && _layer.imageryProvider.url && Cesium.Rectangle.intersection(rectangle, _layer.imageryProvider.rectangle) && (!_layer.notes || _layer.notes !== 'default-base-map')) {\n layerLength++;\n }\n }\n var itemTotalProgress = 100 / layerLength;\n var flag = false;\n createCanvas(index);\n function createCanvas(i, totalCanvas) {\n var layer = sdk.viewer.scene.imageryLayers._layers[i];\n if (!layer) {\n if (!flag) {\n _this.error = '当前范围内未找到底图数据!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: _this.error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: _this.error\n });\n console.warn(_this.error);\n }\n return;\n }\n if (!layer.show || !layer.imageryProvider || !layer.imageryProvider.url || !Cesium.Rectangle.intersection(rectangle, layer.imageryProvider.rectangle) || layer.notes && layer.notes === 'default-base-map') {\n var m = i += 1;\n createCanvas(m, totalCanvas);\n return;\n }\n flag = true;\n countIndex++;\n progress[i] = {\n value: 0\n };\n var itemTotalCount = 0;\n var targetLevel;\n var imageryProvider = layer.imageryProvider;\n if (level || level === 0) {\n targetLevel = level;\n } else {\n targetLevel = zoom + scaleZoom - 1;\n if (targetLevel > imageryProvider.maximumLevel) {\n targetLevel = imageryProvider.maximumLevel;\n }\n if (targetLevel < imageryProvider.minimumLevel) {\n targetLevel = imageryProvider.minimumLevel;\n }\n }\n function readyPromise() {\n var MinTile = imageryProvider.tilingScheme.positionToTileXY(Cesium.Rectangle.northwest(rectangle), targetLevel);\n var MaxTile = imageryProvider.tilingScheme.positionToTileXY(Cesium.Rectangle.southeast(rectangle), targetLevel);\n if (!MinTile || !MaxTile) {\n var error = '超出地球范围!';\n // window.ELEMENT && window.ELEMENT.Message({\n // message: error,\n // type: 'warning',\n // duration: 1500\n // });\n tools.message({\n type: 'warning',\n text: error\n });\n console.warn(error);\n return;\n }\n var OfXTilesAtLevel = imageryProvider.tilingScheme.getNumberOfXTilesAtLevel(targetLevel);\n var OfYTilesAtLevel = imageryProvider.tilingScheme.getNumberOfYTilesAtLevel(targetLevel);\n var MinTileX = MinTile.x;\n var MinTileY = MinTile.y;\n var MaxTileX = MaxTile.x;\n var MaxTileY = MaxTile.y;\n\n // if (MinTileX > MaxTileX) {\n // MinTileX = MinTileX - OfXTilesAtLevel\n // }\n\n var imgWidth = 256;\n var imgHeight = 256;\n var itemTotal = (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1);\n // var canvas = new fabric.Canvas();\n var canvas = document.createElement('canvas');\n canvas.width = (MaxTileX - MinTileX + 1) * imgWidth;\n canvas.height = (MaxTileY - MinTileY + 1) * imgHeight;\n var ctx = canvas.getContext('2d');\n var maxRectangle = imageryProvider.tilingScheme.tileXYToRectangle(MaxTileX, MaxTileY, targetLevel);\n var minRectangle = imageryProvider.tilingScheme.tileXYToRectangle(MinTileX, MinTileY, targetLevel);\n var canvasNativeRectangle = new Cesium.Rectangle(minRectangle.west, maxRectangle.south, maxRectangle.east, minRectangle.north);\n // sdk.viewer.entities.add({\n // rectangle: {\n // coordinates: canvasNativeRectangle,\n // material: Cesium.Color.YELLOW.withAlpha(0.2),\n // },\n // });\n // sdk.viewer.entities.add({\n // rectangle: {\n // coordinates: rectangle,\n // material: Cesium.Color.BLACK.withAlpha(0.2),\n // },\n // });\n var nativeRectangle = rectangle;\n var x1 = nativeRectangle.west - canvasNativeRectangle.west;\n var x2 = canvasNativeRectangle.east - nativeRectangle.east;\n var y1 = canvasNativeRectangle.north - nativeRectangle.north;\n var y2 = nativeRectangle.south - canvasNativeRectangle.south;\n var ratioX1 = x1 / (canvasNativeRectangle.east - canvasNativeRectangle.west);\n if (ratioX1 === Infinity) {\n ratioX1 = 0;\n }\n var ratioX2 = x2 / (canvasNativeRectangle.east - canvasNativeRectangle.west);\n if (ratioX2 === Infinity) {\n ratioX2 = 0;\n }\n var ratioY1 = y1 / (canvasNativeRectangle.north - canvasNativeRectangle.south);\n if (ratioY1 === Infinity) {\n ratioY1 = 0;\n }\n var ratioY2 = y2 / (canvasNativeRectangle.north - canvasNativeRectangle.south);\n if (ratioY2 === Infinity) {\n ratioY2 = 0;\n }\n var differenceX1 = canvas.width * ratioX1;\n var differenceY1 = canvas.height * ratioY1;\n var differenceX2 = canvas.width * ratioX2;\n var differenceY2 = canvas.height * ratioY2;\n canvas.width = canvas.width - differenceX1 - differenceX2;\n canvas.height = canvas.height - differenceY1 - differenceY2;\n if (canvas.width == 0) {\n canvas.width = 1;\n }\n if (canvas.height == 0) {\n canvas.height = 1;\n }\n var y = MaxTileY;\n var x = MaxTileX;\n var tileArray = [];\n for (var _y = MaxTileY; _y >= MinTileY; _y--) {\n for (var _x3 = MaxTileX; _x3 >= MinTileX; _x3--) {\n tileArray.push({\n x: _x3,\n y: _y\n });\n }\n }\n var speed = 30;\n var obj = {\n count: 0\n };\n var count = 0;\n var times = -1;\n var obj2 = {\n count: 0\n };\n var count2 = 0;\n Object.defineProperty(obj2, 'count', {\n get: function get() {\n return count2;\n },\n set: function set(newValue) {\n count2 = newValue;\n if (count2 >= speed) {\n traversal10();\n }\n }\n });\n Object.defineProperty(obj, 'count', {\n get: function get() {\n return count;\n },\n set: function set(newValue) {\n count = newValue;\n progress[i].value = itemTotalCount / itemTotal * itemTotalProgress;\n var totalProgress = 0;\n for (var key in progress) {\n totalProgress = totalProgress + progress[key].value;\n }\n // progressBarElm.style.width = totalProgress * 0.99 + '%';\n // rangeNodeActive.style.left = totalProgress * 0.99 + '%';\n // rangeNodeActiveText.innerHTML = Math.floor(totalProgress * 0.99 * 100) / 100 + '%';\n cd({\n width: totalProgress * 0.99,\n left: totalProgress * 0.99,\n value: Math.floor(totalProgress * 0.99 * 100) / 100\n });\n if (count === (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1)) {\n var _ctx = canvas.getContext('2d');\n var cloneCanvas = canvas.cloneNode(true);\n var cloneCtx = cloneCanvas.getContext('2d');\n var imageData = _ctx.getImageData(0, 0, canvas.width, canvas.height);\n cloneCtx.putImageData(imageData, 0, 0);\n canvas.width = sdk.viewer.canvas.width * scale;\n canvas.height = sdk.viewer.canvas.height * scale;\n _ctx.drawImage(cloneCanvas, 0, 0, canvas.width, canvas.height);\n if (totalCanvas) {\n var _ctx2 = totalCanvas.getContext('2d');\n _ctx2.drawImage(canvas, 0, 0);\n if (countIndex != layerLength) {\n var _m = i += 1;\n createCanvas(_m, totalCanvas);\n return;\n } else {\n var imgBlobData = totalCanvas.toDataURL('image/jpeg', 0.95);\n var tempCanvas = document.createElement('canvas');\n var tempCtx = tempCanvas.getContext('2d');\n tempCanvas.width = totalCanvas.width / scale;\n tempCanvas.height = totalCanvas.height / scale;\n tempCtx.drawImage(totalCanvas, 0, 0, tempCanvas.width, tempCanvas.height);\n new _MapPrint__WEBPACK_IMPORTED_MODULE_8__[\"default\"](sdk, tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, imgBlobData, params.modify);\n // progressBarElm.style.width = '100%';\n // rangeNodeActive.style.left = '100%';\n // rangeNodeActiveText.innerHTML = '100%';\n cd({\n value: 100\n });\n _this.state = false;\n }\n } else {\n if (countIndex != layerLength) {\n var _m2 = i += 1;\n createCanvas(_m2, canvas);\n return;\n } else {\n var _imgBlobData = canvas.toDataURL('image/jpeg', 0.95);\n var _tempCanvas = document.createElement('canvas');\n var _tempCtx = _tempCanvas.getContext('2d');\n _tempCanvas.width = canvas.width / scale;\n _tempCanvas.height = canvas.height / scale;\n _tempCtx.drawImage(canvas, 0, 0, _tempCanvas.width, _tempCanvas.height);\n // canvas.width = canvas.width / scale\n // canvas.height = canvas.height / scale\n new _MapPrint__WEBPACK_IMPORTED_MODULE_8__[\"default\"](sdk, _tempCanvas.toDataURL('image/jpeg', 0.95), rectangle, _imgBlobData, params.modify);\n // progressBarElm.style.width = '100%';\n // rangeNodeActive.style.left = '100%';\n // rangeNodeActiveText.innerHTML = '100%';\n cd({\n value: 100\n });\n _this.state = false;\n }\n }\n }\n }\n });\n if (imageryProvider._readyError) {\n obj.count = (MaxTileX - MinTileX + 1) * (MaxTileY - MinTileY + 1);\n } else {\n traversal10();\n }\n function traversal10() {\n obj2.count = 0;\n count2 = 0;\n times++;\n for (var _i3 = times * speed; _i3 < (times + 1) * speed; _i3++) {\n if (_i3 >= tileArray.length) {\n return;\n }\n traversal(_i3);\n }\n }\n function traversal(i) {\n if (!_this.state) {\n return;\n }\n try {\n var _x4 = tileArray[i].x;\n if (_x4 < 0) {\n _x4 = _x4 + OfXTilesAtLevel;\n }\n var img = new Image();\n img.setAttribute('crossOrigin', 'anonymous');\n img.onload = /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n ctx.drawImage(img, (tileArray[i].x - MinTileX) * imgWidth - parseFloat(differenceX1.toFixed(0)), (tileArray[i].y - MinTileY) * imgHeight - parseFloat(differenceY1.toFixed(0)), imgWidth, imgHeight);\n itemTotalCount++;\n obj.count++;\n obj2.count++;\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n img.onerror = function () {\n itemTotalCount++;\n obj.count++;\n obj2.count++;\n };\n var url;\n if (imageryProvider.url.indexOf('{x}') !== -1 && imageryProvider.url.indexOf('{y}') !== -1 && imageryProvider.url.indexOf('{z}') !== -1) {\n url = imageryProvider.url.replace(/\\{x\\}/g, _x4).replace(/\\{y\\}/g, tileArray[i].y).replace(/\\{z\\}/g, targetLevel);\n } else if (imageryProvider.url.indexOf('{TileMatrix}') !== -1 && imageryProvider.url.indexOf('{TileRow}') !== -1 && imageryProvider.url.indexOf('{TileCol}') !== -1) {\n url = imageryProvider.url.replace(/\\{TileCol\\}/g, _x4).replace(/\\{TileRow\\}/g, tileArray[i].y).replace(/\\{TileMatrix\\}/g, targetLevel);\n } else if (imageryProvider._layer && imageryProvider._style && imageryProvider._tileMatrixSetID && imageryProvider._format) {\n url = imageryProvider.url + \"&tilematrix=\".concat(targetLevel, \"&layer=\").concat(imageryProvider._layer, \"&style=\").concat(imageryProvider._style, \"&tilerow=\").concat(y, \"&tilecol=\").concat(_x4, \"&tilematrixset=\").concat(imageryProvider._tileMatrixSetID, \"&format=\").concat(imageryProvider._format);\n } else {\n url = imageryProvider.url + \"tile/\".concat(targetLevel, \"/\").concat(tileArray[i].y, \"/\").concat(_x4);\n }\n img.src = url;\n } catch (error) {\n itemTotalCount++;\n obj.count++;\n obj2.count++;\n }\n }\n function traversal2() {\n if (!_this.state) {\n return;\n }\n try {\n var img = new Image();\n img.setAttribute('crossOrigin', 'anonymous');\n img.onload = /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n ctx.drawImage(img, (x - MinTileX) * imgWidth - parseFloat(differenceX1.toFixed(0)), (y - MinTileY) * imgHeight - parseFloat(differenceY1.toFixed(0)), imgWidth, imgHeight);\n itemTotalCount++;\n obj.count++;\n if (!(x > MinTileX)) {\n _context3.next = 7;\n break;\n }\n x--;\n _context3.next = 13;\n break;\n case 7:\n if (!(y > MinTileY)) {\n _context3.next = 12;\n break;\n }\n y--;\n x = MaxTileX;\n _context3.next = 13;\n break;\n case 12:\n return _context3.abrupt(\"return\");\n case 13:\n traversal();\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n var url;\n if (imageryProvider.url.indexOf('{x}') !== -1 && imageryProvider.url.indexOf('{y}') !== -1 && imageryProvider.url.indexOf('{z}') !== -1) {\n url = imageryProvider.url.replace(/\\{x\\}/g, x).replace(/\\{y\\}/g, y).replace(/\\{z\\}/g, targetLevel);\n } else if (imageryProvider.url.indexOf('{TileMatrix}') !== -1 && imageryProvider.url.indexOf('{TileRow}') !== -1 && imageryProvider.url.indexOf('{TileCol}') !== -1) {\n url = imageryProvider.url.replace(/\\{TileCol\\}/g, x).replace(/\\{TileRow\\}/g, y).replace(/\\{TileMatrix\\}/g, targetLevel);\n } else if (imageryProvider._layer && imageryProvider._style && imageryProvider._tileMatrixSetID && imageryProvider._format) {\n url = imageryProvider.url + \"&tilematrix=\".concat(targetLevel, \"&layer=\").concat(imageryProvider._layer, \"&style=\").concat(imageryProvider._style, \"&tilerow=\").concat(y, \"&tilecol=\").concat(x, \"&tilematrixset=\").concat(imageryProvider._tileMatrixSetID, \"&format=\").concat(imageryProvider._format);\n } else {\n url = imageryProvider.url + \"tile/\".concat(targetLevel, \"/\").concat(y, \"/\").concat(x);\n }\n img.src = url;\n } catch (error) {\n itemTotalCount++;\n obj.count++;\n if (x >= MinTileX) {\n x--;\n } else {\n if (y >= MinTileY) {\n y--;\n x = MaxTileX;\n } else {\n return;\n }\n }\n traversal();\n }\n }\n }\n if (imageryProvider._readyError) {\n progress[i] = {\n value: itemTotalProgress\n };\n readyPromise();\n return;\n }\n imageryProvider.readyPromise.then(function () {\n readyPromise();\n }).catch(function (e) {\n imageryProvider._readyError = true;\n progress[i] = {\n value: itemTotalProgress\n };\n readyPromise();\n });\n }\n }\n }, {\n key: \"desist\",\n value: function desist() {\n this.state = false;\n }\n }]);\n }();\n startScreenShotObject = new startScreenShot();\n case 29:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _ScreenShotHD.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NjcmVlblNob3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NjcmVlblNob3QvaW5kZXguanM/ODQwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9vbHMgZnJvbSAnLi4vLi4vVG9vbHMnXHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vT2JqL0VsZW1lbnQvRGlhbG9nJztcclxuaW1wb3J0IHsgbGVncCB9IGZyb20gJy4uLy4uL09iai9FbGVtZW50L2RhdGFsaXN0JztcclxuaW1wb3J0IE1hcFByaW50IGZyb20gJy4uL01hcFByaW50JztcclxuaW1wb3J0IHsgb2ZmIGFzIG9mZlNwbGl0U2NyZWVuIH0gZnJvbSBcIi4uL1NwbGl0U2NyZWVuXCI7XHJcbmltcG9ydCB7IG9mZiBhcyBvZmZNdWx0aVZpZXdwb3J0TW9kZSB9IGZyb20gXCIuLi9NdWx0aVZpZXdwb3J0TW9kZVwiO1xyXG5cclxuLy8g55Sf5oiQ5b+r54WnXHJcbmNvbnN0IGNvbnZlcnRUb0ltYWdlID0gKGNvbnRhaW5lciwgb3B0aW9ucyA9IHt9KSA9PiB7XHJcbiAgLy8g6K6+572u5pS+5aSn5YCN5pWwXHJcbiAgY29uc3Qgc2NhbGUgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcclxuXHJcbiAgLy8g5Lyg5YWl6IqC54K55Y6f5aeL5a696auYXHJcbiAgY29uc3Qgd2lkdGggPSBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcclxuXHJcbiAgLy8gaHRtbDJjYW52YXPphY3nva7poblcclxuICBjb25zdCBvcHMgPSB7XHJcbiAgICBzY2FsZSwvL+avlOS+i++8jOi2iuWkp+WIhui+qOeOh+i2iumrmO+8jOWbvueJh+i2iuWwj1xyXG4gICAgd2lkdGgsXHJcbiAgICBoZWlnaHQsXHJcbiAgICBhc3luYzogZmFsc2UsXHJcbiAgICB4OiAwLFxyXG4gICAgeTogMCxcclxuICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYigyMCw0Nyw2NSknLFxyXG4gICAgaW1hZ2VUaW1lb3V0OiAwLFxyXG4gICAgdXNlQ09SUzogdHJ1ZSwvL+WFgeiuuOi3qOWfn1xyXG4gICAgYWxsb3dUYWludDogZmFsc2UsIC8v5YWB6K646Leo5Z+f5pWw5o2u5rGh5p+TJ+iiq+axoeafkyfnmoRjYW52YXNcclxuICAgIHRhaW50dGVzdDogdHJ1ZSxcclxuICAgIGZvcmVpZ25PYmplY3RSZW5kZXJpbmc6IHRydWUsICAgLy/lnKjmtY/op4jlmajmlK/mjIHnmoTmg4XlhrXkuIvkvb/nlKhGb3JlaWduT2JqZWN05qih5byP5riy5p+T5Zu+54mHXHJcbiAgICAuLi5vcHRpb25zXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIGh0bWwyY2FudmFzKGNvbnRhaW5lciwgb3BzKS50aGVuKGNhbnZhcyA9PiB7XHJcbiAgICAvLyDov5Tlm57lm77niYfnmoTkuozov5vliLbmlbDmja5cclxuICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBTY3JlZW5TaG90KHNkaywgY2QgPSAoKSA9PiB7IH0pIHtcclxuICAvLyBjb25zdCBpbWdCbG9iRGF0YSA9IGF3YWl0IGNvbnZlcnRUb0ltYWdlKHNkay52aWV3ZXIuY2FudmFzKTtcclxuICBjb25zdCBpbWdCbG9iRGF0YSA9IHNkay52aWV3ZXIuY2FudmFzLnRvRGF0YVVSTCgpXHJcbiAgY2QgJiYgY2QoaW1nQmxvYkRhdGEpXHJcbiAgLy8gdHJ5IHtcclxuICAvLyAgIGNvbnN0IGltZ0Jsb2JEYXRhID0gYXdhaXQgY29udmVydFRvSW1hZ2Uoc2RrLnZpZXdlci5jYW52YXMpO1xyXG4gIC8vICAgbGV0IGFyciA9IGltZ0Jsb2JEYXRhLnNwbGl0KCcsJyksIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXSxcclxuICAvLyAgICAgYnN0ciA9IGF0b2IoYXJyWzFdKSwgaSA9IGJzdHIubGVuZ3RoLCB1OGFyciA9IG5ldyBVaW50OEFycmF5KGkpO1xyXG4gIC8vICAgd2hpbGUgKGktLSkge1xyXG4gIC8vICAgICB1OGFycltpXSA9IGJzdHIuY2hhckNvZGVBdChpKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBsZXQgYmxvYiA9IG5ldyBCbG9iKFt1OGFycl0sIHsgdHlwZTogbWltZSB9KTtcclxuICAvLyAgIGNvbnN0IG9wdHMgPSB7XHJcbiAgLy8gICAgIHN1Z2dlc3RlZE5hbWU6ICfmiKrlm74ucG5nJyxcclxuICAvLyAgICAgdHlwZXM6IFtcclxuICAvLyAgICAgICB7XHJcbiAgLy8gICAgICAgICBkZXNjcmlwdGlvbjogJ+aWh+S7tuexu+WeiycsXHJcbiAgLy8gICAgICAgICBhY2NlcHQ6IHtcclxuICAvLyAgICAgICAgICAgJ2ltYWdlL3BuZyc6IFsnLnBuZyddLFxyXG4gIC8vICAgICAgICAgICAnaW1hZ2UvanBnJzogWycuanBnJ11cclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIF0sXHJcbiAgLy8gICAgIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb246IHRydWVcclxuICAvLyAgIH07XHJcblxyXG4gIC8vICAgY29uc3QgaGFuZGxlID0gYXdhaXQgd2luZG93LnNob3dTYXZlRmlsZVBpY2tlcihvcHRzKTsgLy8g5omT5byA5L+d5a2Y5paH5Lu25a+56K+d5qGGXHJcbiAgLy8gICBjb25zdCB3cml0YWJsZSA9IGF3YWl0IGhhbmRsZS5jcmVhdGVXcml0YWJsZSgpOyAvLyDliJvlu7rlj6/lhpnlhaXnmoTmlofku7blr7nosaFcclxuICAvLyAgIC8vIOWGmeWFpeinhumikeWGheWuuVxyXG4gIC8vICAgd3JpdGFibGUud3JpdGUoYmxvYik7XHJcbiAgLy8gICBhd2FpdCB3cml0YWJsZS5jbG9zZSgpO1xyXG4gIC8vICAgWUouR2xvYmFsLlNjcmVlblJlY29yZC5zY3JlZW5SZWNvcmQgPSBudWxsXHJcbiAgLy8gfSBjYXRjaCAoZXJyb3IpIHtcclxuICAvLyAgIGNvbnNvbGUuaW5mbygn5paH5Lu25L+d5a2Y5aSx6LSlOicsIGVycm9yKTtcclxuICAvLyB9XHJcbn1cclxuXHJcbmxldCBfRGlhbG9nT2JqZWN0XHJcbmxldCBzdGFydFNjcmVlblNob3RPYmplY3RcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIFNjcmVlblNob3RIRChzZGssIGNvbmZpcm0gPSB0cnVlLCBwYXJhbXMsIGNkID0gKCkgPT4geyB9KSB7XHJcbiAgaWYgKCFzZGspIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoIWNvbmZpcm0pIHtcclxuICAgIGlmIChzdGFydFNjcmVlblNob3RPYmplY3QpIHtcclxuICAgICAgc3RhcnRTY3JlZW5TaG90T2JqZWN0LmRlc2lzdCgpXHJcbiAgICAgIHN0YXJ0U2NyZWVuU2hvdE9iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIHJldHVyblxyXG4gIH1cclxuICBvZmZTcGxpdFNjcmVlbihzZGspXHJcbiAgb2ZmTXVsdGlWaWV3cG9ydE1vZGUoc2RrKVxyXG4gIGlmIChfRGlhbG9nT2JqZWN0KSB7XHJcbiAgICBfRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgIF9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgfVxyXG5cclxuICBsZXQgZW5hYmxlVHJhbnNsYXRlID0gc2RrLnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVHJhbnNsYXRlXHJcbiAgbGV0IGVuYWJsZVRpbHQgPSBzZGsudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVUaWx0XHJcbiAgbGV0IGVuYWJsZUxvb2sgPSBzZGsudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rXHJcblxyXG4gIGxldCBzY2FsZSA9IHBhcmFtcy5zY2FsZVYgKiAxXHJcbiAgbGV0IGxldmVsXHJcblxyXG4gIGxldCBwcm9ncmVzc0lucHV0RWxtXHJcbiAgbGV0IHByb2dyZXNzQmFyRWxtXHJcbiAgbGV0IHJhbmdlTm9kZUFjdGl2ZVxyXG4gIGxldCByYW5nZU5vZGVBY3RpdmVUZXh0XHJcbiAgLy8gbGV0IHN0YXJ0U2NyZWVuU2hvdE9iamVjdFxyXG4gIGxldCB0b29scyA9IG5ldyBUb29scygpO1xyXG4gIC8vIF9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHNkaywge30sIHtcclxuICAvLyAgIHRpdGxlOiAn6auY5riF5Ye65Zu+JywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gIC8vICAgY29uZmlybUNhbGxCYWNrOiAob3B0aW9ucykgPT4ge1xyXG4gIC8vICAgICBpZiAoc3RhcnRTY3JlZW5TaG90T2JqZWN0KSB7XHJcbiAgLy8gICAgICAgc3RhcnRTY3JlZW5TaG90T2JqZWN0LmRlc2lzdCgpXHJcbiAgLy8gICAgICAgc3RhcnRTY3JlZW5TaG90T2JqZWN0ID0gbnVsbFxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHByb2dyZXNzSW5wdXRFbG0gJiYgKHByb2dyZXNzSW5wdXRFbG0uc3R5bGUud2lkdGggPSAnMCUnKVxyXG4gIC8vICAgICByYW5nZU5vZGVBY3RpdmUgJiYgKHJhbmdlTm9kZUFjdGl2ZS5zdHlsZS5sZWZ0ID0gJzAlJylcclxuICAvLyAgICAgcHJvZ3Jlc3NCYXJFbG0gJiYgKHByb2dyZXNzQmFyRWxtLnN0eWxlLndpZHRoID0gJzAlJylcclxuICAvLyAgICAgcmFuZ2VOb2RlQWN0aXZlVGV4dCAmJiAocmFuZ2VOb2RlQWN0aXZlVGV4dC5pbm5lckhUTUwgPSAnMCUnKVxyXG4gIC8vICAgICBzdGFydFNjcmVlblNob3RPYmplY3QgPSBuZXcgc3RhcnRTY3JlZW5TaG90KClcclxuICAvLyAgIH0sXHJcbiAgLy8gICBjbG9zZUNhbGxCYWNrOiAoKSA9PiB7XHJcbiAgLy8gICAgIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRyYW5zbGF0ZSA9IGVuYWJsZVRyYW5zbGF0ZTtcclxuICAvLyAgICAgc2RrLnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVGlsdCA9IGVuYWJsZVRpbHQ7XHJcbiAgLy8gICAgIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZUxvb2sgPSBlbmFibGVMb29rO1xyXG4gIC8vICAgICBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NvbXBhc3MnKVswXS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nXHJcbiAgLy8gICAgIGlmIChzdGFydFNjcmVlblNob3RPYmplY3QpIHtcclxuICAvLyAgICAgICBzdGFydFNjcmVlblNob3RPYmplY3QuZGVzaXN0KClcclxuICAvLyAgICAgICBzdGFydFNjcmVlblNob3RPYmplY3QgPSBudWxsXHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgX0RpYWxvZ09iamVjdCA9IHVuZGVmaW5lZFxyXG4gIC8vICAgfVxyXG4gIC8vIH0pXHJcbiAgLy8gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIHNjcmVlblNob3RIRCdcclxuICAvLyBsZXQgY29udGVudEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gYFxyXG4gIC8vIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgLy8gPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgLy8gICAgICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPHNwYW4+5b2T5YmN56qX5Y+j6ZW/5a6977yaPHNwYW4gY2xhc3M9XCJpbnB1dC13aWR0aFwiPiR7c2RrLnZpZXdlci5jYW52YXMud2lkdGh9PC9zcGFuPio8c3BhbiBjbGFzcz1cImlucHV0LWhlaWdodFwiPiR7c2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0fTwvc3Bhbj7lg4/ntKA8L3NwYW4+XHJcbiAgLy8gICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgc2NhbGUtYm94XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuWbvueJh+Wkp+Wwjzwvc3Bhbj5cclxuICAvLyAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dCBpbnB1dC1zZWxlY3Qgc2NhbGVcIj48L2Rpdj5cclxuICAvLyAgICAgICAgICAgICAgIDxzcGFuPuWAjeeql+WPozwvc3Bhbj5cclxuICAvLyAgICAgICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0XCIgc3R5bGU9XCJhbGlnbi1pdGVtczogZmxleC1zdGFydDtcIj5cclxuICAvLyAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgPHNwYW4+6L6T5Ye65Zu+54mH6ZW/5a6977yaPHNwYW4gY2xhc3M9XCJvdXRwdXQtd2lkdGhcIj4ke3Nkay52aWV3ZXIuY2FudmFzLndpZHRoICogc2NhbGV9PC9zcGFuPio8c3BhbiBjbGFzcz1cIm91dHB1dC1oZWlnaHRcIj4ke3Nkay52aWV3ZXIuY2FudmFzLmhlaWdodCAqIHNjYWxlfTwvc3Bhbj7lg4/ntKA8L3NwYW4+XHJcbiAgLy8gICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBtYXJnaW4tYm90dG9tOiAyMHB4O1wiPlxyXG4gIC8vICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgLy8gICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6L6T5Ye66L+b5bqmPC9zcGFuPlxyXG4gIC8vICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWJveFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1iZ1wiPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtcHJvY2Vzcy1ib3hcIj5cclxuICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1wcm9jZXNzXCI+PC9kaXY+XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1ub2RlLWJveFwiPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJhbmdlLW5vZGUtdGV4dFwiPjAlPC9zcGFuPlxyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJhbmdlLW5vZGUtdGV4dFwiPjEwMCU8L3NwYW4+XHJcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1ub2RlLWFjdGl2ZVwiPjxzcGFuIGNsYXNzPVwicmFuZ2Utbm9kZS1hY3RpdmUtdGV4dFwiPjAlPC9zcGFuPjwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gIC8vICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInByb2dyZXNzLWlucHV0XCIgdHlwZT1cInJhbmdlXCIgbWF4PVwiMTAwXCIgbWluPVwiMFwiIHN0ZXA9XCIwLjAxXCI+XHJcbiAgLy8gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAvLyAgICAgICAgICAgPC9kaXY+XHJcbiAgLy8gICAgICAgPC9kaXY+XHJcbiAgLy8gICA8L2Rpdj5cclxuICAvLyAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgLy8gYFxyXG4gIC8vIF9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcblxyXG4gIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRyYW5zbGF0ZSA9IGZhbHNlO1xyXG4gIHNkay52aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRpbHQgPSBmYWxzZTtcclxuICBzZGsudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rID0gZmFsc2U7XHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wYXNzJylbMF0uc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJ1xyXG5cclxuXHJcbiAgbGV0IGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgIHNkay52aWV3ZXIuY2FudmFzLmNsaWVudFdpZHRoIC8gMixcclxuICAgICAgc2RrLnZpZXdlci5jYW52YXMuY2xpZW50SGVpZ2h0IC8gMixcclxuICAgICksXHJcbiAgKVxyXG4gIGlmICghY2VudGVyUmVzdWx0KSB7XHJcbiAgICBjZW50ZXJSZXN1bHQgPSBzZGsudmlld2VyLmNhbWVyYS5waWNrRWxsaXBzb2lkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgc2RrLnZpZXdlci5jYW52YXMuY2xpZW50V2lkdGggLyAyLFxyXG4gICAgICAgIHNkay52aWV3ZXIuY2FudmFzLmNsaWVudEhlaWdodCAvICgyIC0gKCg5MCArIHNkay52aWV3ZXIuY2FtZXJhLnBpdGNoIC8gKENlc2l1bS5NYXRoLlBJIC8gMTgwKSkgLyAxMTApKSxcclxuICAgICAgKSxcclxuICAgIClcclxuICAgIGlmICghY2VudGVyUmVzdWx0KSB7XHJcbiAgICAgIGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uXHJcbiAgICB9XHJcbiAgfVxyXG4gIGxldCBoZWlnaHQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlcikuYWx0XHJcbiAgbGV0IGNlbnRlclJlc3VsdDg0ID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2VudGVyUmVzdWx0LCBzZGsudmlld2VyKVxyXG4gIHNkay52aWV3ZXIuY2FtZXJhLmZseVRvKHtcclxuICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXJSZXN1bHQ4NC5sbmcsIGNlbnRlclJlc3VsdDg0LmxhdCwgaGVpZ2h0KSxcclxuICAgIG9yaWVudGF0aW9uOiB7IGhlYWRpbmc6IDAsIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwKSwgcm9sbDogMCB9LFxyXG4gICAgZHVyYXRpb246IDEsXHJcbiAgfSlcclxuXHJcblxyXG4gIGxldCBzY2FsZURhdGEgPSBbXVxyXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IDEwOyBpKyspIHtcclxuICAgIHNjYWxlRGF0YS5wdXNoKHtcclxuICAgICAgbmFtZTogaSxcclxuICAgICAgdmFsdWU6IGlcclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIHByb2dyZXNzSW5wdXRFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdwcm9ncmVzcy1pbnB1dCcpWzBdXHJcbiAgLy8gcHJvZ3Jlc3NCYXJFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyYW5nZS1wcm9jZXNzJylbMF1cclxuICAvLyByYW5nZU5vZGVBY3RpdmUgPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JhbmdlLW5vZGUtYWN0aXZlJylbMF1cclxuICAvLyByYW5nZU5vZGVBY3RpdmVUZXh0ID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyYW5nZS1ub2RlLWFjdGl2ZS10ZXh0JylbMF1cclxuICAvLyBsZXQgc2NhbGVEYXRhTGVncE9iamVjdCA9IGxlZ3AoX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NjYWxlLWJveCcpWzBdLCBcIi5zY2FsZVwiKVxyXG4gIC8vIGlmIChzY2FsZURhdGFMZWdwT2JqZWN0KSB7XHJcbiAgLy8gICBzY2FsZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoKHNjYWxlRGF0YSlcclxuICAvLyAgIGxldCBzY2FsZURhdGFMZWdwRWxtID0gX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NjYWxlJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF1cclxuICAvLyAgIHNjYWxlID0gc2NhbGVEYXRhWzBdLnZhbHVlXHJcbiAgLy8gICBzY2FsZURhdGFMZWdwT2JqZWN0LmxlZ3Bfc2VhcmNoQWN0aXZlKHNjYWxlRGF0YVswXS52YWx1ZSlcclxuICAvLyAgIHNjYWxlRGF0YUxlZ3BFbG0udmFsdWUgPSBzY2FsZURhdGFbMF0udmFsdWVcclxuICAvLyAgIHNjYWxlRGF0YUxlZ3BFbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NhbGVEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgaWYgKHNjYWxlRGF0YVtpXS52YWx1ZSA9PSBzY2FsZURhdGFMZWdwRWxtLnZhbHVlKSB7XHJcbiAgLy8gICAgICAgICBzY2FsZSA9IHNjYWxlRGF0YVtpXS52YWx1ZVxyXG4gIC8vICAgICAgICAgX0RpYWxvZ09iamVjdC5fZWxlbWVudC5jb250ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ291dHB1dC13aWR0aCcpWzBdLmlubmVySFRNTCA9IHNkay52aWV3ZXIuY2FudmFzLndpZHRoICogc2NhbGVcclxuICAvLyAgICAgICAgIF9EaWFsb2dPYmplY3QuX2VsZW1lbnQuY29udGVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdvdXRwdXQtaGVpZ2h0JylbMF0uaW5uZXJIVE1MID0gc2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0ICogc2NhbGVcclxuICAvLyAgICAgICAgIGJyZWFrXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcblxyXG5cclxuICBjbGFzcyBzdGFydFNjcmVlblNob3Qge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBmYWxzZVxyXG4gICAgICB0aGlzLnN0YXJ0KClcclxuICAgIH1cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICBpZiAoc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoIDw9IDEpIHtcclxuICAgICAgICB0aGlzLmVycm9yID0gJ+acquWKoOi9veW6leWbvu+8gSdcclxuICAgICAgICAvLyB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAvLyAgIG1lc3NhZ2U6IHRoaXMuZXJyb3IsXHJcbiAgICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgLy8gICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIHRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6IHRoaXMuZXJyb3IgfSlcclxuICAgICAgICBjb25zb2xlLndhcm4odGhpcy5lcnJvcilcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgaGF2ZUJhc2VNYXAgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNkay52aWV3ZXIuc2NlbmUuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGxheWVyID0gc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV07XHJcbiAgICAgICAgaWYgKGxheWVyICYmIGxheWVyLnNob3cgJiYgKCFsYXllci5ub3RlcyB8fCBsYXllci5ub3RlcyAhPT0gJ2RlZmF1bHQtYmFzZS1tYXAnKSkge1xyXG4gICAgICAgICAgaGF2ZUJhc2VNYXAgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghaGF2ZUJhc2VNYXApIHtcclxuICAgICAgICB0aGlzLmVycm9yID0gJ+acquWKoOi9veW6leWbvu+8gSdcclxuICAgICAgICAvLyB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAvLyAgIG1lc3NhZ2U6IHRoaXMuZXJyb3IsXHJcbiAgICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgLy8gICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIHRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6IHRoaXMuZXJyb3IgfSlcclxuICAgICAgICBjb25zb2xlLndhcm4odGhpcy5lcnJvcilcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgc2NhbGVab29tID0gMDtcclxuICAgICAgdGhpcy5zdGF0ZSA9IHRydWU7XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXNcclxuICAgICAgY29tcHV0ZUxheWVycygxKTtcclxuXHJcbiAgICAgIGZ1bmN0aW9uIGNvbXB1dGVMYXllcnMocykge1xyXG4gICAgICAgIGxldCBudW0gPSBzICogMjtcclxuICAgICAgICBpZiAobnVtIDw9IHNjYWxlKSB7XHJcbiAgICAgICAgICBzY2FsZVpvb20rKztcclxuICAgICAgICAgIGNvbXB1dGVMYXllcnMobnVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgc2NhbGVab29tID0gc2NhbGVab29tICsgMTtcclxuICAgICAgbGV0IGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICAgICAgbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgICAgc2RrLnZpZXdlci5jYW52YXMud2lkdGggLyAyLFxyXG4gICAgICAgICAgc2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0IC8gKDIgLSAoKDkwICsgc2RrLnZpZXdlci5jYW1lcmEucGl0Y2ggLyAoQ2VzaXVtLk1hdGguUEkgLyAxODApKSAvIDExMCkpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIWNlbnRlclJlc3VsdCkge1xyXG4gICAgICAgIGNlbnRlclJlc3VsdCA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGZ1bmN0aW9uIGFsdGl0dWRlVG9ab29tKGFsdGl0dWRlKSB7XHJcbiAgICAgICAgbGV0IEEgPSA0MDQ4Ny41NztcclxuICAgICAgICBsZXQgQiA9IDAuMDAwMDcwOTY3NTg7XHJcbiAgICAgICAgbGV0IEMgPSA5MTYxMC43NDtcclxuICAgICAgICBsZXQgRCA9IC00MDQ2Ny43NDtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChEICsgKEEgLSBEKSAvICgxICsgTWF0aC5wb3coYWx0aXR1ZGUgLyBDLCBCKSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBoZWlnaHQgPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlcikuYWx0O1xyXG4gICAgICBsZXQgem9vbSA9IGFsdGl0dWRlVG9ab29tKGhlaWdodCkgKyAxO1xyXG5cclxuICAgICAgbGV0IHJlY3RhbmdsZSA9IHNkay52aWV3ZXIuY2FtZXJhLmNvbXB1dGVWaWV3UmVjdGFuZ2xlKCk7XHJcbiAgICAgIC8vIGlmIChoZWlnaHQgPiA5MDAwMDAwKSB7XHJcbiAgICAgIC8vICAgaGVpZ2h0ID0gOTAwMDAwMFxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGxldCBjdXJSZWN0YW5nbGUgPSBuZXcgQ2VzaXVtLlJlY3RhbmdsZShDZXNpdW0uTWF0aC50b1JhZGlhbnMoY2VudGVyUmVzdWx0ODQubG5nIC0gKGhlaWdodCAvIHN0ZXBYKSksIENlc2l1bS5NYXRoLnRvUmFkaWFucyhjZW50ZXJSZXN1bHQ4NC5sYXQgLSAoaGVpZ2h0IC8gc3RlcFkpKSwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGNlbnRlclJlc3VsdDg0LmxuZyArIChoZWlnaHQgLyBzdGVwWCkpLCBDZXNpdW0uTWF0aC50b1JhZGlhbnMoY2VudGVyUmVzdWx0ODQubGF0ICsgKGhlaWdodCAvIHN0ZXBZKSkpXHJcbiAgICAgIC8vIGZvciAobGV0IGkgPSAxOyBpIDwgc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgLy8gICBsZXQgbGF5ZXIgPSBzZGsudmlld2VyLnNjZW5lLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICAvLyAgIGNyZWF0ZUNhbnZhcyhsYXllcilcclxuICAgICAgLy8gfVxyXG4gICAgICBsZXQgdG90YWw7XHJcbiAgICAgIGxldCB0b3RhbENvdW50ID0gMDtcclxuICAgICAgbGV0IHByb2dyZXNzID0ge307XHJcbiAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgIGxldCBsYXllckxlbmd0aCA9IDBcclxuICAgICAgbGV0IGNvdW50SW5kZXggPSAwXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2RrLnZpZXdlci5zY2VuZS5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgbGF5ZXIgPSBzZGsudmlld2VyLnNjZW5lLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXTtcclxuICAgICAgICBpZiAobGF5ZXIgJiYgbGF5ZXIuc2hvdyAmJiBsYXllci5pbWFnZXJ5UHJvdmlkZXIgJiYgbGF5ZXIuaW1hZ2VyeVByb3ZpZGVyLnVybCAmJiBDZXNpdW0uUmVjdGFuZ2xlLmludGVyc2VjdGlvbihyZWN0YW5nbGUsIGxheWVyLmltYWdlcnlQcm92aWRlci5yZWN0YW5nbGUpICYmICghbGF5ZXIubm90ZXMgfHwgbGF5ZXIubm90ZXMgIT09ICdkZWZhdWx0LWJhc2UtbWFwJykpIHtcclxuICAgICAgICAgIGxheWVyTGVuZ3RoKytcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGl0ZW1Ub3RhbFByb2dyZXNzID0gMTAwIC8gbGF5ZXJMZW5ndGhcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBjcmVhdGVDYW52YXMoaW5kZXgpO1xyXG4gICAgICBmdW5jdGlvbiBjcmVhdGVDYW52YXMoaSwgdG90YWxDYW52YXMpIHtcclxuICAgICAgICBsZXQgbGF5ZXIgPSBzZGsudmlld2VyLnNjZW5lLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXTtcclxuICAgICAgICBpZiAoIWxheWVyKSB7XHJcbiAgICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgICAgX3RoaXMuZXJyb3IgPSAn5b2T5YmN6IyD5Zu05YaF5pyq5om+5Yiw5bqV5Zu+5pWw5o2u77yBJ1xyXG4gICAgICAgICAgICAvLyB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgLy8gICBtZXNzYWdlOiBfdGhpcy5lcnJvcixcclxuICAgICAgICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsXHJcbiAgICAgICAgICAgIC8vICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIHRvb2xzLm1lc3NhZ2UoeyB0eXBlOiAnd2FybmluZycsIHRleHQ6IF90aGlzLmVycm9yIH0pXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihfdGhpcy5lcnJvcilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxheWVyLnNob3cgfHwgIWxheWVyLmltYWdlcnlQcm92aWRlciB8fCAhbGF5ZXIuaW1hZ2VyeVByb3ZpZGVyLnVybCB8fCAhQ2VzaXVtLlJlY3RhbmdsZS5pbnRlcnNlY3Rpb24ocmVjdGFuZ2xlLCBsYXllci5pbWFnZXJ5UHJvdmlkZXIucmVjdGFuZ2xlKSB8fCAobGF5ZXIubm90ZXMgJiYgbGF5ZXIubm90ZXMgPT09ICdkZWZhdWx0LWJhc2UtbWFwJykpIHtcclxuICAgICAgICAgIGxldCBtID0gaSArPSAxO1xyXG4gICAgICAgICAgY3JlYXRlQ2FudmFzKG0sIHRvdGFsQ2FudmFzKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICBjb3VudEluZGV4KytcclxuICAgICAgICBwcm9ncmVzc1tpXSA9IHtcclxuICAgICAgICAgIHZhbHVlOiAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpdGVtVG90YWxDb3VudCA9IDA7XHJcbiAgICAgICAgbGV0IHRhcmdldExldmVsXHJcbiAgICAgICAgbGV0IGltYWdlcnlQcm92aWRlciA9IGxheWVyLmltYWdlcnlQcm92aWRlcjtcclxuICAgICAgICBpZiAobGV2ZWwgfHwgbGV2ZWwgPT09IDApIHtcclxuICAgICAgICAgIHRhcmdldExldmVsID0gbGV2ZWxcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0YXJnZXRMZXZlbCA9ICh6b29tICsgc2NhbGVab29tIC0gMSlcclxuICAgICAgICAgIGlmICh0YXJnZXRMZXZlbCA+IGltYWdlcnlQcm92aWRlci5tYXhpbXVtTGV2ZWwpIHtcclxuICAgICAgICAgICAgdGFyZ2V0TGV2ZWwgPSBpbWFnZXJ5UHJvdmlkZXIubWF4aW11bUxldmVsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGFyZ2V0TGV2ZWwgPCBpbWFnZXJ5UHJvdmlkZXIubWluaW11bUxldmVsKSB7XHJcbiAgICAgICAgICAgIHRhcmdldExldmVsID0gaW1hZ2VyeVByb3ZpZGVyLm1pbmltdW1MZXZlbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmdW5jdGlvbiByZWFkeVByb21pc2UoKSB7XHJcbiAgICAgICAgICBsZXQgTWluVGlsZSA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUucG9zaXRpb25Ub1RpbGVYWShcclxuICAgICAgICAgICAgQ2VzaXVtLlJlY3RhbmdsZS5ub3J0aHdlc3QocmVjdGFuZ2xlKSxcclxuICAgICAgICAgICAgdGFyZ2V0TGV2ZWxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBsZXQgTWF4VGlsZSA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUucG9zaXRpb25Ub1RpbGVYWShcclxuICAgICAgICAgICAgQ2VzaXVtLlJlY3RhbmdsZS5zb3V0aGVhc3QocmVjdGFuZ2xlKSxcclxuICAgICAgICAgICAgdGFyZ2V0TGV2ZWxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoIU1pblRpbGUgfHwgIU1heFRpbGUpIHtcclxuICAgICAgICAgICAgbGV0IGVycm9yID0gJ+i2heWHuuWcsOeQg+iMg+WbtO+8gSdcclxuICAgICAgICAgICAgLy8gd2luZG93LkVMRU1FTlQgJiYgd2luZG93LkVMRU1FTlQuTWVzc2FnZSh7XHJcbiAgICAgICAgICAgIC8vICAgbWVzc2FnZTogZXJyb3IsXHJcbiAgICAgICAgICAgIC8vICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgICAvLyAgIGR1cmF0aW9uOiAxNTAwXHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICB0b29scy5tZXNzYWdlKHsgdHlwZTogJ3dhcm5pbmcnLCB0ZXh0OiBlcnJvciB9KVxyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IE9mWFRpbGVzQXRMZXZlbCA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUuZ2V0TnVtYmVyT2ZYVGlsZXNBdExldmVsKHRhcmdldExldmVsKVxyXG4gICAgICAgICAgbGV0IE9mWVRpbGVzQXRMZXZlbCA9IGltYWdlcnlQcm92aWRlci50aWxpbmdTY2hlbWUuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsKHRhcmdldExldmVsKVxyXG4gICAgICAgICAgbGV0IE1pblRpbGVYID0gTWluVGlsZS54O1xyXG4gICAgICAgICAgbGV0IE1pblRpbGVZID0gTWluVGlsZS55O1xyXG4gICAgICAgICAgbGV0IE1heFRpbGVYID0gTWF4VGlsZS54O1xyXG4gICAgICAgICAgbGV0IE1heFRpbGVZID0gTWF4VGlsZS55O1xyXG5cclxuICAgICAgICAgIC8vIGlmIChNaW5UaWxlWCA+IE1heFRpbGVYKSB7XHJcbiAgICAgICAgICAvLyAgIE1pblRpbGVYID0gTWluVGlsZVggLSBPZlhUaWxlc0F0TGV2ZWxcclxuICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICBsZXQgaW1nV2lkdGggPSAyNTY7XHJcbiAgICAgICAgICBsZXQgaW1nSGVpZ2h0ID0gMjU2O1xyXG5cclxuICAgICAgICAgIGxldCBpdGVtVG90YWwgPSAoTWF4VGlsZVggLSBNaW5UaWxlWCArIDEpICogKE1heFRpbGVZIC0gTWluVGlsZVkgKyAxKTtcclxuICAgICAgICAgIC8vIHZhciBjYW52YXMgPSBuZXcgZmFicmljLkNhbnZhcygpO1xyXG4gICAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgY2FudmFzLndpZHRoID0gKE1heFRpbGVYIC0gTWluVGlsZVggKyAxKSAqIGltZ1dpZHRoO1xyXG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IChNYXhUaWxlWSAtIE1pblRpbGVZICsgMSkgKiBpbWdIZWlnaHQ7XHJcbiAgICAgICAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICBsZXQgbWF4UmVjdGFuZ2xlID0gaW1hZ2VyeVByb3ZpZGVyLnRpbGluZ1NjaGVtZS50aWxlWFlUb1JlY3RhbmdsZShNYXhUaWxlWCwgTWF4VGlsZVksIHRhcmdldExldmVsKTtcclxuICAgICAgICAgIGxldCBtaW5SZWN0YW5nbGUgPSBpbWFnZXJ5UHJvdmlkZXIudGlsaW5nU2NoZW1lLnRpbGVYWVRvUmVjdGFuZ2xlKE1pblRpbGVYLCBNaW5UaWxlWSwgdGFyZ2V0TGV2ZWwpO1xyXG4gICAgICAgICAgbGV0IGNhbnZhc05hdGl2ZVJlY3RhbmdsZSA9IG5ldyBDZXNpdW0uUmVjdGFuZ2xlKG1pblJlY3RhbmdsZS53ZXN0LCBtYXhSZWN0YW5nbGUuc291dGgsIG1heFJlY3RhbmdsZS5lYXN0LCBtaW5SZWN0YW5nbGUubm9ydGgpO1xyXG4gICAgICAgICAgLy8gc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgLy8gICByZWN0YW5nbGU6IHtcclxuICAgICAgICAgIC8vICAgICBjb29yZGluYXRlczogY2FudmFzTmF0aXZlUmVjdGFuZ2xlLFxyXG4gICAgICAgICAgLy8gICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuWUVMTE9XLndpdGhBbHBoYSgwLjIpLFxyXG4gICAgICAgICAgLy8gICB9LFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAvLyAgIHJlY3RhbmdsZToge1xyXG4gICAgICAgICAgLy8gICAgIGNvb3JkaW5hdGVzOiByZWN0YW5nbGUsXHJcbiAgICAgICAgICAvLyAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5CTEFDSy53aXRoQWxwaGEoMC4yKSxcclxuICAgICAgICAgIC8vICAgfSxcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgbGV0IG5hdGl2ZVJlY3RhbmdsZSA9IHJlY3RhbmdsZTtcclxuICAgICAgICAgIGxldCB4MSA9IG5hdGl2ZVJlY3RhbmdsZS53ZXN0IC0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLndlc3Q7XHJcbiAgICAgICAgICBsZXQgeDIgPSBjYW52YXNOYXRpdmVSZWN0YW5nbGUuZWFzdCAtIG5hdGl2ZVJlY3RhbmdsZS5lYXN0O1xyXG4gICAgICAgICAgbGV0IHkxID0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLm5vcnRoIC0gbmF0aXZlUmVjdGFuZ2xlLm5vcnRoO1xyXG4gICAgICAgICAgbGV0IHkyID0gbmF0aXZlUmVjdGFuZ2xlLnNvdXRoIC0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLnNvdXRoO1xyXG5cclxuICAgICAgICAgIGxldCByYXRpb1gxID0geDEgLyAoY2FudmFzTmF0aXZlUmVjdGFuZ2xlLmVhc3QgLSBjYW52YXNOYXRpdmVSZWN0YW5nbGUud2VzdCk7XHJcbiAgICAgICAgICBpZiAocmF0aW9YMSA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmF0aW9YMSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcmF0aW9YMiA9IHgyIC8gKGNhbnZhc05hdGl2ZVJlY3RhbmdsZS5lYXN0IC0gY2FudmFzTmF0aXZlUmVjdGFuZ2xlLndlc3QpO1xyXG4gICAgICAgICAgaWYgKHJhdGlvWDIgPT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJhdGlvWDIgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHJhdGlvWTEgPSB5MSAvIChjYW52YXNOYXRpdmVSZWN0YW5nbGUubm9ydGggLSBjYW52YXNOYXRpdmVSZWN0YW5nbGUuc291dGgpO1xyXG4gICAgICAgICAgaWYgKHJhdGlvWTEgPT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJhdGlvWTEgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHJhdGlvWTIgPSB5MiAvIChjYW52YXNOYXRpdmVSZWN0YW5nbGUubm9ydGggLSBjYW52YXNOYXRpdmVSZWN0YW5nbGUuc291dGgpO1xyXG4gICAgICAgICAgaWYgKHJhdGlvWTIgPT09IEluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJhdGlvWTIgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRpZmZlcmVuY2VYMSA9IGNhbnZhcy53aWR0aCAqIHJhdGlvWDE7XHJcbiAgICAgICAgICBsZXQgZGlmZmVyZW5jZVkxID0gY2FudmFzLmhlaWdodCAqIHJhdGlvWTE7XHJcbiAgICAgICAgICBsZXQgZGlmZmVyZW5jZVgyID0gY2FudmFzLndpZHRoICogcmF0aW9YMjtcclxuICAgICAgICAgIGxldCBkaWZmZXJlbmNlWTIgPSBjYW52YXMuaGVpZ2h0ICogcmF0aW9ZMjtcclxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhcy53aWR0aCAtIGRpZmZlcmVuY2VYMSAtIGRpZmZlcmVuY2VYMjtcclxuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBjYW52YXMuaGVpZ2h0IC0gZGlmZmVyZW5jZVkxIC0gZGlmZmVyZW5jZVkyO1xyXG4gICAgICAgICAgaWYgKGNhbnZhcy53aWR0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IDFcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjYW52YXMuaGVpZ2h0ID09IDApIHtcclxuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IDFcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgeSA9IE1heFRpbGVZO1xyXG4gICAgICAgICAgbGV0IHggPSBNYXhUaWxlWDtcclxuXHJcbiAgICAgICAgICBsZXQgdGlsZUFycmF5ID0gW11cclxuICAgICAgICAgIGZvciAobGV0IHkgPSBNYXhUaWxlWTsgeSA+PSBNaW5UaWxlWTsgeS0tKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHggPSBNYXhUaWxlWDsgeCA+PSBNaW5UaWxlWDsgeC0tKSB7XHJcbiAgICAgICAgICAgICAgdGlsZUFycmF5LnB1c2goeyB4LCB5IH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgc3BlZWQgPSAzMFxyXG5cclxuICAgICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgIGNvdW50OiAwXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgbGV0IGNvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICBsZXQgdGltZXMgPSAtMVxyXG4gICAgICAgICAgbGV0IG9iajIgPSB7XHJcbiAgICAgICAgICAgIGNvdW50OiAwXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY291bnQyID0gMFxyXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iajIsICdjb3VudCcsIHtcclxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNvdW50MjtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgICBjb3VudDIgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgICAgICBpZiAoY291bnQyID49IHNwZWVkKSB7XHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzYWwxMCgpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICdjb3VudCcsIHtcclxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIGNvdW50ID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgICAgcHJvZ3Jlc3NbaV0udmFsdWUgPSBpdGVtVG90YWxDb3VudCAvIGl0ZW1Ub3RhbCAqIGl0ZW1Ub3RhbFByb2dyZXNzO1xyXG4gICAgICAgICAgICAgIGxldCB0b3RhbFByb2dyZXNzID0gMFxyXG4gICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0b3RhbFByb2dyZXNzID0gdG90YWxQcm9ncmVzcyArIHByb2dyZXNzW2tleV0udmFsdWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gcHJvZ3Jlc3NCYXJFbG0uc3R5bGUud2lkdGggPSB0b3RhbFByb2dyZXNzICogMC45OSArICclJztcclxuICAgICAgICAgICAgICAvLyByYW5nZU5vZGVBY3RpdmUuc3R5bGUubGVmdCA9IHRvdGFsUHJvZ3Jlc3MgKiAwLjk5ICsgJyUnO1xyXG4gICAgICAgICAgICAgIC8vIHJhbmdlTm9kZUFjdGl2ZVRleHQuaW5uZXJIVE1MID0gTWF0aC5mbG9vcih0b3RhbFByb2dyZXNzICogMC45OSAqIDEwMCkgLyAxMDAgKyAnJSc7XHJcbiAgICAgICAgICAgICAgY2QoeyB3aWR0aDogdG90YWxQcm9ncmVzcyAqIDAuOTksIGxlZnQ6IHRvdGFsUHJvZ3Jlc3MgKiAwLjk5LCB2YWx1ZTogTWF0aC5mbG9vcih0b3RhbFByb2dyZXNzICogMC45OSAqIDEwMCkgLyAxMDAgfSlcclxuICAgICAgICAgICAgICBpZiAoY291bnQgPT09IChNYXhUaWxlWCAtIE1pblRpbGVYICsgMSkgKiAoTWF4VGlsZVkgLSBNaW5UaWxlWSArIDEpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xvbmVDYW52YXMgPSBjYW52YXMuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsb25lQ3R4ID0gY2xvbmVDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgICAgICAgIGxldCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcbiAgICAgICAgICAgICAgICBjbG9uZUN0eC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHNkay52aWV3ZXIuY2FudmFzLndpZHRoICogc2NhbGU7XHJcbiAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gc2RrLnZpZXdlci5jYW52YXMuaGVpZ2h0ICogc2NhbGU7XHJcbiAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGNsb25lQ2FudmFzLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsQ2FudmFzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBjdHggPSB0b3RhbENhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGNhbnZhcywgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjb3VudEluZGV4ICE9IGxheWVyTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSBpICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2FudmFzKG0sIHRvdGFsQ2FudmFzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGltZ0Jsb2JEYXRhID0gdG90YWxDYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45NSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBDdHggPSB0ZW1wQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcENhbnZhcy53aWR0aCA9IHRvdGFsQ2FudmFzLndpZHRoIC8gc2NhbGVcclxuICAgICAgICAgICAgICAgICAgICB0ZW1wQ2FudmFzLmhlaWdodCA9IHRvdGFsQ2FudmFzLmhlaWdodCAvIHNjYWxlXHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcEN0eC5kcmF3SW1hZ2UodG90YWxDYW52YXMsIDAsIDAsIHRlbXBDYW52YXMud2lkdGgsIHRlbXBDYW52YXMuaGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgICAgICBuZXcgTWFwUHJpbnQoc2RrLCB0ZW1wQ2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDAuOTUpLCByZWN0YW5nbGUsIGltZ0Jsb2JEYXRhLCBwYXJhbXMubW9kaWZ5KVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHByb2dyZXNzQmFyRWxtLnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlTm9kZUFjdGl2ZS5zdHlsZS5sZWZ0ID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlTm9kZUFjdGl2ZVRleHQuaW5uZXJIVE1MID0gJzEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNkKHsgdmFsdWU6IDEwMCB9KVxyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnN0YXRlID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoY291bnRJbmRleCAhPSBsYXllckxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtID0gaSArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNhbnZhcyhtLCBjYW52YXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1nQmxvYkRhdGEgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45NSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBDdHggPSB0ZW1wQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcENhbnZhcy53aWR0aCA9IGNhbnZhcy53aWR0aCAvIHNjYWxlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBDYW52YXMuaGVpZ2h0ID0gY2FudmFzLmhlaWdodCAvIHNjYWxlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBDdHguZHJhd0ltYWdlKGNhbnZhcywgMCwgMCwgdGVtcENhbnZhcy53aWR0aCwgdGVtcENhbnZhcy5oZWlnaHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNhbnZhcy53aWR0aCA9IGNhbnZhcy53aWR0aCAvIHNjYWxlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGNhbnZhcy5oZWlnaHQgLyBzY2FsZVxyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBNYXBQcmludChzZGssIHRlbXBDYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMC45NSksIHJlY3RhbmdsZSwgaW1nQmxvYkRhdGEsIHBhcmFtcy5tb2RpZnkpXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJvZ3Jlc3NCYXJFbG0uc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2VOb2RlQWN0aXZlLnN0eWxlLmxlZnQgPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2VOb2RlQWN0aXZlVGV4dC5pbm5lckhUTUwgPSAnMTAwJSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2QoeyB2YWx1ZTogMTAwIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChpbWFnZXJ5UHJvdmlkZXIuX3JlYWR5RXJyb3IpIHtcclxuICAgICAgICAgICAgb2JqLmNvdW50ID0gKE1heFRpbGVYIC0gTWluVGlsZVggKyAxKSAqIChNYXhUaWxlWSAtIE1pblRpbGVZICsgMSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0cmF2ZXJzYWwxMCgpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZnVuY3Rpb24gdHJhdmVyc2FsMTAoKSB7XHJcbiAgICAgICAgICAgIG9iajIuY291bnQgPSAwXHJcbiAgICAgICAgICAgIGNvdW50MiA9IDBcclxuICAgICAgICAgICAgdGltZXMrK1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdGltZXMgKiBzcGVlZDsgaSA8ICh0aW1lcyArIDEpICogc3BlZWQ7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChpID49IHRpbGVBcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0cmF2ZXJzYWwoaSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZ1bmN0aW9uIHRyYXZlcnNhbChpKSB7XHJcbiAgICAgICAgICAgIGlmICghX3RoaXMuc3RhdGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGxldCB4ID0gdGlsZUFycmF5W2ldLnhcclxuICAgICAgICAgICAgICBpZiAoeCA8IDApIHtcclxuICAgICAgICAgICAgICAgIHggPSB4ICsgT2ZYVGlsZXNBdExldmVsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ2Fub255bW91cycpO1xyXG4gICAgICAgICAgICAgIGltZy5vbmxvYWQgPSBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgKCh0aWxlQXJyYXlbaV0ueCAtIE1pblRpbGVYKSAqIGltZ1dpZHRoKSAtIHBhcnNlRmxvYXQoZGlmZmVyZW5jZVgxLnRvRml4ZWQoMCkpLCAoKHRpbGVBcnJheVtpXS55IC0gTWluVGlsZVkpICogaW1nSGVpZ2h0KSAtIHBhcnNlRmxvYXQoZGlmZmVyZW5jZVkxLnRvRml4ZWQoMCkpLCBpbWdXaWR0aCwgaW1nSGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgIGl0ZW1Ub3RhbENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICBvYmouY291bnQrKztcclxuICAgICAgICAgICAgICAgIG9iajIuY291bnQrKztcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbVRvdGFsQ291bnQrKztcclxuICAgICAgICAgICAgICAgIG9iai5jb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgb2JqMi5jb3VudCsrO1xyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIGxldCB1cmw7XHJcbiAgICAgICAgICAgICAgaWYgKGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne3h9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne3l9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne3p9JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsLnJlcGxhY2UoL1xce3hcXH0vZywgeCkucmVwbGFjZSgvXFx7eVxcfS9nLCB0aWxlQXJyYXlbaV0ueSkucmVwbGFjZSgvXFx7elxcfS9nLCB0YXJnZXRMZXZlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVNYXRyaXh9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVSb3d9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVDb2x9JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsLnJlcGxhY2UoL1xce1RpbGVDb2xcXH0vZywgeCkucmVwbGFjZSgvXFx7VGlsZVJvd1xcfS9nLCB0aWxlQXJyYXlbaV0ueSkucmVwbGFjZSgvXFx7VGlsZU1hdHJpeFxcfS9nLCB0YXJnZXRMZXZlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGltYWdlcnlQcm92aWRlci5fbGF5ZXIgJiYgaW1hZ2VyeVByb3ZpZGVyLl9zdHlsZSAmJiBpbWFnZXJ5UHJvdmlkZXIuX3RpbGVNYXRyaXhTZXRJRCAmJiBpbWFnZXJ5UHJvdmlkZXIuX2Zvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gaW1hZ2VyeVByb3ZpZGVyLnVybCArIGAmdGlsZW1hdHJpeD0ke3RhcmdldExldmVsfSZsYXllcj0ke2ltYWdlcnlQcm92aWRlci5fbGF5ZXJ9JnN0eWxlPSR7aW1hZ2VyeVByb3ZpZGVyLl9zdHlsZX0mdGlsZXJvdz0ke3l9JnRpbGVjb2w9JHt4fSZ0aWxlbWF0cml4c2V0PSR7aW1hZ2VyeVByb3ZpZGVyLl90aWxlTWF0cml4U2V0SUR9JmZvcm1hdD0ke2ltYWdlcnlQcm92aWRlci5fZm9ybWF0fWA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gaW1hZ2VyeVByb3ZpZGVyLnVybCArIGB0aWxlLyR7dGFyZ2V0TGV2ZWx9LyR7dGlsZUFycmF5W2ldLnl9LyR7eH1gO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpbWcuc3JjID0gdXJsO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgIGl0ZW1Ub3RhbENvdW50Kys7XHJcbiAgICAgICAgICAgICAgb2JqLmNvdW50Kys7XHJcbiAgICAgICAgICAgICAgb2JqMi5jb3VudCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZnVuY3Rpb24gdHJhdmVyc2FsMigpIHtcclxuICAgICAgICAgICAgaWYgKCFfdGhpcy5zdGF0ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgICAgICAgaW1nLnNldEF0dHJpYnV0ZSgnY3Jvc3NPcmlnaW4nLCAnYW5vbnltb3VzJyk7XHJcbiAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAoKHggLSBNaW5UaWxlWCkgKiBpbWdXaWR0aCkgLSBwYXJzZUZsb2F0KGRpZmZlcmVuY2VYMS50b0ZpeGVkKDApKSwgKCh5IC0gTWluVGlsZVkpICogaW1nSGVpZ2h0KSAtIHBhcnNlRmxvYXQoZGlmZmVyZW5jZVkxLnRvRml4ZWQoMCkpLCBpbWdXaWR0aCwgaW1nSGVpZ2h0KTtcclxuICAgICAgICAgICAgICAgIGl0ZW1Ub3RhbENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICBvYmouY291bnQrKztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoeCA+IE1pblRpbGVYKSB7XHJcbiAgICAgICAgICAgICAgICAgIHgtLVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh5ID4gTWluVGlsZVkpIHtcclxuICAgICAgICAgICAgICAgICAgICB5LS1cclxuICAgICAgICAgICAgICAgICAgICB4ID0gTWF4VGlsZVhcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2FsKClcclxuICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICBsZXQgdXJsO1xyXG4gICAgICAgICAgICAgIGlmIChpbWFnZXJ5UHJvdmlkZXIudXJsLmluZGV4T2YoJ3t4fScpICE9PSAtMSAmJiBpbWFnZXJ5UHJvdmlkZXIudXJsLmluZGV4T2YoJ3t5fScpICE9PSAtMSAmJiBpbWFnZXJ5UHJvdmlkZXIudXJsLmluZGV4T2YoJ3t6fScpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdXJsID0gaW1hZ2VyeVByb3ZpZGVyLnVybC5yZXBsYWNlKC9cXHt4XFx9L2csIHgpLnJlcGxhY2UoL1xce3lcXH0vZywgeSkucmVwbGFjZSgvXFx7elxcfS9nLCB0YXJnZXRMZXZlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVNYXRyaXh9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVSb3d9JykgIT09IC0xICYmIGltYWdlcnlQcm92aWRlci51cmwuaW5kZXhPZigne1RpbGVDb2x9JykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsLnJlcGxhY2UoL1xce1RpbGVDb2xcXH0vZywgeCkucmVwbGFjZSgvXFx7VGlsZVJvd1xcfS9nLCB5KS5yZXBsYWNlKC9cXHtUaWxlTWF0cml4XFx9L2csIHRhcmdldExldmVsKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaW1hZ2VyeVByb3ZpZGVyLl9sYXllciAmJiBpbWFnZXJ5UHJvdmlkZXIuX3N0eWxlICYmIGltYWdlcnlQcm92aWRlci5fdGlsZU1hdHJpeFNldElEICYmIGltYWdlcnlQcm92aWRlci5fZm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsICsgYCZ0aWxlbWF0cml4PSR7dGFyZ2V0TGV2ZWx9JmxheWVyPSR7aW1hZ2VyeVByb3ZpZGVyLl9sYXllcn0mc3R5bGU9JHtpbWFnZXJ5UHJvdmlkZXIuX3N0eWxlfSZ0aWxlcm93PSR7eX0mdGlsZWNvbD0ke3h9JnRpbGVtYXRyaXhzZXQ9JHtpbWFnZXJ5UHJvdmlkZXIuX3RpbGVNYXRyaXhTZXRJRH0mZm9ybWF0PSR7aW1hZ2VyeVByb3ZpZGVyLl9mb3JtYXR9YDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB1cmwgPSBpbWFnZXJ5UHJvdmlkZXIudXJsICsgYHRpbGUvJHt0YXJnZXRMZXZlbH0vJHt5fS8ke3h9YDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaW1nLnNyYyA9IHVybDtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICBpdGVtVG90YWxDb3VudCsrO1xyXG4gICAgICAgICAgICAgIG9iai5jb3VudCsrO1xyXG4gICAgICAgICAgICAgIGlmICh4ID49IE1pblRpbGVYKSB7XHJcbiAgICAgICAgICAgICAgICB4LS1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoeSA+PSBNaW5UaWxlWSkge1xyXG4gICAgICAgICAgICAgICAgICB5LS1cclxuICAgICAgICAgICAgICAgICAgeCA9IE1heFRpbGVYXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRyYXZlcnNhbCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW1hZ2VyeVByb3ZpZGVyLl9yZWFkeUVycm9yKSB7XHJcbiAgICAgICAgICBwcm9ncmVzc1tpXSA9IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1Ub3RhbFByb2dyZXNzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZWFkeVByb21pc2UoKVxyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGltYWdlcnlQcm92aWRlci5yZWFkeVByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICByZWFkeVByb21pc2UoKVxyXG4gICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICBpbWFnZXJ5UHJvdmlkZXIuX3JlYWR5RXJyb3IgPSB0cnVlXHJcbiAgICAgICAgICBwcm9ncmVzc1tpXSA9IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1Ub3RhbFByb2dyZXNzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZWFkeVByb21pc2UoKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkZXNpc3QoKSB7XHJcbiAgICAgIHRoaXMuc3RhdGUgPSBmYWxzZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhcnRTY3JlZW5TaG90T2JqZWN0ID0gbmV3IHN0YXJ0U2NyZWVuU2hvdCgpXHJcblxyXG59XHJcblxyXG5leHBvcnQgeyBTY3JlZW5TaG90LCBTY3JlZW5TaG90SEQgfVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFNQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/ScreenShot/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/SheetIndex/index.js":
-/*!****************************************!*\
- !*** ./src/Global/SheetIndex/index.js ***!
- \****************************************/
-/*! exports provided: SheetIndexStatusSwitch, changeScale, getStatus */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SheetIndexStatusSwitch\", function() { return SheetIndexStatusSwitch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeScale\", function() { return changeScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStatus\", function() { return getStatus; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n\n\n\n\n\n\nvar tools;\nvar state = false;\nvar scale = '1:100万';\nfunction SheetIndexStatusSwitch(sdk) {\n var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!sdk) {\n return;\n }\n if (!tools) {\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_5__[\"default\"]();\n }\n state = s ? true : false;\n if (state) {\n changeScale(sdk, scale);\n } else {\n close(sdk);\n }\n var sdk2D = Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_2__[\"get2DView\"])();\n if (sdk2D) {\n if (state) {\n changeScale(sdk, scale);\n } else {\n close(sdk2D);\n }\n }\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_3__[\"getSdk\"])().sdkD;\n if (sdkD && sdk !== sdkD) {\n SheetIndexStatusSwitch(sdkD, s);\n }\n\n // return new Promise(async (resolve, reject) => {\n // setTimeout(() => {\n // resolve()\n // }, 1000);\n // })\n}\nfunction changeScale(sdk, v) {\n scale = v;\n if (state) {\n open(sdk);\n }\n var sdk2D = Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_2__[\"get2DView\"])();\n if (sdk2D) {\n if (state) {\n open(sdk2D);\n }\n }\n return new Promise(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(resolve, reject) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n setTimeout(function () {\n resolve();\n }, 1000);\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n}\nfunction getStatus() {\n return state;\n}\nfunction open(sdk) {\n close(sdk);\n var cartographic = sdk.viewer.camera.positionCartographic;\n var options = {\n position: {\n lng: Cesium.Math.toDegrees(cartographic.longitude),\n lat: Cesium.Math.toDegrees(cartographic.latitude),\n alt: cartographic.height\n }\n };\n var viewer = sdk.viewer;\n switch (scale) {\n case '1:100万':\n options.position.alt = 16000000;\n break;\n case '1:50万':\n options.position.alt = 5000000;\n break;\n case '1:25万':\n options.position.alt = 2300000;\n break;\n case '1:10万':\n options.position.alt = 680000;\n break;\n case '1:5万':\n options.position.alt = 385000;\n break;\n case '1:2.5万':\n options.position.alt = 180000;\n break;\n case '1:1万':\n options.position.alt = 90000;\n break;\n case '1:5000':\n options.position.alt = 46000;\n break;\n }\n var gridPrimitives;\n var labelCollection;\n for (var i = 0; i < viewer.scene.primitives._primitives.length; i++) {\n if (viewer.scene.primitives._primitives[i].name === 'SheetIndexGridPrimitives') {\n gridPrimitives = viewer.scene.primitives._primitives[i];\n for (var j = 0; j < gridPrimitives._primitives.length; j++) {\n if (gridPrimitives._primitives[j].name === 'SheetIndexLabelCollection') {\n labelCollection = gridPrimitives._primitives[j];\n break;\n }\n }\n break;\n }\n }\n if (!gridPrimitives) {\n gridPrimitives = new Cesium.PrimitiveCollection();\n gridPrimitives.name = 'SheetIndexGridPrimitives';\n viewer.scene.primitives.add(gridPrimitives);\n }\n if (!labelCollection) {\n labelCollection = new Cesium.LabelCollection();\n labelCollection.name = 'SheetIndexLabelCollection';\n }\n var stationaryFrames = 0;\n var maxRectangle = null;\n gridPrimitives.postRenderEvent = function () {\n var height = sdk.viewer.camera.positionCartographic.height;\n switch (scale) {\n case '1:100万':\n options.position.alt = 16000000;\n break;\n case '1:50万':\n options.position.alt = 5000000;\n break;\n case '1:25万':\n options.position.alt = 2300000;\n break;\n case '1:10万':\n options.position.alt = 680000;\n break;\n case '1:5万':\n options.position.alt = 385000;\n break;\n case '1:2.5万':\n options.position.alt = 180000;\n break;\n case '1:1万':\n options.position.alt = 90000;\n break;\n case '1:5000':\n options.position.alt = 46000;\n break;\n }\n if (height > options.position.alt * 5) {\n maxRectangle = null;\n gridPrimitives.removeAll();\n return;\n }\n var isChanged = false;\n var rectangle = getViewExtend();\n var minLng = Cesium.Math.toDegrees(rectangle.west);\n var minLat = Cesium.Math.toDegrees(rectangle.south);\n var maxLng = Cesium.Math.toDegrees(rectangle.east);\n var maxLat = Cesium.Math.toDegrees(rectangle.north);\n if (minLng > maxLng) {\n maxLng += 360;\n }\n rectangle = {\n minLng: minLng,\n minLat: minLat,\n maxLng: maxLng,\n maxLat: maxLat\n };\n if (maxRectangle) {\n if ((maxRectangle.minLng > rectangle.minLng || maxRectangle.minLat > rectangle.minLat || maxRectangle.maxLng < rectangle.maxLng || maxRectangle.maxLat < rectangle.maxLat) && Cesium.Math.toDegrees(sdk.viewer.camera.pitch) < 0) {\n isChanged = true;\n }\n } else {\n countMapSheet(scale);\n }\n if (isChanged) {\n stationaryFrames++;\n // 确认相机已经静止足够多帧\n if (stationaryFrames >= 50) {\n countMapSheet(scale);\n isChanged = false;\n }\n } else {\n stationaryFrames = 0;\n }\n };\n options.complete = function () {\n viewer.scene.postRender.addEventListener(gridPrimitives.postRenderEvent);\n };\n Object(_global__WEBPACK_IMPORTED_MODULE_4__[\"flyTo\"])(sdk, options, 0.5);\n\n /**\r\n * 根据比例尺创建图幅线\r\n * @param {string} scale - 比例尺(可选值:'1:100万', '1:50万', '1:25万', '1:10万', '1:5万', '1:2.5万', '1:1万', '1:5000')\r\n */\n function countMapSheet(scale) {\n labelCollection.removeAll();\n gridPrimitives.removeAll();\n labelCollection = new Cesium.LabelCollection();\n labelCollection.name = 'SheetIndexLabelCollection';\n gridPrimitives.add(labelCollection);\n var rectangle = getViewExtend();\n var lngStep; // 经度步长\n var latStep; // 纬度步长\n // let limitLng // 显示界限(根据图幅线数量显隐)\n // let limitLat\n // Math.abs(maxLng-minLng)/lngStep, Math.abs(maxLat-minLat)/latStep\n var scaleByDistance;\n switch (scale) {\n case '1:100万':\n lngStep = 6;\n latStep = 4;\n scaleByDistance = new Cesium.NearFarScalar(20000000, 1, 80000000, 0);\n break;\n case '1:50万':\n lngStep = 3;\n latStep = 2;\n scaleByDistance = new Cesium.NearFarScalar(5000000, 1, 30000000, 0);\n break;\n case '1:25万':\n lngStep = 1.5;\n latStep = 1;\n scaleByDistance = new Cesium.NearFarScalar(2300000, 1, 20000000, 0);\n break;\n case '1:10万':\n lngStep = 0.5;\n latStep = 1 / 3;\n scaleByDistance = new Cesium.NearFarScalar(680000, 1, 5000000, 0);\n break;\n case '1:5万':\n lngStep = 0.25;\n latStep = 1 / 6;\n scaleByDistance = new Cesium.NearFarScalar(385000, 1, 2400000, 0);\n break;\n case '1:2.5万':\n lngStep = 0.125;\n latStep = 1 / 12;\n scaleByDistance = new Cesium.NearFarScalar(180000, 1, 1200000, 0);\n break;\n case '1:1万':\n lngStep = 0.0625;\n latStep = 1 / 24;\n scaleByDistance = new Cesium.NearFarScalar(90000, 1, 700000, 0);\n break;\n case '1:5000':\n lngStep = 0.03125;\n latStep = 1 / 48;\n scaleByDistance = new Cesium.NearFarScalar(46000, 1, 300000, 0);\n break;\n // case '1:1000':\n // lngStep = 0.01041667;\n // latStep = 0.00694444;\n // break\n // case '1:2000':\n // lngStep = 0.00520833;\n // latStep = 0.00347222;\n // break\n }\n var minLng = Math.floor((180 + Cesium.Math.toDegrees(rectangle.west)) / lngStep) * lngStep - 180;\n var minLat = Math.floor((88 + Cesium.Math.toDegrees(rectangle.south)) / latStep) * latStep - 88;\n var maxLng = Math.ceil((180 + Cesium.Math.toDegrees(rectangle.east)) / lngStep) * lngStep - 180;\n var maxLat = Math.ceil((88 + Cesium.Math.toDegrees(rectangle.north)) / latStep) * latStep - 88;\n if (minLng > maxLng) {\n maxLng += 360;\n }\n maxRectangle = {\n minLng: minLng,\n minLat: minLat,\n maxLng: maxLng,\n maxLat: maxLat\n };\n if (minLat < -88) {\n minLat = -88;\n }\n if (maxLat > 88) {\n maxLat = 88;\n }\n if ((maxRectangle.maxLng - maxRectangle.minLng) / lngStep * ((maxRectangle.maxLat - maxRectangle.minLat) / latStep) > 7000) {\n maxRectangle = null;\n return;\n }\n\n // 绘制经线\n for (var lng = minLng; lng <= maxLng; lng += lngStep) {\n var positions = [];\n var a = [];\n for (var lat = minLat; Math.floor(lat * 1000000000) / 1000000000 <= maxLat; lat += latStep / 2) {\n a.push([lng, lat]);\n positions.push(Cesium.Cartesian3.fromDegrees(lng, lat, 8848));\n }\n if (maxLat != 88 && maxLat + latStep / 2 >= 88) {\n positions.push(Cesium.Cartesian3.fromDegrees(lng, 88, 8848));\n }\n var geometryInstances = new Cesium.GeometryInstance({\n geometry: new Cesium.PolylineGeometry({\n positions: positions,\n width: 1,\n vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,\n arcType: Cesium.ArcType.RHUMB\n })\n });\n gridPrimitives.add(new Cesium.Primitive({\n geometryInstances: geometryInstances,\n appearance: new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromCssColorString('#fcfc00')\n })\n })\n }));\n if (lng < maxLng) {\n // 计算图幅中心坐标\n for (var _lat = minLat; _lat < maxLat; _lat += latStep) {\n var position = {\n lng: lng + lngStep / 2,\n lat: _lat + latStep / 2\n };\n if (position.lat > maxLat) {\n break;\n }\n var sheetNumber = calculateMapSheetNumber(position.lng, position.lat, scale);\n labelCollection.add({\n position: Cesium.Cartesian3.fromDegrees(position.lng, position.lat, 8848),\n text: sheetNumber,\n font: '16px Inter, sans-serif',\n fillColor: Cesium.Color.fromCssColorString('#fcfc00'),\n // backgroundColor: Cesium.Color.fromCssColorString('#FFA145'),\n // backgroundPadding: new Cesium.Cartesian2(8, 4),\n pixelOffset: new Cesium.Cartesian2(0, 0),\n showBackground: false,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n scale: 1.0,\n distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 80000000),\n scaleByDistance: scaleByDistance\n });\n // labelCollection.add({\n // position: Cesium.Cartesian3.fromDegrees(position.lng, position.lat, 10000),\n // text: position.lng + ' , ' + position.lat,\n // font: '16px Inter, sans-serif',\n // fillColor: Cesium.Color.WHITE,\n // backgroundColor: Cesium.Color.fromCssColorString('#165DFF').withAlpha(0.8),\n // backgroundPadding: new Cesium.Cartesian2(8, 4),\n // pixelOffset: new Cesium.Cartesian2(0, 30),\n // showBackground: true,\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n // scale: 1.0,\n // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 20000000),\n // scaleByDistance: new Cesium.NearFarScalar(\n // 5000000,\n // 1,\n // 20000000,\n // 0\n // )\n // })\n }\n }\n }\n\n // 绘制纬线\n for (var _lat2 = minLat; Math.floor(_lat2 * 1000000000) / 1000000000 <= maxLat; _lat2 += latStep) {\n var _positions = [];\n var _a = [];\n for (var _lng = minLng; _lng <= maxLng; _lng += lngStep / 2) {\n _a.push([_lng, _lat2]);\n _positions.push(Cesium.Cartesian3.fromDegrees(_lng, _lat2, 8848));\n }\n var _geometryInstances = new Cesium.GeometryInstance({\n geometry: new Cesium.PolylineGeometry({\n positions: _positions,\n width: 1,\n vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,\n arcType: Cesium.ArcType.RHUMB\n })\n });\n gridPrimitives.add(new Cesium.Primitive({\n geometryInstances: _geometryInstances,\n appearance: new Cesium.PolylineMaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromCssColorString('#fcfc00')\n })\n })\n }));\n }\n }\n\n /**\r\n * 根据经纬度和比例尺计算地图图幅编号\r\n * @param {number} longitude - 经度(十进制格式)\r\n * @param {number} latitude - 纬度(十进制格式)\r\n * @param {string} scale - 比例尺(可选值:'1:100万', '1:50万', '1:25万', '1:10万', '1:5万', '1:2.5万', '1:1万', '1:5000')\r\n * @returns {string} 对应的图幅编号\r\n */\n function calculateMapSheetNumber(lng, lat, scale) {\n var lngStep; // 经度步长\n var latStep; // 纬度步长\n switch (scale) {\n case '1:100万':\n lngStep = 6;\n latStep = 4;\n break;\n case '1:50万':\n lngStep = 3;\n latStep = 2;\n break;\n case '1:25万':\n lngStep = 1.5;\n latStep = 1;\n break;\n case '1:10万':\n lngStep = 0.5;\n latStep = 1 / 3;\n break;\n case '1:5万':\n lngStep = 0.25;\n latStep = 1 / 6;\n break;\n case '1:2.5万':\n lngStep = 0.125;\n latStep = 1 / 12;\n break;\n case '1:1万':\n lngStep = 0.0625;\n latStep = 1 / 24;\n break;\n case '1:5000':\n lngStep = 0.03125;\n latStep = 1 / 48;\n break;\n // case '1:1000':\n // lngStep = 0.01041667;\n // latStep = 0.00694444;\n // break\n // case '1:2000':\n // lngStep = 0.00520833;\n // latStep = 0.00347222;\n // break\n }\n // 确保纬度在 -88 到 88 度之间(因为 88° 以上采用特殊分幅)\n lat = Math.max(-88, Math.min(88, lat));\n lat = Math.abs(lat); // 取绝对值\n\n var B6 = 'ABCDEFGHIJKLMNOPQRSTUV';\n var B2 = lng;\n var B3 = lat;\n\n // 计算 1:100 万地形图的列号\n var col100W = Math.floor(B2 / 6 + 31);\n // 1:100 万地形图的行号对应的字母(A-V)\n var rowChar = B6.charAt(Math.floor(B3 / 4 + 1) - 1);\n\n // 比例尺代码映射\n var scaleCodeMap = {\n '1:100万': '',\n // 1:100万不需要额外代码\n '1:50万': 'B',\n '1:25万': 'C',\n '1:10万': 'D',\n '1:5万': 'E',\n '1:2.5万': 'F',\n '1:1万': 'G',\n '1:5000': 'H'\n };\n\n // 获取比例尺代码\n var scaleCode = scaleCodeMap[scale];\n if (!scaleCode && scale !== '1:100万') {\n throw new Error('不支持的比例尺,请使用: 1:100万, 1:50万, 1:25万, 1:10万, 1:5万, 1:2.5万, 1:1万, 1:5000');\n }\n\n // 计算在 1:100 万图幅内的行列号(根据不同比例尺)\n var rowIn100W, colIn100W;\n rowIn100W = rowChar + col100W;\n var num1 = Math.floor((Math.ceil(B3 / 4) * 4 - B3) / latStep) + 1;\n var rowNum = (\"000\" + num1).slice(-3);\n var remainder = B2 - Math.floor(B2 / 6) * 6;\n var num2 = Math.floor(remainder / lngStep) + 1;\n var colNum = (\"000\" + num2).slice(-3);\n switch (scale) {\n case '1:100万':\n // 1:100万直接使用行号和列号\n return rowIn100W;\n case '1:50万':\n break;\n case '1:25万':\n break;\n case '1:10万':\n break;\n case '1:5万':\n break;\n case '1:2.5万':\n break;\n case '1:1万':\n break;\n case '1:5000':\n break;\n default:\n throw new Error('不支持的比例尺');\n }\n\n // 生成最终编号\n return rowIn100W + scaleCode + rowNum + colNum;\n }\n\n // 获取当前视角矩形范围(二维模式)\n function getViewExtend() {\n var params = {};\n var extend = viewer.camera.computeViewRectangle();\n if (viewer.scene.mode == 2) {\n //2D下会可能拾取不到坐标,extend返回undefined,所以做以下转换\n var canvas = viewer.scene.canvas;\n var upperLeft = new Cesium.Cartesian2(0, 0); //canvas左上角坐标转2d坐标\n var lowerRight = new Cesium.Cartesian2(canvas.clientWidth, canvas.clientHeight); //canvas右下角坐标转2d坐标\n\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var upperLeft3 = viewer.camera.pickEllipsoid(upperLeft, ellipsoid); //2D转3D世界坐标\n\n var lowerRight3 = viewer.camera.pickEllipsoid(lowerRight, ellipsoid); //2D转3D世界坐标\n\n if (!upperLeft3) {\n var cartesian2 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, {\n x: 0,\n y: 0,\n z: 6356755\n });\n upperLeft.y = cartesian2.y + 5;\n upperLeft3 = viewer.camera.pickEllipsoid(upperLeft, ellipsoid);\n }\n if (!lowerRight3) {\n var _cartesian = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, {\n x: 0,\n y: 0,\n z: -6356755\n });\n lowerRight.y = _cartesian.y - 5;\n lowerRight3 = viewer.camera.pickEllipsoid(lowerRight, ellipsoid);\n // console.log('lowerRight3', lowerRight, lowerRight3)\n }\n var upperLeftCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(upperLeft3); //3D世界坐标转弧度\n var lowerRightCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(lowerRight3); //3D世界坐标转弧度\n\n if ((lowerRight.y - upperLeft.y) / (lowerRight.x - upperLeft.x) <= 0.49998752339363695) {\n extend = new Cesium.Rectangle(Cesium.Math.toRadians(-180), Cesium.Math.toRadians(-90), Cesium.Math.toRadians(180), Cesium.Math.toRadians(90));\n } else {\n extend = new Cesium.Rectangle(upperLeftCartographic.longitude, lowerRightCartographic.latitude, lowerRightCartographic.longitude, upperLeftCartographic.latitude);\n }\n\n // console.log(\"经度:\" + minx + \"----\" + maxx);\n // console.log(\"纬度:\" + miny + \"----\" + maxy);\n\n return extend;\n } else {\n //3D获取方式\n return extend;\n }\n }\n}\nfunction close(sdk) {\n var viewer = sdk.viewer;\n var gridPrimitives;\n var labelCollection;\n for (var i = 0; i < viewer.scene.primitives._primitives.length; i++) {\n if (viewer.scene.primitives._primitives[i].name === 'SheetIndexGridPrimitives') {\n gridPrimitives = viewer.scene.primitives._primitives[i];\n for (var j = 0; j < gridPrimitives._primitives.length; j++) {\n if (gridPrimitives._primitives[j].name === 'SheetIndexLabelCollection') {\n labelCollection = gridPrimitives._primitives[j];\n break;\n }\n }\n break;\n }\n }\n labelCollection && labelCollection.removeAll();\n gridPrimitives && gridPrimitives.removeAll();\n gridPrimitives && viewer.scene.postRender.removeEventListener(gridPrimitives.postRenderEvent);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NoZWV0SW5kZXgvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NoZWV0SW5kZXgvaW5kZXguanM/MTNjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgZ2V0MkRWaWV3IH0gZnJvbSAnLi4vTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IGdldFNkayB9IGZyb20gJy4uL1NwbGl0U2NyZWVuJ1xyXG5pbXBvcnQgeyBmbHlUbyB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJ1xyXG5cclxubGV0IHRvb2xzXHJcbmxldCBzdGF0ZSA9IGZhbHNlXHJcbmxldCBzY2FsZSA9ICcxOjEwMOS4hydcclxuXHJcbmZ1bmN0aW9uIFNoZWV0SW5kZXhTdGF0dXNTd2l0Y2goc2RrLCBzID0gZmFsc2UpIHtcclxuICBpZiAoIXNkaykge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmICghdG9vbHMpIHtcclxuICAgIHRvb2xzID0gbmV3IFRvb2xzKClcclxuICB9XHJcbiAgc3RhdGUgPSBzID8gdHJ1ZSA6IGZhbHNlXHJcblxyXG4gIGlmIChzdGF0ZSkge1xyXG4gICAgY2hhbmdlU2NhbGUoc2RrLCBzY2FsZSlcclxuICB9IGVsc2Uge1xyXG4gICAgY2xvc2Uoc2RrKVxyXG4gIH1cclxuICBsZXQgc2RrMkQgPSBnZXQyRFZpZXcoKVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIGNoYW5nZVNjYWxlKHNkaywgc2NhbGUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbG9zZShzZGsyRClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmIChzZGtEICYmIHNkayAhPT0gc2RrRCkge1xyXG4gICAgU2hlZXRJbmRleFN0YXR1c1N3aXRjaChzZGtELCBzKVxyXG4gIH1cclxuXHJcbiAgLy8gcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gIC8vICAgICByZXNvbHZlKClcclxuICAvLyAgIH0sIDEwMDApO1xyXG4gIC8vIH0pXHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGFuZ2VTY2FsZShzZGssIHYpIHtcclxuICBzY2FsZSA9IHZcclxuICBpZiAoc3RhdGUpIHtcclxuICAgIG9wZW4oc2RrKVxyXG4gIH1cclxuICBsZXQgc2RrMkQgPSBnZXQyRFZpZXcoKVxyXG4gIGlmIChzZGsyRCkge1xyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIG9wZW4oc2RrMkQpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgcmVzb2x2ZSgpXHJcbiAgICB9LCAxMDAwKTtcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTdGF0dXMoKSB7XHJcbiAgcmV0dXJuIHN0YXRlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9wZW4oc2RrKSB7XHJcbiAgY2xvc2Uoc2RrKVxyXG4gIGxldCBjYXJ0b2dyYXBoaWMgPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbkNhcnRvZ3JhcGhpY1xyXG4gIGxldCBvcHRpb25zID0ge1xyXG4gICAgcG9zaXRpb246IHtcclxuICAgICAgbG5nOiBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSksXHJcbiAgICAgIGxhdDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAgIGFsdDogY2FydG9ncmFwaGljLmhlaWdodCxcclxuICAgIH0sXHJcbiAgfVxyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyO1xyXG4gIHN3aXRjaCAoc2NhbGUpIHtcclxuICAgIGNhc2UgJzE6MTAw5LiHJzpcclxuICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSAxNjAwMDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMTo1MOS4hyc6XHJcbiAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNTAwMDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMToyNeS4hyc6XHJcbiAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gMjMwMDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMToxMOS4hyc6XHJcbiAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNjgwMDAwXHJcbiAgICAgIGJyZWFrXHJcbiAgICBjYXNlICcxOjXkuIcnOlxyXG4gICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDM4NTAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMToyLjXkuIcnOlxyXG4gICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDE4MDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMTox5LiHJzpcclxuICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA5MDAwMFxyXG4gICAgICBicmVha1xyXG4gICAgY2FzZSAnMTo1MDAwJzpcclxuICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA0NjAwMFxyXG4gICAgICBicmVha1xyXG4gIH1cclxuXHJcbiAgbGV0IGdyaWRQcmltaXRpdmVzXHJcbiAgbGV0IGxhYmVsQ29sbGVjdGlvblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmICh2aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1tpXS5uYW1lID09PSAnU2hlZXRJbmRleEdyaWRQcmltaXRpdmVzJykge1xyXG4gICAgICBncmlkUHJpbWl0aXZlcyA9IHZpZXdlci5zY2VuZS5wcmltaXRpdmVzLl9wcmltaXRpdmVzW2ldO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGdyaWRQcmltaXRpdmVzLl9wcmltaXRpdmVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKGdyaWRQcmltaXRpdmVzLl9wcmltaXRpdmVzW2pdLm5hbWUgPT09ICdTaGVldEluZGV4TGFiZWxDb2xsZWN0aW9uJykge1xyXG4gICAgICAgICAgbGFiZWxDb2xsZWN0aW9uID0gZ3JpZFByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbal07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmICghZ3JpZFByaW1pdGl2ZXMpIHtcclxuICAgIGdyaWRQcmltaXRpdmVzID0gbmV3IENlc2l1bS5QcmltaXRpdmVDb2xsZWN0aW9uKCk7XHJcbiAgICBncmlkUHJpbWl0aXZlcy5uYW1lID0gJ1NoZWV0SW5kZXhHcmlkUHJpbWl0aXZlcyc7XHJcbiAgICB2aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoZ3JpZFByaW1pdGl2ZXMpO1xyXG4gIH1cclxuICBpZiAoIWxhYmVsQ29sbGVjdGlvbikge1xyXG4gICAgbGFiZWxDb2xsZWN0aW9uID0gbmV3IENlc2l1bS5MYWJlbENvbGxlY3Rpb24oKTtcclxuICAgIGxhYmVsQ29sbGVjdGlvbi5uYW1lID0gJ1NoZWV0SW5kZXhMYWJlbENvbGxlY3Rpb24nO1xyXG4gIH1cclxuICBsZXQgc3RhdGlvbmFyeUZyYW1lcyA9IDA7XHJcbiAgbGV0IG1heFJlY3RhbmdsZSA9IG51bGw7XHJcbiAgZ3JpZFByaW1pdGl2ZXMucG9zdFJlbmRlckV2ZW50ID0gKCkgPT4ge1xyXG4gICAgbGV0IGhlaWdodCA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgc3dpdGNoIChzY2FsZSkge1xyXG4gICAgICBjYXNlICcxOjEwMOS4hyc6XHJcbiAgICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSAxNjAwMDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6NTDkuIcnOlxyXG4gICAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNTAwMDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MjXkuIcnOlxyXG4gICAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gMjMwMDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MTDkuIcnOlxyXG4gICAgICAgIG9wdGlvbnMucG9zaXRpb24uYWx0ID0gNjgwMDAwXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTo15LiHJzpcclxuICAgICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDM4NTAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IDE4MDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MeS4hyc6XHJcbiAgICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA5MDAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6NTAwMCc6XHJcbiAgICAgICAgb3B0aW9ucy5wb3NpdGlvbi5hbHQgPSA0NjAwMFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgICBpZiAoaGVpZ2h0ID4gb3B0aW9ucy5wb3NpdGlvbi5hbHQgKiA1KSB7XHJcbiAgICAgIG1heFJlY3RhbmdsZSA9IG51bGw7XHJcbiAgICAgIGdyaWRQcmltaXRpdmVzLnJlbW92ZUFsbCgpO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBpc0NoYW5nZWQgPSBmYWxzZVxyXG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFZpZXdFeHRlbmQoKTtcclxuXHJcbiAgICBsZXQgbWluTG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHJlY3RhbmdsZS53ZXN0KVxyXG4gICAgbGV0IG1pbkxhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhyZWN0YW5nbGUuc291dGgpXHJcbiAgICBsZXQgbWF4TG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHJlY3RhbmdsZS5lYXN0KVxyXG4gICAgbGV0IG1heExhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhyZWN0YW5nbGUubm9ydGgpXHJcbiAgICBpZiAobWluTG5nID4gbWF4TG5nKSB7XHJcbiAgICAgIG1heExuZyArPSAzNjBcclxuICAgIH1cclxuICAgIHJlY3RhbmdsZSA9IHsgbWluTG5nLCBtaW5MYXQsIG1heExuZywgbWF4TGF0IH1cclxuICAgIGlmIChtYXhSZWN0YW5nbGUpIHtcclxuICAgICAgaWYgKChtYXhSZWN0YW5nbGUubWluTG5nID4gcmVjdGFuZ2xlLm1pbkxuZyB8fCBtYXhSZWN0YW5nbGUubWluTGF0ID4gcmVjdGFuZ2xlLm1pbkxhdCB8fCBtYXhSZWN0YW5nbGUubWF4TG5nIDwgcmVjdGFuZ2xlLm1heExuZyB8fCBtYXhSZWN0YW5nbGUubWF4TGF0IDwgcmVjdGFuZ2xlLm1heExhdCkgJiYgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHNkay52aWV3ZXIuY2FtZXJhLnBpdGNoKSA8IDApIHtcclxuICAgICAgICBpc0NoYW5nZWQgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb3VudE1hcFNoZWV0KHNjYWxlKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc0NoYW5nZWQpIHtcclxuICAgICAgc3RhdGlvbmFyeUZyYW1lcysrO1xyXG4gICAgICAvLyDnoa7orqTnm7jmnLrlt7Lnu4/pnZnmraLotrPlpJ/lpJrluKdcclxuICAgICAgaWYgKHN0YXRpb25hcnlGcmFtZXMgPj0gNTApIHtcclxuICAgICAgICBjb3VudE1hcFNoZWV0KHNjYWxlKVxyXG4gICAgICAgIGlzQ2hhbmdlZCA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRpb25hcnlGcmFtZXMgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3B0aW9ucy5jb21wbGV0ZSA9ICgpID0+IHtcclxuICAgIHZpZXdlci5zY2VuZS5wb3N0UmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoZ3JpZFByaW1pdGl2ZXMucG9zdFJlbmRlckV2ZW50KTtcclxuICB9XHJcbiAgZmx5VG8oc2RrLCBvcHRpb25zLCAwLjUpXHJcblxyXG4gIC8qKlxyXG4gICog5qC55o2u5q+U5L6L5bC65Yib5bu65Zu+5bmF57q/XHJcbiAgKiBAcGFyYW0ge3N0cmluZ30gc2NhbGUgLSDmr5TkvovlsLrvvIjlj6/pgInlgLzvvJonMToxMDDkuIcnLCAnMTo1MOS4hycsICcxOjI15LiHJywgJzE6MTDkuIcnLCAnMTo15LiHJywgJzE6Mi415LiHJywgJzE6MeS4hycsICcxOjUwMDAn77yJXHJcbiAgKi9cclxuICBmdW5jdGlvbiBjb3VudE1hcFNoZWV0KHNjYWxlKSB7XHJcbiAgICBsYWJlbENvbGxlY3Rpb24ucmVtb3ZlQWxsKCk7XHJcbiAgICBncmlkUHJpbWl0aXZlcy5yZW1vdmVBbGwoKTtcclxuICAgIGxhYmVsQ29sbGVjdGlvbiA9IG5ldyBDZXNpdW0uTGFiZWxDb2xsZWN0aW9uKCk7XHJcbiAgICBsYWJlbENvbGxlY3Rpb24ubmFtZSA9ICdTaGVldEluZGV4TGFiZWxDb2xsZWN0aW9uJztcclxuICAgIGdyaWRQcmltaXRpdmVzLmFkZChsYWJlbENvbGxlY3Rpb24pO1xyXG4gICAgbGV0IHJlY3RhbmdsZSA9IGdldFZpZXdFeHRlbmQoKTtcclxuXHJcbiAgICBsZXQgbG5nU3RlcCAvLyDnu4/luqbmraXplb9cclxuICAgIGxldCBsYXRTdGVwIC8vIOe6rOW6puatpemVv1xyXG4gICAgLy8gbGV0IGxpbWl0TG5nIC8vIOaYvuekuueVjOmZkO+8iOagueaNruWbvuW5hee6v+aVsOmHj+aYvumakO+8iVxyXG4gICAgLy8gbGV0IGxpbWl0TGF0XHJcbiAgICAvLyBNYXRoLmFicyhtYXhMbmctbWluTG5nKS9sbmdTdGVwLCBNYXRoLmFicyhtYXhMYXQtbWluTGF0KS9sYXRTdGVwXHJcbiAgICBsZXQgc2NhbGVCeURpc3RhbmNlXHJcbiAgICBzd2l0Y2ggKHNjYWxlKSB7XHJcbiAgICAgIGNhc2UgJzE6MTAw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gNjtcclxuICAgICAgICBsYXRTdGVwID0gNDtcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAyMDAwMDAwMCxcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICA4MDAwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTo1MOS4hyc6XHJcbiAgICAgICAgbG5nU3RlcCA9IDM7XHJcbiAgICAgICAgbGF0U3RlcCA9IDI7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgNTAwMDAwMCxcclxuICAgICAgICAgIDEsXHJcbiAgICAgICAgICAzMDAwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMToyNeS4hyc6XHJcbiAgICAgICAgbG5nU3RlcCA9IDEuNTtcclxuICAgICAgICBsYXRTdGVwID0gMTtcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAyMzAwMDAwLFxyXG4gICAgICAgICAgMSxcclxuICAgICAgICAgIDIwMDAwMDAwLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjEw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC41O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gMztcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICA2ODAwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgNTAwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTo15LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4yNTtcclxuICAgICAgICBsYXRTdGVwID0gMSAvIDY7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgMzg1MDAwLFxyXG4gICAgICAgICAgMSxcclxuICAgICAgICAgIDI0MDAwMDAsXHJcbiAgICAgICAgICAwXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4xMjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAxMjtcclxuICAgICAgICBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAxODAwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgMTIwMDAwMCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAnMTox5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4wNjI1O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gMjQ7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgOTAwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgNzAwMDAwLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjUwMDAnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjAzMTI1O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gNDg7XHJcbiAgICAgICAgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKFxyXG4gICAgICAgICAgNDYwMDAsXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgMzAwMDAwLFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgICBicmVha1xyXG4gICAgICAvLyBjYXNlICcxOjEwMDAnOlxyXG4gICAgICAvLyAgICAgbG5nU3RlcCA9IDAuMDEwNDE2Njc7XHJcbiAgICAgIC8vICAgICBsYXRTdGVwID0gMC4wMDY5NDQ0NDtcclxuICAgICAgLy8gICAgIGJyZWFrXHJcbiAgICAgIC8vIGNhc2UgJzE6MjAwMCc6XHJcbiAgICAgIC8vICAgICBsbmdTdGVwID0gMC4wMDUyMDgzMztcclxuICAgICAgLy8gICAgIGxhdFN0ZXAgPSAwLjAwMzQ3MjIyO1xyXG4gICAgICAvLyAgICAgYnJlYWtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbWluTG5nID0gTWF0aC5mbG9vcigoMTgwICsgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHJlY3RhbmdsZS53ZXN0KSkgLyBsbmdTdGVwKSAqIGxuZ1N0ZXAgLSAxODA7XHJcbiAgICBsZXQgbWluTGF0ID0gTWF0aC5mbG9vcigoODggKyBDZXNpdW0uTWF0aC50b0RlZ3JlZXMocmVjdGFuZ2xlLnNvdXRoKSkgLyBsYXRTdGVwKSAqIGxhdFN0ZXAgLSA4ODtcclxuICAgIGxldCBtYXhMbmcgPSBNYXRoLmNlaWwoKDE4MCArIENlc2l1bS5NYXRoLnRvRGVncmVlcyhyZWN0YW5nbGUuZWFzdCkpIC8gbG5nU3RlcCkgKiBsbmdTdGVwIC0gMTgwO1xyXG4gICAgbGV0IG1heExhdCA9IE1hdGguY2VpbCgoODggKyBDZXNpdW0uTWF0aC50b0RlZ3JlZXMocmVjdGFuZ2xlLm5vcnRoKSkgLyBsYXRTdGVwKSAqIGxhdFN0ZXAgLSA4ODtcclxuXHJcbiAgICBpZiAobWluTG5nID4gbWF4TG5nKSB7XHJcbiAgICAgIG1heExuZyArPSAzNjBcclxuICAgIH1cclxuXHJcbiAgICBtYXhSZWN0YW5nbGUgPSB7IG1pbkxuZywgbWluTGF0LCBtYXhMbmcsIG1heExhdCB9XHJcbiAgICBpZiAobWluTGF0IDwgLTg4KSB7XHJcbiAgICAgIG1pbkxhdCA9IC04OFxyXG4gICAgfVxyXG4gICAgaWYgKG1heExhdCA+IDg4KSB7XHJcbiAgICAgIG1heExhdCA9IDg4XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCgobWF4UmVjdGFuZ2xlLm1heExuZyAtIG1heFJlY3RhbmdsZS5taW5MbmcpIC8gbG5nU3RlcCkgKiAoKG1heFJlY3RhbmdsZS5tYXhMYXQgLSBtYXhSZWN0YW5nbGUubWluTGF0KSAvIGxhdFN0ZXApID4gNzAwMCkge1xyXG4gICAgICBtYXhSZWN0YW5nbGUgPSBudWxsXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyDnu5jliLbnu4/nur9cclxuICAgIGZvciAobGV0IGxuZyA9IG1pbkxuZzsgbG5nIDw9IG1heExuZzsgbG5nICs9IGxuZ1N0ZXApIHtcclxuICAgICAgY29uc3QgcG9zaXRpb25zID0gW107XHJcbiAgICAgIGxldCBhID0gW11cclxuICAgICAgZm9yIChsZXQgbGF0ID0gbWluTGF0OyBNYXRoLmZsb29yKGxhdCAqIDEwMDAwMDAwMDApIC8gMTAwMDAwMDAwMCA8PSBtYXhMYXQ7IGxhdCArPSAobGF0U3RlcCAvIDIpKSB7XHJcbiAgICAgICAgYS5wdXNoKFtsbmcsIGxhdF0pXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2goQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIDg4NDgpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobWF4TGF0ICE9IDg4ICYmIG1heExhdCArIChsYXRTdGVwIC8gMikgPj0gODgpIHtcclxuICAgICAgICBwb3NpdGlvbnMucHVzaChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsbmcsIDg4LCA4ODQ4KSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZ2VvbWV0cnlJbnN0YW5jZXMgPSBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgIGdlb21ldHJ5OiBuZXcgQ2VzaXVtLlBvbHlsaW5lR2VvbWV0cnkoe1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBwb3NpdGlvbnMsXHJcbiAgICAgICAgICB3aWR0aDogMSxcclxuICAgICAgICAgIHZlcnRleEZvcm1hdDogQ2VzaXVtLlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlLlZFUlRFWF9GT1JNQVQsXHJcbiAgICAgICAgICBhcmNUeXBlOiBDZXNpdW0uQXJjVHlwZS5SSFVNQixcclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGdyaWRQcmltaXRpdmVzLmFkZChuZXcgQ2VzaXVtLlByaW1pdGl2ZSh7XHJcbiAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IGdlb21ldHJ5SW5zdGFuY2VzLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uUG9seWxpbmVNYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5NYXRlcmlhbC5mcm9tVHlwZSgnQ29sb3InLCB7XHJcbiAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZmNmYzAwJylcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSkpO1xyXG5cclxuICAgICAgaWYgKGxuZyA8IG1heExuZykge1xyXG4gICAgICAgIC8vIOiuoeeul+WbvuW5heS4reW/g+WdkOagh1xyXG4gICAgICAgIGZvciAobGV0IGxhdCA9IG1pbkxhdDsgbGF0IDwgbWF4TGF0OyBsYXQgKz0gbGF0U3RlcCkge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uID0geyBsbmc6IGxuZyArIChsbmdTdGVwIC8gMiksIGxhdDogbGF0ICsgKGxhdFN0ZXAgLyAyKSB9O1xyXG4gICAgICAgICAgaWYgKHBvc2l0aW9uLmxhdCA+IG1heExhdCkge1xyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHNoZWV0TnVtYmVyID0gY2FsY3VsYXRlTWFwU2hlZXROdW1iZXIocG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIHNjYWxlKTtcclxuICAgICAgICAgIGxhYmVsQ29sbGVjdGlvbi5hZGQoe1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIDg4NDgpLFxyXG4gICAgICAgICAgICB0ZXh0OiBzaGVldE51bWJlcixcclxuICAgICAgICAgICAgZm9udDogJzE2cHggSW50ZXIsIHNhbnMtc2VyaWYnLFxyXG4gICAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmY2ZjMDAnKSxcclxuICAgICAgICAgICAgLy8gYmFja2dyb3VuZENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjRkZBMTQ1JyksXHJcbiAgICAgICAgICAgIC8vIGJhY2tncm91bmRQYWRkaW5nOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoOCwgNCksXHJcbiAgICAgICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgMCksXHJcbiAgICAgICAgICAgIHNob3dCYWNrZ3JvdW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkNFTlRFUixcclxuICAgICAgICAgICAgc2NhbGU6IDEuMCxcclxuICAgICAgICAgICAgZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiBuZXcgQ2VzaXVtLkRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbigwLCA4MDAwMDAwMCksXHJcbiAgICAgICAgICAgIHNjYWxlQnlEaXN0YW5jZTogc2NhbGVCeURpc3RhbmNlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLy8gbGFiZWxDb2xsZWN0aW9uLmFkZCh7XHJcbiAgICAgICAgICAvLyAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHBvc2l0aW9uLmxuZywgcG9zaXRpb24ubGF0LCAxMDAwMCksXHJcbiAgICAgICAgICAvLyAgICAgdGV4dDogcG9zaXRpb24ubG5nICsgJyAsICcgKyBwb3NpdGlvbi5sYXQsXHJcbiAgICAgICAgICAvLyAgICAgZm9udDogJzE2cHggSW50ZXIsIHNhbnMtc2VyaWYnLFxyXG4gICAgICAgICAgLy8gICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLFxyXG4gICAgICAgICAgLy8gICAgIGJhY2tncm91bmRDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzE2NURGRicpLndpdGhBbHBoYSgwLjgpLFxyXG4gICAgICAgICAgLy8gICAgIGJhY2tncm91bmRQYWRkaW5nOiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoOCwgNCksXHJcbiAgICAgICAgICAvLyAgICAgcGl4ZWxPZmZzZXQ6IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigwLCAzMCksXHJcbiAgICAgICAgICAvLyAgICAgc2hvd0JhY2tncm91bmQ6IHRydWUsXHJcbiAgICAgICAgICAvLyAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAvLyAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgLy8gICAgIHNjYWxlOiAxLjAsXHJcbiAgICAgICAgICAvLyAgICAgZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiBuZXcgQ2VzaXVtLkRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbigwLCAyMDAwMDAwMCksXHJcbiAgICAgICAgICAvLyAgICAgc2NhbGVCeURpc3RhbmNlOiBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgICAvLyAgICAgICAgIDUwMDAwMDAsXHJcbiAgICAgICAgICAvLyAgICAgICAgIDEsXHJcbiAgICAgICAgICAvLyAgICAgICAgIDIwMDAwMDAwLFxyXG4gICAgICAgICAgLy8gICAgICAgICAwXHJcbiAgICAgICAgICAvLyAgICAgKVxyXG4gICAgICAgICAgLy8gfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDnu5jliLbnuqznur9cclxuICAgIGZvciAobGV0IGxhdCA9IG1pbkxhdDsgTWF0aC5mbG9vcihsYXQgKiAxMDAwMDAwMDAwKSAvIDEwMDAwMDAwMDAgPD0gbWF4TGF0OyBsYXQgKz0gbGF0U3RlcCkge1xyXG4gICAgICBjb25zdCBwb3NpdGlvbnMgPSBbXTtcclxuICAgICAgbGV0IGEgPSBbXVxyXG4gICAgICBmb3IgKGxldCBsbmcgPSBtaW5Mbmc7IGxuZyA8PSBtYXhMbmc7IGxuZyArPSAobG5nU3RlcCAvIDIpKSB7XHJcbiAgICAgICAgYS5wdXNoKFtsbmcsIGxhdF0pXHJcbiAgICAgICAgcG9zaXRpb25zLnB1c2goQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIDg4NDgpKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBnZW9tZXRyeUluc3RhbmNlcyA9IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IG5ldyBDZXNpdW0uUG9seWxpbmVHZW9tZXRyeSh7XHJcbiAgICAgICAgICBwb3NpdGlvbnM6IHBvc2l0aW9ucyxcclxuICAgICAgICAgIHdpZHRoOiAxLFxyXG4gICAgICAgICAgdmVydGV4Rm9ybWF0OiBDZXNpdW0uUGVySW5zdGFuY2VDb2xvckFwcGVhcmFuY2UuVkVSVEVYX0ZPUk1BVCxcclxuICAgICAgICAgIGFyY1R5cGU6IENlc2l1bS5BcmNUeXBlLlJIVU1CLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZ3JpZFByaW1pdGl2ZXMuYWRkKG5ldyBDZXNpdW0uUHJpbWl0aXZlKHtcclxuICAgICAgICBnZW9tZXRyeUluc3RhbmNlczogZ2VvbWV0cnlJbnN0YW5jZXMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5Qb2x5bGluZU1hdGVyaWFsQXBwZWFyYW5jZSh7XHJcbiAgICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKCdDb2xvcicsIHtcclxuICAgICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmY2ZjMDAnKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiDmoLnmja7nu4/nuqzluqblkozmr5TkvovlsLrorqHnrpflnLDlm77lm77luYXnvJblj7dcclxuICAqIEBwYXJhbSB7bnVtYmVyfSBsb25naXR1ZGUgLSDnu4/luqbvvIjljYHov5vliLbmoLzlvI/vvIlcclxuICAqIEBwYXJhbSB7bnVtYmVyfSBsYXRpdHVkZSAtIOe6rOW6pu+8iOWNgei/m+WItuagvOW8j++8iVxyXG4gICogQHBhcmFtIHtzdHJpbmd9IHNjYWxlIC0g5q+U5L6L5bC677yI5Y+v6YCJ5YC877yaJzE6MTAw5LiHJywgJzE6NTDkuIcnLCAnMToyNeS4hycsICcxOjEw5LiHJywgJzE6NeS4hycsICcxOjIuNeS4hycsICcxOjHkuIcnLCAnMTo1MDAwJ++8iVxyXG4gICogQHJldHVybnMge3N0cmluZ30g5a+55bqU55qE5Zu+5bmF57yW5Y+3XHJcbiAgKi9cclxuICBmdW5jdGlvbiBjYWxjdWxhdGVNYXBTaGVldE51bWJlcihsbmcsIGxhdCwgc2NhbGUpIHtcclxuICAgIGxldCBsbmdTdGVwIC8vIOe7j+W6puatpemVv1xyXG4gICAgbGV0IGxhdFN0ZXAgLy8g57qs5bqm5q2l6ZW/XHJcbiAgICBzd2l0Y2ggKHNjYWxlKSB7XHJcbiAgICAgIGNhc2UgJzE6MTAw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gNjtcclxuICAgICAgICBsYXRTdGVwID0gNDtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjUw5LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMztcclxuICAgICAgICBsYXRTdGVwID0gMjtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjI15LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMS41O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6MTDkuIcnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAzO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6NeS4hyc6XHJcbiAgICAgICAgbG5nU3RlcCA9IDAuMjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyA2O1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBsbmdTdGVwID0gMC4xMjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAxMjtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjHkuIcnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjA2MjU7XHJcbiAgICAgICAgbGF0U3RlcCA9IDEgLyAyNDtcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICcxOjUwMDAnOlxyXG4gICAgICAgIGxuZ1N0ZXAgPSAwLjAzMTI1O1xyXG4gICAgICAgIGxhdFN0ZXAgPSAxIC8gNDg7XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgLy8gY2FzZSAnMToxMDAwJzpcclxuICAgICAgLy8gICAgIGxuZ1N0ZXAgPSAwLjAxMDQxNjY3O1xyXG4gICAgICAvLyAgICAgbGF0U3RlcCA9IDAuMDA2OTQ0NDQ7XHJcbiAgICAgIC8vICAgICBicmVha1xyXG4gICAgICAvLyBjYXNlICcxOjIwMDAnOlxyXG4gICAgICAvLyAgICAgbG5nU3RlcCA9IDAuMDA1MjA4MzM7XHJcbiAgICAgIC8vICAgICBsYXRTdGVwID0gMC4wMDM0NzIyMjtcclxuICAgICAgLy8gICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgICAvLyDnoa7kv53nuqzluqblnKggLTg4IOWIsCA4OCDluqbkuYvpl7TvvIjlm6DkuLogODjCsCDku6XkuIrph4fnlKjnibnmrorliIbluYXvvIlcclxuICAgIGxhdCA9IE1hdGgubWF4KC04OCwgTWF0aC5taW4oODgsIGxhdCkpO1xyXG4gICAgbGF0ID0gTWF0aC5hYnMobGF0KTsgLy8g5Y+W57ud5a+55YC8XHJcblxyXG4gICAgbGV0IEI2ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVYnXHJcbiAgICBsZXQgQjIgPSBsbmdcclxuICAgIGxldCBCMyA9IGxhdFxyXG5cclxuICAgIC8vIOiuoeeulyAxOjEwMCDkuIflnLDlvaLlm77nmoTliJflj7dcclxuICAgIGNvbnN0IGNvbDEwMFcgPSBNYXRoLmZsb29yKEIyIC8gNiArIDMxKTtcclxuICAgIC8vIDE6MTAwIOS4h+WcsOW9ouWbvueahOihjOWPt+WvueW6lOeahOWtl+avje+8iEEtVu+8iVxyXG4gICAgY29uc3Qgcm93Q2hhciA9IEI2LmNoYXJBdChNYXRoLmZsb29yKEIzIC8gNCArIDEpIC0gMSk7XHJcblxyXG4gICAgLy8g5q+U5L6L5bC65Luj56CB5pig5bCEXHJcbiAgICBjb25zdCBzY2FsZUNvZGVNYXAgPSB7XHJcbiAgICAgICcxOjEwMOS4hyc6ICcnLCAgICAgLy8gMToxMDDkuIfkuI3pnIDopoHpop3lpJbku6PnoIFcclxuICAgICAgJzE6NTDkuIcnOiAnQicsXHJcbiAgICAgICcxOjI15LiHJzogJ0MnLFxyXG4gICAgICAnMToxMOS4hyc6ICdEJyxcclxuICAgICAgJzE6NeS4hyc6ICdFJyxcclxuICAgICAgJzE6Mi415LiHJzogJ0YnLFxyXG4gICAgICAnMTox5LiHJzogJ0cnLFxyXG4gICAgICAnMTo1MDAwJzogJ0gnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvLyDojrflj5bmr5TkvovlsLrku6PnoIFcclxuICAgIGNvbnN0IHNjYWxlQ29kZSA9IHNjYWxlQ29kZU1hcFtzY2FsZV07XHJcbiAgICBpZiAoIXNjYWxlQ29kZSAmJiBzY2FsZSAhPT0gJzE6MTAw5LiHJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ+S4jeaUr+aMgeeahOavlOS+i+Wwuu+8jOivt+S9v+eUqDogMToxMDDkuIcsIDE6NTDkuIcsIDE6MjXkuIcsIDE6MTDkuIcsIDE6NeS4hywgMToyLjXkuIcsIDE6MeS4hywgMTo1MDAwJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g6K6h566X5ZyoIDE6MTAwIOS4h+WbvuW5heWGheeahOihjOWIl+WPt++8iOagueaNruS4jeWQjOavlOS+i+Wwuu+8iVxyXG4gICAgbGV0IHJvd0luMTAwVywgY29sSW4xMDBXO1xyXG4gICAgcm93SW4xMDBXID0gcm93Q2hhciArIGNvbDEwMFc7XHJcblxyXG4gICAgY29uc3QgbnVtMSA9IE1hdGguZmxvb3IoKE1hdGguY2VpbChCMyAvIDQpICogNCAtIEIzKSAvIGxhdFN0ZXApICsgMTtcclxuICAgIGNvbnN0IHJvd051bSA9IChcIjAwMFwiICsgbnVtMSkuc2xpY2UoLTMpO1xyXG4gICAgY29uc3QgcmVtYWluZGVyID0gQjIgLSBNYXRoLmZsb29yKEIyIC8gNikgKiA2O1xyXG4gICAgY29uc3QgbnVtMiA9IE1hdGguZmxvb3IocmVtYWluZGVyIC8gbG5nU3RlcCkgKyAxO1xyXG4gICAgY29uc3QgY29sTnVtID0gKFwiMDAwXCIgKyBudW0yKS5zbGljZSgtMyk7XHJcblxyXG4gICAgc3dpdGNoIChzY2FsZSkge1xyXG4gICAgICBjYXNlICcxOjEwMOS4hyc6XHJcbiAgICAgICAgLy8gMToxMDDkuIfnm7TmjqXkvb/nlKjooYzlj7flkozliJflj7dcclxuICAgICAgICByZXR1cm4gcm93SW4xMDBXO1xyXG4gICAgICBjYXNlICcxOjUw5LiHJzpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnMToyNeS4hyc6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJzE6MTDkuIcnOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnMTo15LiHJzpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJzE6Mi415LiHJzpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJzE6MeS4hyc6XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICcxOjUwMDAnOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ+S4jeaUr+aMgeeahOavlOS+i+WwuicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOeUn+aIkOacgOe7iOe8luWPt1xyXG4gICAgcmV0dXJuIHJvd0luMTAwVyArIHNjYWxlQ29kZSArIHJvd051bSArIGNvbE51bTtcclxuICB9XHJcblxyXG4gIC8vIOiOt+WPluW9k+WJjeinhuinkuefqeW9ouiMg+WbtO+8iOS6jOe7tOaooeW8j++8iVxyXG4gIGZ1bmN0aW9uIGdldFZpZXdFeHRlbmQoKSB7XHJcbiAgICBsZXQgcGFyYW1zID0ge307XHJcbiAgICBsZXQgZXh0ZW5kID0gdmlld2VyLmNhbWVyYS5jb21wdXRlVmlld1JlY3RhbmdsZSgpO1xyXG4gICAgaWYgKHZpZXdlci5zY2VuZS5tb2RlID09IDIpIHtcclxuICAgICAgLy8yROS4i+S8muWPr+iDveaLvuWPluS4jeWIsOWdkOagh++8jGV4dGVuZOi/lOWbnnVuZGVmaW5lZCzmiYDku6XlgZrku6XkuIvovazmjaJcclxuICAgICAgbGV0IGNhbnZhcyA9IHZpZXdlci5zY2VuZS5jYW52YXM7XHJcbiAgICAgIGxldCB1cHBlckxlZnQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgMCk7Ly9jYW52YXPlt6bkuIrop5LlnZDmoIfovawyZOWdkOagh1xyXG4gICAgICBsZXQgbG93ZXJSaWdodCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMihcclxuICAgICAgICBjYW52YXMuY2xpZW50V2lkdGgsXHJcbiAgICAgICAgY2FudmFzLmNsaWVudEhlaWdodFxyXG4gICAgICApOy8vY2FudmFz5Y+z5LiL6KeS5Z2Q5qCH6L2sMmTlnZDmoIdcclxuXHJcbiAgICAgIGxldCBlbGxpcHNvaWQgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkO1xyXG4gICAgICBsZXQgdXBwZXJMZWZ0MyA9IHZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgICB1cHBlckxlZnQsXHJcbiAgICAgICAgZWxsaXBzb2lkXHJcbiAgICAgICk7Ly8yROi9rDNE5LiW55WM5Z2Q5qCHXHJcblxyXG4gICAgICBsZXQgbG93ZXJSaWdodDMgPSB2aWV3ZXIuY2FtZXJhLnBpY2tFbGxpcHNvaWQoXHJcbiAgICAgICAgbG93ZXJSaWdodCxcclxuICAgICAgICBlbGxpcHNvaWRcclxuICAgICAgKTsvLzJE6L2sM0TkuJbnlYzlnZDmoIdcclxuXHJcbiAgICAgIGlmICghdXBwZXJMZWZ0Mykge1xyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4yID0gQ2VzaXVtLlNjZW5lVHJhbnNmb3Jtcy53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXModmlld2VyLnNjZW5lLCB7IHg6IDAsIHk6IDAsIHo6IDYzNTY3NTUgfSk7XHJcbiAgICAgICAgdXBwZXJMZWZ0LnkgPSBjYXJ0ZXNpYW4yLnkgKyA1XHJcbiAgICAgICAgdXBwZXJMZWZ0MyA9IHZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgICAgIHVwcGVyTGVmdCxcclxuICAgICAgICAgIGVsbGlwc29pZFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFsb3dlclJpZ2h0Mykge1xyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4yID0gQ2VzaXVtLlNjZW5lVHJhbnNmb3Jtcy53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXModmlld2VyLnNjZW5lLCB7IHg6IDAsIHk6IDAsIHo6IC02MzU2NzU1IH0pO1xyXG4gICAgICAgIGxvd2VyUmlnaHQueSA9IGNhcnRlc2lhbjIueSAtIDVcclxuICAgICAgICBsb3dlclJpZ2h0MyA9IHZpZXdlci5jYW1lcmEucGlja0VsbGlwc29pZChcclxuICAgICAgICAgIGxvd2VyUmlnaHQsXHJcbiAgICAgICAgICBlbGxpcHNvaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdsb3dlclJpZ2h0MycsIGxvd2VyUmlnaHQsIGxvd2VyUmlnaHQzKVxyXG4gICAgICB9XHJcbiAgICAgIGxldCB1cHBlckxlZnRDYXJ0b2dyYXBoaWMgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKFxyXG4gICAgICAgIHVwcGVyTGVmdDNcclxuICAgICAgKTsvLzNE5LiW55WM5Z2Q5qCH6L2s5byn5bqmXHJcbiAgICAgIGxldCBsb3dlclJpZ2h0Q2FydG9ncmFwaGljID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhcclxuICAgICAgICBsb3dlclJpZ2h0M1xyXG4gICAgICApOy8vM0TkuJbnlYzlnZDmoIfovazlvKfluqZcclxuXHJcbiAgICAgIGlmICgobG93ZXJSaWdodC55IC0gdXBwZXJMZWZ0LnkpIC8gKGxvd2VyUmlnaHQueCAtIHVwcGVyTGVmdC54KSA8PSAwLjQ5OTk4NzUyMzM5MzYzNjk1KSB7XHJcbiAgICAgICAgZXh0ZW5kID0gbmV3IENlc2l1bS5SZWN0YW5nbGUoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC0xODApLCBDZXNpdW0uTWF0aC50b1JhZGlhbnMoLTkwKSwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDE4MCksIENlc2l1bS5NYXRoLnRvUmFkaWFucyg5MCkpXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZXh0ZW5kID0gbmV3IENlc2l1bS5SZWN0YW5nbGUodXBwZXJMZWZ0Q2FydG9ncmFwaGljLmxvbmdpdHVkZSwgbG93ZXJSaWdodENhcnRvZ3JhcGhpYy5sYXRpdHVkZSwgbG93ZXJSaWdodENhcnRvZ3JhcGhpYy5sb25naXR1ZGUsIHVwcGVyTGVmdENhcnRvZ3JhcGhpYy5sYXRpdHVkZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwi57uP5bqm77yaXCIgKyBtaW54ICsgXCItLS0tXCIgKyBtYXh4KTtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCLnuqzluqbvvJpcIiArIG1pbnkgKyBcIi0tLS1cIiArIG1heHkpO1xyXG5cclxuICAgICAgcmV0dXJuIGV4dGVuZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vM0Tojrflj5bmlrnlvI9cclxuICAgICAgcmV0dXJuIGV4dGVuZDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5mdW5jdGlvbiBjbG9zZShzZGspIHtcclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlcjtcclxuICBsZXQgZ3JpZFByaW1pdGl2ZXNcclxuICBsZXQgbGFiZWxDb2xsZWN0aW9uXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5zY2VuZS5wcmltaXRpdmVzLl9wcmltaXRpdmVzW2ldLm5hbWUgPT09ICdTaGVldEluZGV4R3JpZFByaW1pdGl2ZXMnKSB7XHJcbiAgICAgIGdyaWRQcmltaXRpdmVzID0gdmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbaV07XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZ3JpZFByaW1pdGl2ZXMuX3ByaW1pdGl2ZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAoZ3JpZFByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbal0ubmFtZSA9PT0gJ1NoZWV0SW5kZXhMYWJlbENvbGxlY3Rpb24nKSB7XHJcbiAgICAgICAgICBsYWJlbENvbGxlY3Rpb24gPSBncmlkUHJpbWl0aXZlcy5fcHJpbWl0aXZlc1tqXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxhYmVsQ29sbGVjdGlvbiAmJiAobGFiZWxDb2xsZWN0aW9uLnJlbW92ZUFsbCgpKTtcclxuICBncmlkUHJpbWl0aXZlcyAmJiAoZ3JpZFByaW1pdGl2ZXMucmVtb3ZlQWxsKCkpO1xyXG4gIGdyaWRQcmltaXRpdmVzICYmICh2aWV3ZXIuc2NlbmUucG9zdFJlbmRlci5yZW1vdmVFdmVudExpc3RlbmVyKGdyaWRQcmltaXRpdmVzLnBvc3RSZW5kZXJFdmVudCkpO1xyXG59XHJcblxyXG5leHBvcnQgeyBTaGVldEluZGV4U3RhdHVzU3dpdGNoLCBjaGFuZ2VTY2FsZSwgZ2V0U3RhdHVzIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/SheetIndex/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/Skin/index.js":
-/*!**********************************!*\
- !*** ./src/Global/Skin/index.js ***!
- \**********************************/
-/*! exports provided: default, setSkin */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSkin\", function() { return setSkin; });\nvar theme = {\n \"yingguangse\": new Map(),\n \"gonganlan\": new Map(),\n \"hong\": new Map()\n};\n// 主色\ntheme.yingguangse.set(\"--color-sdk-base\", \"#00ffff\");\n// 辅色\ntheme.yingguangse.set(\"--color-sdk-auxiliary\", \"#004242\");\ntheme.yingguangse.set(\"--color-sdk-auxiliary-public\", \"#ffffff\");\n// 预警色\ntheme.yingguangse.set(\"--color-sdk-warning-0\", \"#1BF8C3\");\ntheme.yingguangse.set(\"--color-sdk-warning-1\", \"#F16C55\");\ntheme.yingguangse.set(\"--color-sdk-warning-2\", \"#FFA145\");\ntheme.yingguangse.set(\"--color-sdk-warning-3\", \"#FFDF53\");\n// 文本色\ntheme.yingguangse.set(\"--color-sdk-text-head\", \"#FFFFFF\");\ntheme.yingguangse.set(\"--color-sdk-text-head-1\", \"#E6F7FF\");\ntheme.yingguangse.set(\"--color-sdk-text-head-2\", \"#ADF1FF\");\n// 渐变色\ntheme.yingguangse.set(\"--color-sdk-gradual\", \"#00ffff 6.25%, #00ffff 100%\");\ntheme.yingguangse.set(\"--color-sdk-bg-gradual\", \"#00ffff33 0%, #00ffff00 100%\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (theme);\nfunction setSkin(name) {\n document.documentElement.style.setProperty('--color-sdk-base', 'rgba(0, 55, 55, 1)');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NraW4vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NraW4vaW5kZXguanM/NTg2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgdGhlbWUgPSB7XHJcbiAgXCJ5aW5nZ3VhbmdzZVwiOiBuZXcgTWFwKCksXHJcbiAgXCJnb25nYW5sYW5cIjogbmV3IE1hcCgpLFxyXG4gIFwiaG9uZ1wiOiBuZXcgTWFwKCksXHJcbn1cclxuLy8g5Li76ImyXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLWJhc2VcIiwgXCIjMDBmZmZmXCIpXHJcbi8vIOi+heiJslxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay1hdXhpbGlhcnlcIiwgXCIjMDA0MjQyXCIpXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLWF1eGlsaWFyeS1wdWJsaWNcIiwgXCIjZmZmZmZmXCIpXHJcbi8vIOmihOitpuiJslxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay13YXJuaW5nLTBcIiwgXCIjMUJGOEMzXCIpXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLXdhcm5pbmctMVwiLCBcIiNGMTZDNTVcIilcclxudGhlbWUueWluZ2d1YW5nc2Uuc2V0KFwiLS1jb2xvci1zZGstd2FybmluZy0yXCIsIFwiI0ZGQTE0NVwiKVxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay13YXJuaW5nLTNcIiwgXCIjRkZERjUzXCIpXHJcbi8vIOaWh+acrOiJslxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay10ZXh0LWhlYWRcIiwgXCIjRkZGRkZGXCIpXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLXRleHQtaGVhZC0xXCIsIFwiI0U2RjdGRlwiKVxyXG50aGVtZS55aW5nZ3VhbmdzZS5zZXQoXCItLWNvbG9yLXNkay10ZXh0LWhlYWQtMlwiLCBcIiNBREYxRkZcIilcclxuLy8g5riQ5Y+Y6ImyXHJcbnRoZW1lLnlpbmdndWFuZ3NlLnNldChcIi0tY29sb3Itc2RrLWdyYWR1YWxcIiwgXCIjMDBmZmZmIDYuMjUlLCAjMDBmZmZmIDEwMCVcIilcclxudGhlbWUueWluZ2d1YW5nc2Uuc2V0KFwiLS1jb2xvci1zZGstYmctZ3JhZHVhbFwiLCBcIiMwMGZmZmYzMyAwJSwgIzAwZmZmZjAwIDEwMCVcIilcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHRoZW1lO1xyXG5cclxuZnVuY3Rpb24gc2V0U2tpbihuYW1lKSB7XHJcbiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbG9yLXNkay1iYXNlJywgJ3JnYmEoMCwgNTUsIDU1LCAxKScpO1xyXG59XHJcblxyXG5leHBvcnQgeyBzZXRTa2luIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/Skin/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/SplitScreen/ClickCallback/index.js":
-/*!*******************************************************!*\
- !*** ./src/Global/SplitScreen/ClickCallback/index.js ***!
- \*******************************************************/
-/*! exports provided: openLeftClick, closeLeftClick, regLeftClickCallback, unRegLeftClickCallback, openRightClick, closeRightClick, regRightClickCallback, unRegRightClickCallback, openMove, closeMove, regMoveCallback, unregMoveCallback, getLeftClickState, getRightClickState, getMoveState */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openLeftClick\", function() { return openLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeLeftClick\", function() { return closeLeftClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regLeftClickCallback\", function() { return regLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegLeftClickCallback\", function() { return unRegLeftClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openRightClick\", function() { return openRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRightClick\", function() { return closeRightClick; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regRightClickCallback\", function() { return regRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unRegRightClickCallback\", function() { return unRegRightClickCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openMove\", function() { return openMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeMove\", function() { return closeMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regMoveCallback\", function() { return regMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregMoveCallback\", function() { return unregMoveCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLeftClickState\", function() { return getLeftClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRightClickState\", function() { return getRightClickState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMoveState\", function() { return getMoveState; });\n/**\r\n * @name: click\r\n * @author: Administrator\r\n * @date: 2023-05-28 11:05\r\n * @description:click\r\n * @update: 2023-05-28 11:05\r\n */\nvar leftClickHandler = null;\nvar rightClickHandler = null;\nvar MoveHandler = null;\nvar leftClickCallbackMap = new Map();\nvar rightClickCallbackMap = new Map();\nvar MoveCallbackMap = new Map();\nvar selectedFeature;\nfunction cartesian3Towgs84(cartesian, viewer) {\n var ellipsoid = viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n}\nfunction getcartesian(sdk, movement) {\n if (movement.endPosition) {\n movement.endPosition.y -= 2;\n }\n var position = movement.position || movement.endPosition;\n // 获取世界坐标系地表坐标,考虑地形,不包括模型,倾斜摄影模型表面;\n var cartesian = sdk.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n return cartesian;\n}\nfunction openLeftClick(sdk, cb) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n var click = true;\n leftClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n leftClickHandler.setInputAction(function (movement) {\n var cartesian = sdk.viewer.scene.pickPosition(movement.position);\n if (!cartesian) {\n var ray = sdk.viewer.camera.getPickRay(movement.position); //相交的射线\n cartesian = sdk.viewer.scene.globe.pick(ray, sdk.viewer.scene);\n }\n if (!cartesian) {\n return;\n }\n var pos84 = cartesian3Towgs84(cartesian, sdk.viewer);\n cb && cb(pos84);\n if (click) {\n click = false;\n setTimeout(function () {\n click = true;\n }, 600);\n if (!YJ.Measure.GetMeasureStatus() && cartesian) {\n var flag = false;\n for (var i = leftClickCallbackMap.size - 1; i >= 0; i--) {\n var key = Array.from(leftClickCallbackMap.keys())[i];\n var obj = leftClickCallbackMap.get(key);\n if (obj) {\n if (obj.that) {\n // 是否为多边形\n if (obj.that.type === 'PolygonObject') {\n // 是否可点击y\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var pt = turf.point([pos84.lng, pos84.lat]);\n var polyPos = [];\n for (var _i = 0; _i < obj.that.options.positions.length; _i++) {\n polyPos.push([obj.that.options.positions[_i].lng, obj.that.options.positions[_i].lat]);\n }\n polyPos.push([obj.that.options.positions[0].lng, obj.that.options.positions[0].lat]);\n var poly = turf.polygon([polyPos]);\n var contain = turf.booleanPointInPolygon(pt, poly);\n if (contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 聚集地\n else if (obj.that.type === 'AssembleObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var positions = obj.that.computeAssemble(obj.that.options.positions, true);\n var _pt = turf.point([pos84.lng, pos84.lat]);\n var _polyPos = [];\n for (var _i2 = 0; _i2 < positions.length; _i2 += 2) {\n _polyPos.push([positions[_i2], positions[_i2 + 1]]);\n }\n var _poly = turf.polygon([_polyPos]);\n var _contain = turf.booleanPointInPolygon(_pt, _poly);\n if (_contain) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 单箭头\n else if (obj.that.type === 'AttackArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 3) {\n var _pt2 = turf.point([pos84.lng, pos84.lat]);\n var _positions = obj.that.computeAttackArrow(obj.that.options.positions);\n var _polyPos2 = [];\n for (var m = 0; m < _positions.length; m++) {\n var _pos = cartesian3Towgs84(_positions[m], sdk.viewer);\n _polyPos2.push([_pos.lng, _pos.lat]);\n }\n var _poly2 = turf.polygon([_polyPos2]);\n var _contain2 = turf.booleanPointInPolygon(_pt2, _poly2);\n if (_contain2) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 双箭头\n else if (obj.that.type === 'PincerArrowObject') {\n if (obj.that.picking) {\n if (obj.that.options.positions && obj.that.options.positions.length >= 5) {\n var _pt3 = turf.point([pos84.lng, pos84.lat]);\n var _positions2 = obj.that.computePincerArrow(obj.that.options.positions);\n var _polyPos3 = [];\n for (var _m = 0; _m < _positions2.length; _m++) {\n var _pos2 = cartesian3Towgs84(_positions2[_m], sdk.viewer);\n _polyPos3.push([_pos2.lng, _pos2.lat]);\n }\n var pos84_0 = cartesian3Towgs84(_positions2[0], sdk.viewer);\n _polyPos3.push([pos84_0.lng, pos84_0.lat]);\n var _poly3 = turf.polygon([_polyPos3]);\n var _contain3 = turf.booleanPointInPolygon(_pt3, _poly3);\n if (_contain3) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 圆\n else if (obj.that.type === 'CircleObject') {\n if (obj.that.picking) {\n var _pt4 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius) {\n var center = [obj.that.options.center.lng, obj.that.options.center.lat];\n var radius = obj.that.options.radius / 1000;\n var options = {\n steps: 360,\n units: 'kilometers'\n };\n var circle = turf.circle(center, radius, options);\n var _contain4 = turf.booleanPointInPolygon(_pt4, circle);\n if (_contain4) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n // 扇形\n else if (obj.that.type === 'SectorObject') {\n if (obj.that.picking) {\n var _pt5 = turf.point([pos84.lng, pos84.lat]);\n if (obj.that.options.center && obj.that.options.radius && obj.that.options.startAngle && obj.that.options.endAngle) {\n var _positions3 = obj.that.calSector(obj.that.options.center, obj.that.options.radius, obj.that.options.startAngle, obj.that.options.endAngle, undefined, true);\n var _polyPos4 = [];\n for (var _m2 = 0; _m2 < _positions3.length; _m2++) {\n _polyPos4.push([_positions3[_m2].lng, _positions3[_m2].lat]);\n }\n var _poly4 = turf.polygon([_polyPos4]);\n var _contain5 = turf.booleanPointInPolygon(_pt5, _poly4);\n if (_contain5) {\n obj.callback(movement, obj.that.options.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n flag = true;\n break;\n }\n }\n }\n }\n }\n }\n }\n if (!flag) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n var entityId;\n // 矢量\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var _obj = leftClickCallbackMap.get(pick.id.parentId);\n if (_obj.that.picking && _obj.that.geojson) {\n for (var _i3 = 0; _i3 < _obj.that.geojson.features.length; _i3++) {\n if (_obj.that.geojson.features[_i3].id === pick.id._id) {\n _obj.callback(movement, _obj.that.geojson.features[_i3].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj.that);\n }\n }\n }\n } else if (typeof pick.id.id == 'string') {\n var array = pick.id.id.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n }\n if (pick.id.properties && pick.id.properties.id && leftClickCallbackMap.has(pick.id.properties.id._value)) {\n var _obj2 = leftClickCallbackMap.get(pick.id.properties.id._value);\n if (_obj2.that.picking) {\n _obj2.callback(movement, pick.id.properties.id._value, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj2.that);\n }\n } else if (leftClickCallbackMap.has(pick.id.id)) {\n var _obj3 = leftClickCallbackMap.get(pick.id.id);\n if (_obj3.that.picking) {\n _obj3.callback(movement, pick.id.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj3.that);\n }\n } else if (entityId && leftClickCallbackMap.has(entityId)) {\n var _obj4 = leftClickCallbackMap.get(entityId);\n if (_obj4.that.picking) {\n _obj4.callback(movement, entityId, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj4.that);\n }\n } else if (pick.primitive) {\n if (typeof pick.id == 'string' && leftClickCallbackMap.has(pick.id)) {\n var _obj5 = leftClickCallbackMap.get(pick.id);\n _obj5.callback(movement, pick.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj5.that);\n }\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n if (leftClickCallbackMap.has(pick.primitive.id)) {\n var _obj6 = leftClickCallbackMap.get(pick.primitive.id);\n if (_obj6.that.picking) {\n if (_obj6.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj6.callback(movement, pick.primitive, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n } else {\n _obj6.callback(movement, pick.primitive.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj6.that);\n }\n }\n }\n }\n }\n if (pick.content && (!pick.primitive || !pick.primitive.id)) {\n if (leftClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj7 = leftClickCallbackMap.get(pick.content.tileset.id);\n if (_obj7.that.picking) {\n if (_obj7.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n _obj7.callback(movement, pick.content.tileset, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n } else {\n _obj7.callback(movement, pick.content.tileset.id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), _obj7.that);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // if (click) {\n // click = false\n // setTimeout(() => {\n // click = true\n // }, 300);\n // if (!YJ.Measure.GetMeasureStatus()) {\n\n // }\n // }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n\n // leftClickHandler.setInputAction(function (movement) {\n // const feature = sdk.viewer.scene.pick(movement.endPosition);\n // // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // selectedFeature.color = Cesium.Color.WHITE;\n // }\n // selectedFeature = feature\n // if (feature) {\n // feature.color = Cesium.Color.YELLOW;\n // }\n // }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // }\n}\nfunction closeLeftClick(sdk) {\n leftClickHandler.destroy(); //关闭事件句柄\n leftClickHandler = null;\n // }\n}\nfunction openRightClick(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n rightClickHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n rightClickHandler.setInputAction(function (movement) {\n if (!YJ.Measure.GetMeasureStatus()) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick && pick.id) {\n var id;\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n var obj = rightClickCallbackMap.get(pick.id.parentId);\n if (obj.that.picking && obj.that.geojson) {\n for (var i = 0; i < obj.that.geojson.features.length; i++) {\n if (obj.that.geojson.features[i].id === pick.id._id) {\n obj.callback(movement, obj.that.geojson.features[i].id, cartesian3Towgs84(getcartesian(sdk, movement), sdk.viewer), obj.that);\n }\n }\n }\n } else {\n if (typeof pick.id === 'string') {\n id = pick.id;\n } else {\n id = pick.id.id;\n }\n if (rightClickCallbackMap.has(id)) {\n var _obj8 = rightClickCallbackMap.get(id);\n if (_obj8.that.picking) {\n var cartesian = getcartesian(sdk, movement);\n if (!cartesian) {\n return;\n }\n _obj8.callback(movement, id, cartesian3Towgs84(cartesian, sdk.viewer), _obj8.that);\n }\n }\n }\n }\n if (pick && pick.content) {\n if (rightClickCallbackMap.has(pick.content.tileset.id)) {\n var _obj9 = rightClickCallbackMap.get(pick.content.tileset.id);\n if (_obj9.that.picking) {\n if (_obj9.that.type === 'bim') {\n if (YJ.Global.getBimPickStatus(sdk)) {\n var _cartesian = getcartesian(sdk, movement);\n if (!_cartesian) {\n return;\n }\n _obj9.callback(movement, pick.getProperty('id'), cartesian3Towgs84(_cartesian, sdk.viewer), _obj9.that);\n }\n } else {\n var _cartesian2 = getcartesian(sdk, movement);\n if (!_cartesian2) {\n return;\n }\n _obj9.callback(movement, pick.content.tileset.id, cartesian3Towgs84(_cartesian2, sdk.viewer), _obj9.that);\n }\n }\n }\n }\n }\n }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);\n}\nfunction closeRightClick() {\n if (rightClickHandler) {\n rightClickHandler.destroy(); //关闭事件句柄\n rightClickHandler = null;\n }\n}\nfunction openMove(sdk) {\n MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n // unselectFeature(selectedFeature);\n // if (selectedFeature) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n // if (pick && pick.id) { }\n // if (pick && pick.content) {\n // if (MoveCallbackMap.has(pick.content.tileset.id)) {\n // let obj = MoveCallbackMap.get(pick.content.tileset.id)\n // if (obj.that.picking) {\n // if (obj.that.type === 'bim') {\n // if (YJ.Global.getBimPickStatus(sdk)) {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // else {\n // selectedFeature = pick\n // pick.color = Cesium.Color.YELLOW;\n // }\n // }\n // else {\n // selectedFeature = null\n // }\n // }\n // }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction closeMove() {\n if (MoveHandler) {\n MoveHandler.destroy(); //关闭事件句柄\n MoveHandler = null;\n }\n}\n\n/*注册左键回调*/\nfunction regLeftClickCallback(id, callback, that) {\n leftClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unRegLeftClickCallback(id) {\n leftClickCallbackMap.delete(id);\n}\n\n/*注册右键回调*/\nfunction regRightClickCallback(id, callback, that) {\n rightClickCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消右键回调*/\nfunction unRegRightClickCallback(id) {\n rightClickCallbackMap.delete(id);\n}\n\n/*注册左键回调*/\nfunction regMoveCallback(id, callback, that) {\n MoveCallbackMap.set(id, {\n callback: callback,\n that: that\n });\n} /*取消左键回调*/\nfunction unregMoveCallback(id) {\n MoveCallbackMap.delete(id);\n}\nfunction getLeftClickState() {\n if (leftClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getRightClickState() {\n if (rightClickHandler) {\n return true;\n } else {\n false;\n }\n}\nfunction getMoveState() {\n if (MoveHandler) {\n return true;\n } else {\n false;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NwbGl0U2NyZWVuL0NsaWNrQ2FsbGJhY2svaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL1NwbGl0U2NyZWVuL0NsaWNrQ2FsbGJhY2svaW5kZXguanM/M2EzOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGNsaWNrXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMDUtMjggMTE6MDVcclxuICogQGRlc2NyaXB0aW9u77yaY2xpY2tcclxuICogQHVwZGF0ZTogMjAyMy0wNS0yOCAxMTowNVxyXG4gKi9cclxubGV0IGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbmxldCByaWdodENsaWNrSGFuZGxlciA9IG51bGxcclxubGV0IE1vdmVIYW5kbGVyID0gbnVsbFxyXG5sZXQgbGVmdENsaWNrQ2FsbGJhY2tNYXAgPSBuZXcgTWFwKClcclxubGV0IHJpZ2h0Q2xpY2tDYWxsYmFja01hcCA9IG5ldyBNYXAoKVxyXG5sZXQgTW92ZUNhbGxiYWNrTWFwID0gbmV3IE1hcCgpXHJcbmxldCBzZWxlY3RlZEZlYXR1cmU7XHJcblxyXG5cclxuZnVuY3Rpb24gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB2aWV3ZXIpIHtcclxuICB2YXIgZWxsaXBzb2lkID0gdmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgY2FydGVzaWFuLngsXHJcbiAgICBjYXJ0ZXNpYW4ueSxcclxuICAgIGNhcnRlc2lhbi56XHJcbiAgKVxyXG4gIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICB2YXIgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpXHJcbiAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICByZXR1cm4ge1xyXG4gICAgbG5nOiBsbmcsXHJcbiAgICBsYXQ6IGxhdCxcclxuICAgIGFsdDogYWx0LFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpIHtcclxuICBpZiAobW92ZW1lbnQuZW5kUG9zaXRpb24pIHtcclxuICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkgLT0gMlxyXG4gIH1cclxuICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvbiB8fCBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gIC8vIOiOt+WPluS4lueVjOWdkOagh+ezu+WcsOihqOWdkOagh++8jOiAg+iZkeWcsOW9ou+8jOS4jeWMheaLrOaooeWei++8jOWAvuaWnOaRhOW9seaooeWei+ihqOmdou+8m1xyXG4gIGxldCBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLnBpY2tQb3NpdGlvbihwb3NpdGlvbilcclxuICBpZiAoIWNhcnRlc2lhbikge1xyXG4gICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShwb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICBjYXJ0ZXNpYW4gPSBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCBzZGsudmlld2VyLnNjZW5lKTtcclxuICB9XHJcbiAgcmV0dXJuIGNhcnRlc2lhblxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuTGVmdENsaWNrKHNkaywgY2IpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBjbGljayA9IHRydWVcclxuICBsZWZ0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLnNldElucHV0QWN0aW9uKChtb3ZlbWVudCkgPT4ge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgY29uc3QgcmF5ID0gc2RrLnZpZXdlci5jYW1lcmEuZ2V0UGlja1JheShtb3ZlbWVudC5wb3NpdGlvbik7IC8v55u45Lqk55qE5bCE57q/XHJcbiAgICAgIGNhcnRlc2lhbiA9IHNkay52aWV3ZXIuc2NlbmUuZ2xvYmUucGljayhyYXksIHNkay52aWV3ZXIuc2NlbmUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBvczg0ID0gY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG5cclxuICAgIGNiICYmIGNiKHBvczg0KVxyXG5cclxuICAgIGlmIChjbGljaykge1xyXG4gICAgICBjbGljayA9IGZhbHNlXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNsaWNrID0gdHJ1ZVxyXG4gICAgICB9LCA2MDApO1xyXG4gICAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpICYmIGNhcnRlc2lhbikge1xyXG4gICAgICAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgICAgICBmb3IgKGxldCBpID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICBsZXQga2V5ID0gQXJyYXkuZnJvbShsZWZ0Q2xpY2tDYWxsYmFja01hcC5rZXlzKCkpW2ldXHJcbiAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KGtleSlcclxuICAgICAgICAgIGlmIChvYmopIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdCkge1xyXG4gICAgICAgICAgICAgIC8vIOaYr+WQpuS4uuWkmui+ueW9olxyXG4gICAgICAgICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnUG9seWdvbk9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIC8vIOaYr+WQpuWPr+eCueWHu3lcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zW2ldLmxuZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubG5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnNbMF0ubGF0XHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDogZrpm4blnLBcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnQXNzZW1ibGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gb2JqLnRoYXQuY29tcHV0ZUFzc2VtYmxlKG9iai50aGF0Lm9wdGlvbnMucG9zaXRpb25zLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnNbaV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tpICsgMV1cclxuICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWNleeureWktFxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdBdHRhY2tBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucyAmJiBvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggPj0gMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IG9iai50aGF0LmNvbXB1dGVBdHRhY2tBcnJvdyhvYmoudGhhdC5vcHRpb25zLnBvc2l0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3M4NCA9IGNhcnRlc2lhbjNUb3dnczg0KHBvc2l0aW9uc1ttXSwgc2RrLnZpZXdlcilcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zODQubG5nLCBwb3M4NC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seSA9IHR1cmYucG9seWdvbihbcG9seVBvc10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250YWluID0gdHVyZi5ib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHBvbHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyDlj4znrq3lpLRcclxuICAgICAgICAgICAgICBlbHNlIGlmIChvYmoudGhhdC50eXBlID09PSAnUGluY2VyQXJyb3dPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMgJiYgb2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoID49IDUpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jb21wdXRlUGluY2VyQXJyb3cob2JqLnRoYXQub3B0aW9ucy5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvbHlQb3MgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgcG9zaXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zODQgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbbV0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgICBwb2x5UG9zLnB1c2goW3Bvczg0LmxuZywgcG9zODQubGF0XSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvczg0XzAgPSBjYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnNbMF0sIHNkay52aWV3ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcG9seVBvcy5wdXNoKFtwb3M4NF8wLmxuZywgcG9zODRfMC5sYXRdKVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIOWchlxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKG9iai50aGF0LnR5cGUgPT09ICdDaXJjbGVPYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcHQgPSB0dXJmLnBvaW50KFtwb3M4NC5sbmcsIHBvczg0LmxhdF0pO1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIgJiYgb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2VudGVyID0gW29iai50aGF0Lm9wdGlvbnMuY2VudGVyLmxuZywgb2JqLnRoYXQub3B0aW9ucy5jZW50ZXIubGF0XTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmFkaXVzID0gb2JqLnRoYXQub3B0aW9ucy5yYWRpdXMgLyAxMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvcHRpb25zID0geyBzdGVwczogMzYwLCB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNpcmNsZSA9IHR1cmYuY2lyY2xlKGNlbnRlciwgcmFkaXVzLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGFpbiA9IHR1cmYuYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBjaXJjbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmoudGhhdC5vcHRpb25zLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8g5omH5b2iXHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ1NlY3Rvck9iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwdCA9IHR1cmYucG9pbnQoW3Bvczg0LmxuZywgcG9zODQubGF0XSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5vcHRpb25zLmNlbnRlciAmJiBvYmoudGhhdC5vcHRpb25zLnJhZGl1cyAmJiBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUgJiYgb2JqLnRoYXQub3B0aW9ucy5lbmRBbmdsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBvYmoudGhhdC5jYWxTZWN0b3Iob2JqLnRoYXQub3B0aW9ucy5jZW50ZXIsIG9iai50aGF0Lm9wdGlvbnMucmFkaXVzLCBvYmoudGhhdC5vcHRpb25zLnN0YXJ0QW5nbGUsIG9iai50aGF0Lm9wdGlvbnMuZW5kQW5nbGUsIHVuZGVmaW5lZCwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9seVBvcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBwb3NpdGlvbnMubGVuZ3RoOyBtKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBvbHlQb3MucHVzaChbcG9zaXRpb25zW21dLmxuZywgcG9zaXRpb25zW21dLmxhdF0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb2x5ID0gdHVyZi5wb2x5Z29uKFtwb2x5UG9zXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRhaW4gPSB0dXJmLmJvb2xlYW5Qb2ludEluUG9seWdvbihwdCwgcG9seSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai50aGF0Lm9wdGlvbnMuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICAgIGNvbnN0IHBpY2sgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQucG9zaXRpb24pXHJcbiAgICAgICAgICBpZiAocGljaykge1xyXG4gICAgICAgICAgICBpZiAocGljay5pZCkge1xyXG4gICAgICAgICAgICAgIGxldCBlbnRpdHlJZFxyXG4gICAgICAgICAgICAgIC8vIOefoumHj1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gbGVmdENsaWNrQ2FsbGJhY2tNYXAuZ2V0KHBpY2suaWQucGFyZW50SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZyAmJiBvYmoudGhhdC5nZW9qc29uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGhhdC5nZW9qc29uLmZlYXR1cmVzW2ldLmlkID09PSBwaWNrLmlkLl9pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwaWNrLmlkLmlkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSBwaWNrLmlkLmlkLnNwbGl0KCctJylcclxuICAgICAgICAgICAgICAgIGFycmF5LnNwbGljZShhcnJheS5sZW5ndGggLSAxLCAxKVxyXG4gICAgICAgICAgICAgICAgZW50aXR5SWQgPSBhcnJheS5qb2luKCctJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChwaWNrLmlkLnByb3BlcnRpZXMgJiYgcGljay5pZC5wcm9wZXJ0aWVzLmlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnByb3BlcnRpZXMuaWQuX3ZhbHVlKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQucHJvcGVydGllcy5pZC5fdmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmlkLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLmlkKVxyXG4gICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eUlkICYmIGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhlbnRpdHlJZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHBpY2sucHJpbWl0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBpY2suaWQgPT0gJ3N0cmluZycgJiYgbGVmdENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5pZClcclxuICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpY2suaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChwaWNrLnByaW1pdGl2ZSAmJiBwaWNrLnByaW1pdGl2ZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLnByaW1pdGl2ZS5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IGxlZnRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLnByaW1pdGl2ZS5pZClcclxuICAgICAgICAgICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChZSi5HbG9iYWwuZ2V0QmltUGlja1N0YXR1cyhzZGspKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChnZXRjYXJ0ZXNpYW4oc2RrLCBtb3ZlbWVudCksIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwaWNrLmNvbnRlbnQgJiYgKCFwaWNrLnByaW1pdGl2ZSB8fCAhcGljay5wcmltaXRpdmUuaWQpKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxlZnRDbGlja0NhbGxiYWNrTWFwLmhhcyhwaWNrLmNvbnRlbnQudGlsZXNldC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSBsZWZ0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGljay5jb250ZW50LnRpbGVzZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIHBpY2suY29udGVudC50aWxlc2V0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2FydGVzaWFuM1Rvd2dzODQoZ2V0Y2FydGVzaWFuKHNkaywgbW92ZW1lbnQpLCBzZGsudmlld2VyKSwgb2JqLnRoYXQpXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gaWYgKGNsaWNrKSB7XHJcbiAgICAvLyAgIGNsaWNrID0gZmFsc2VcclxuICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAvLyAgICAgY2xpY2sgPSB0cnVlXHJcbiAgICAvLyAgIH0sIDMwMCk7XHJcbiAgICAvLyAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuXHJcbiAgLy8gbGVmdENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbiAobW92ZW1lbnQpIHtcclxuICAvLyAgIGNvbnN0IGZlYXR1cmUgPSBzZGsudmlld2VyLnNjZW5lLnBpY2sobW92ZW1lbnQuZW5kUG9zaXRpb24pO1xyXG4gIC8vICAgLy8gdW5zZWxlY3RGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSk7XHJcbiAgLy8gICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XHJcbiAgLy8gICAgIHNlbGVjdGVkRmVhdHVyZS5jb2xvciA9IENlc2l1bS5Db2xvci5XSElURTtcclxuICAvLyAgIH1cclxuICAvLyAgIHNlbGVjdGVkRmVhdHVyZSA9IGZlYXR1cmVcclxuICAvLyAgIGlmIChmZWF0dXJlKSB7XHJcbiAgLy8gICAgIGZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gIC8vICAgfVxyXG4gIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKTtcclxuICAvLyB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZUxlZnRDbGljayhzZGspIHtcclxuICBsZWZ0Q2xpY2tIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gIGxlZnRDbGlja0hhbmRsZXIgPSBudWxsXHJcbiAgLy8gfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcGVuUmlnaHRDbGljayhzZGspIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihzZGsudmlld2VyLmNhbnZhcylcclxuICByaWdodENsaWNrSGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKHBpY2sgJiYgcGljay5pZCkge1xyXG4gICAgICAgIGxldCBpZFxyXG4gICAgICAgIGlmIChwaWNrLmlkLnR5cGUgJiYgcGljay5pZC50eXBlID09PSAndmVjdG9yJyAmJiBwaWNrLmlkLnBhcmVudElkKSB7XHJcbiAgICAgICAgICBsZXQgb2JqID0gcmlnaHRDbGlja0NhbGxiYWNrTWFwLmdldChwaWNrLmlkLnBhcmVudElkKVxyXG4gICAgICAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcgJiYgb2JqLnRoYXQuZ2VvanNvbikge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAob2JqLnRoYXQuZ2VvanNvbi5mZWF0dXJlc1tpXS5pZCA9PT0gcGljay5pZC5faWQpIHtcclxuICAgICAgICAgICAgICAgIG9iai5jYWxsYmFjayhcclxuICAgICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgIG9iai50aGF0Lmdlb2pzb24uZmVhdHVyZXNbaV0uaWQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KSwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgcGljay5pZCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWQgPSBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRDbGlja0NhbGxiYWNrTWFwLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQoaWQpXHJcbiAgICAgICAgICAgIGlmIChvYmoudGhhdC5waWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChwaWNrICYmIHBpY2suY29udGVudCkge1xyXG4gICAgICAgIGlmIChyaWdodENsaWNrQ2FsbGJhY2tNYXAuaGFzKHBpY2suY29udGVudC50aWxlc2V0LmlkKSkge1xyXG4gICAgICAgICAgbGV0IG9iaiA9IHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgICAgICBpZiAob2JqLnRoYXQucGlja2luZykge1xyXG4gICAgICAgICAgICBpZiAob2JqLnRoYXQudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvYmouY2FsbGJhY2soXHJcbiAgICAgICAgICAgICAgICAgIG1vdmVtZW50LFxyXG4gICAgICAgICAgICAgICAgICBwaWNrLmdldFByb3BlcnR5KCdpZCcpLFxyXG4gICAgICAgICAgICAgICAgICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHNkay52aWV3ZXIpLCBvYmoudGhhdClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNhcnRlc2lhbiA9IGdldGNhcnRlc2lhbihzZGssIG1vdmVtZW50KVxyXG4gICAgICAgICAgICAgIGlmICghY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JqLmNhbGxiYWNrKFxyXG4gICAgICAgICAgICAgICAgbW92ZW1lbnQsXHJcbiAgICAgICAgICAgICAgICBwaWNrLmNvbnRlbnQudGlsZXNldC5pZCxcclxuICAgICAgICAgICAgICAgIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgc2RrLnZpZXdlciksIG9iai50aGF0KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLlJJR0hUX0NMSUNLKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVJpZ2h0Q2xpY2soKSB7XHJcbiAgaWYgKHJpZ2h0Q2xpY2tIYW5kbGVyKSB7XHJcbiAgICByaWdodENsaWNrSGFuZGxlci5kZXN0cm95KCkgLy/lhbPpl63kuovku7blj6Xmn4RcclxuICAgIHJpZ2h0Q2xpY2tIYW5kbGVyID0gbnVsbFxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gb3Blbk1vdmUoc2RrKSB7XHJcbiAgTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIE1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICAvLyB1bnNlbGVjdEZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlKTtcclxuICAgIC8vIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgLy8gaWYgKHBpY2sgJiYgcGljay5pZCkgeyB9XHJcbiAgICAvLyBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgIC8vICAgaWYgKE1vdmVDYWxsYmFja01hcC5oYXMocGljay5jb250ZW50LnRpbGVzZXQuaWQpKSB7XHJcbiAgICAvLyAgICAgbGV0IG9iaiA9IE1vdmVDYWxsYmFja01hcC5nZXQocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAvLyAgICAgaWYgKG9iai50aGF0LnBpY2tpbmcpIHtcclxuICAgIC8vICAgICAgIGlmIChvYmoudGhhdC50eXBlID09PSAnYmltJykge1xyXG4gICAgLy8gICAgICAgICBpZiAoWUouR2xvYmFsLmdldEJpbVBpY2tTdGF0dXMoc2RrKSkge1xyXG4gICAgLy8gICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IHBpY2tcclxuICAgIC8vICAgICAgICAgICBwaWNrLmNvbG9yID0gQ2VzaXVtLkNvbG9yLllFTExPVztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBudWxsXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICAgIGVsc2Uge1xyXG4gICAgLy8gICAgICAgICBzZWxlY3RlZEZlYXR1cmUgPSBwaWNrXHJcbiAgICAvLyAgICAgICAgIHBpY2suY29sb3IgPSBDZXNpdW0uQ29sb3IuWUVMTE9XO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBlbHNlIHtcclxuICAgIC8vICAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IG51bGxcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsb3NlTW92ZSgpIHtcclxuICBpZiAoTW92ZUhhbmRsZXIpIHtcclxuICAgIE1vdmVIYW5kbGVyLmRlc3Ryb3koKSAvL+WFs+mXreS6i+S7tuWPpeafhFxyXG4gICAgTW92ZUhhbmRsZXIgPSBudWxsXHJcbiAgfVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ0xlZnRDbGlja0NhbGxiYWNrKGlkLCBjYWxsYmFjaywgdGhhdCkge1xyXG5cclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5zZXQoaWQsIHsgY2FsbGJhY2ssIHRoYXQgfSlcclxufS8q5Y+W5raI5bem6ZSu5Zue6LCDKi9cclxuZnVuY3Rpb24gdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjayhpZCwpIHtcclxuICBsZWZ0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ1JpZ2h0Q2xpY2tDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICByaWdodENsaWNrQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOWPs+mUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVuUmVnUmlnaHRDbGlja0NhbGxiYWNrKGlkLCkge1xyXG4gIHJpZ2h0Q2xpY2tDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG4vKuazqOWGjOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHJlZ01vdmVDYWxsYmFjayhpZCwgY2FsbGJhY2ssIHRoYXQpIHtcclxuICBNb3ZlQ2FsbGJhY2tNYXAuc2V0KGlkLCB7IGNhbGxiYWNrLCB0aGF0IH0pXHJcbn0vKuWPlua2iOW3pumUruWbnuiwgyovXHJcbmZ1bmN0aW9uIHVucmVnTW92ZUNhbGxiYWNrKGlkLCkge1xyXG4gIE1vdmVDYWxsYmFja01hcC5kZWxldGUoaWQsKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMZWZ0Q2xpY2tTdGF0ZSgpIHtcclxuICBpZiAobGVmdENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UmlnaHRDbGlja1N0YXRlKCkge1xyXG4gIGlmIChyaWdodENsaWNrSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TW92ZVN0YXRlKCkge1xyXG4gIGlmIChNb3ZlSGFuZGxlcikge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IG9wZW5MZWZ0Q2xpY2ssIGNsb3NlTGVmdENsaWNrLCByZWdMZWZ0Q2xpY2tDYWxsYmFjaywgdW5SZWdMZWZ0Q2xpY2tDYWxsYmFjaywgb3BlblJpZ2h0Q2xpY2ssIGNsb3NlUmlnaHRDbGljaywgcmVnUmlnaHRDbGlja0NhbGxiYWNrLCB1blJlZ1JpZ2h0Q2xpY2tDYWxsYmFjaywgb3Blbk1vdmUsIGNsb3NlTW92ZSwgcmVnTW92ZUNhbGxiYWNrLCB1bnJlZ01vdmVDYWxsYmFjaywgZ2V0TGVmdENsaWNrU3RhdGUsIGdldFJpZ2h0Q2xpY2tTdGF0ZSwgZ2V0TW92ZVN0YXRlIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/SplitScreen/ClickCallback/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/SplitScreen/index.js":
-/*!*****************************************!*\
- !*** ./src/Global/SplitScreen/index.js ***!
- \*****************************************/
-/*! exports provided: on, off, setSplitDirection, syncSplitData, getState, getActiveId, setActiveId, setActiveViewer, getSdk */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"on\", function() { return on; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"off\", function() { return off; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSplitDirection\", function() { return setSplitDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"syncSplitData\", function() { return syncSplitData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getState\", function() { return getState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveId\", function() { return getActiveId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveId\", function() { return setActiveId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveViewer\", function() { return setActiveViewer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSdk\", function() { return getSdk; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../global */ \"./src/Global/global.js\");\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _mouseRightMenu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../mouseRightMenu */ \"./src/Global/mouseRightMenu/index.js\");\n/* harmony import */ var _ClickCallback__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ClickCallback */ \"./src/Global/ClickCallback/index.js\");\n/* harmony import */ var _ClickCallback__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ClickCallback */ \"./src/Global/SplitScreen/ClickCallback/index.js\");\n/* harmony import */ var _SheetIndex__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../SheetIndex */ \"./src/Global/SheetIndex/index.js\");\n/* harmony import */ var _efflect__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../efflect */ \"./src/Global/efflect/index.js\");\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n/**\r\n * 分屏对比\r\n * */\n\n\n\n\n\n\n\n\n\nvar state = false;\nvar sdkD; // 分屏对象\nvar sdkP; // 主屏对象\nvar activeViewer;\nvar controlViewer;\nvar syncObject = {};\nvar handlers = [];\nvar activeIds;\nvar statusMap = new Map();\n// window.statusMap = statusMap\n// async function init(sdk) {\n// sdkP = sdk\n// activeViewer = 0\n// let tools = new Tools()\n// let sdk2 = await new YJ.YJEarth(sdk.div_id)\n// sdk2.viewer._element.className = 'cesium-viewer 2d'\n// // setTimeout(() => {\n// // let switchCluster = new YJ.Global.switchCluster(sdk2, true)\n// // }, 500);\n// CesiumContainer(sdk2, {\n// compass: false, // 罗盘\n// // legend: false, // 比例尺\n// info: false, // 信息栏\n// frame: false // 刷新率\n// })\n// sdk2.viewer.scene.mode = Cesium.SceneMode.SCENE2D\n// sdkD = await sdk2\n// solveBug()\n// await eventBind(sdk, 0)\n// await eventBind(sdk2, 1)\n// syncObject = { sdks: [sdk, sdk2], tools }\n// await syncData(sdk)\n// sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject)\n\n// sdk.viewer.imageryLayers.layerAdded.addEventListener(syncImageryLayerAdded);\n// sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);\n// sdk.viewer.imageryLayers.layerRemoved.addEventListener(syncImageryLayerRemoved);\n// sdk.viewer.imageryLayers.layerShownOrHidden.addEventListener(syncImageryLayerShownOrHidden);\n// // sdk.viewer.entities.collectionChanged.addEventListener(syncEntities)\n// // sdk.viewer.dataSources.dataSourceAdded.addEventListener(syncDataSources)\n// }\nfunction on(_x) {\n return _on.apply(this, arguments);\n}\nfunction _on() {\n _on = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(sdk) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = true;\n if (sdkD) {} else {\n init(sdk);\n Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_6__[\"off\"])(sdk);\n }\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _on.apply(this, arguments);\n}\nfunction off() {\n state = false;\n if (!sdkP) {\n return;\n }\n setSplitDirection(-1, undefined, true);\n var sliderElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n var leftElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdkP.viewer._element.removeChild(sliderElm);\n sdkP.viewer._element.removeChild(leftElm);\n sdkP.viewer._element.removeChild(rightElm);\n }\n sdkP.viewer.scene.preRender.removeEventListener(syncViewer, syncObject);\n sdkP.viewer.imageryLayers.layerAdded.removeEventListener(syncImageryLayerAdded);\n sdkP.viewer.imageryLayers.layerMoved.removeEventListener(syncImageryLayerMoved);\n sdkP.viewer.imageryLayers.layerRemoved.removeEventListener(syncImageryLayerRemoved);\n sdkP.viewer.imageryLayers.layerShownOrHidden.removeEventListener(syncImageryLayerShownOrHidden);\n // sdk.viewer.entities.collectionChanged.removeEventListener(syncEntities)\n // sdk.viewer.dataSources.dataSourceAdded.removeEventListener(syncDataSources)\n\n //primitiveAdded=undefined基元同步设置在add位置\n // sdk.viewer.scene.primitives.primitiveAdded.removeEventListener(syncPrimitivesAdded)\n for (var i = 0; i < handlers.length; i++) {\n handlers[i].destroy();\n }\n if (sdkD) {\n var rightBox = sdkP.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].getElementsByClassName('cesium-widget')[1];\n sdkP.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].removeChild(rightBox);\n // sdkD.destroy()\n handlers = [];\n sdkD = null;\n activeViewer = null;\n syncObject = {};\n }\n var leftBox = sdkP.viewer._element.getElementsByClassName('cesium-widget')[0];\n var leftCanvas = leftBox.getElementsByTagName('canvas')[0];\n leftBox.style.width = '100%';\n leftCanvas.style.width = '100%';\n var billboardAttributeBoxs = sdkP.viewer._element.getElementsByClassName('billboard-attribute-box');\n for (var _i = 0; _i < billboardAttributeBoxs.length; _i++) {\n billboardAttributeBoxs[_i].style.display = 'block';\n }\n sdkP = null;\n}\nfunction init(_x2) {\n return _init.apply(this, arguments);\n} // async function syncData(entityId) {\n// if (!sdkP) {\n// return\n// }\n// let entityMapP = sdkP.entityMap\n// let entityMapD = (sdkD && sdkD.entityMap)\n// if (entityId) {\n// let thatD = entityMapD.get(entityId)\n// if (thatD) {\n// let direction = 0\n// if(thatD.show) {\n// direction = \n// }\n// thatD.remove()\n// }\n// setSplitDirection(entityId)\n// }\n// // else {\n// // for (let [key, thatP] of sdkP.entityMap) {\n// // if (!thatP || !thatP.show) {\n// // continue\n// // }\n// // else {\n// // setEvent(key)\n// // }\n// // }\n// // }\n// }\nfunction _init() {\n _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee2(sdk) {\n var billboardAttributeBoxs, i, sliderElm, leftElm, rightElm, left, right, _i3, thatP, status, leftBox, leftCanvas, tools, rightBox, rightCanvas, mousemove, stages, _i6, changeEntitySplitStatus;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n changeEntitySplitStatus = function _changeEntitySplitSta(v) {\n var value;\n // if (v === undefined || v === null) {\n // if (leftElm.checked && rightElm.checked) {\n // value = 0\n // }\n // else {\n // if (leftElm.checked) {\n // value = -1\n // }\n // if (rightElm.checked) {\n // value = 1\n // }\n // }\n // }\n // else {\n // value = v\n // }\n var _iterator = _createForOfIteratorHelper(statusMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step.value, 2),\n key = _step$value[0],\n _status3 = _step$value[1];\n if (!_status3) {\n value = -1;\n } else if (_status3.P && _status3.D) {\n value = 0;\n } else {\n if (_status3.P) {\n value = -1;\n }\n if (_status3.D) {\n value = 1;\n }\n }\n // else {\n // value = v\n // }\n var entity = sdk.entityMap.get(key);\n // entity && (entity.splitDirection = value)\n entity && setSplitDirection(value, key);\n }\n // if (activeIds && activeIds.length > 0) {\n // for (let i = 0; i < activeIds.length; i++) {\n // let entity = sdk.entityMap.get(activeIds[i])\n // // entity && (entity.splitDirection = value)\n // console.log(entity, activeIds, value)\n // entity && (setSplitDirection(value, entity.options.id))\n // }\n // }\n // else {\n // sdk.entityMap.forEach((item, key) => {\n // // item.splitDirection = value\n // setSplitDirection(value, item.options.id)\n // })\n // }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n };\n mousemove = function _mousemove(a) {\n if (sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0] === a.target || sdk.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0] === a.target || sdk.viewer._element.getElementsByClassName('cesium-widget')[1].getElementsByTagName('canvas')[0] === a.target) {\n var offsetX = a.offsetX;\n if (a.offsetX < 60) {\n offsetX = 60;\n }\n if (a.target.width - a.offsetX < 60) {\n offsetX = a.target.width - 60;\n }\n sliderElm.style.left = offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n leftBox.style.width = offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n leftCanvas.style.width = 100 / (offsetX / sdk.viewer._element.scrollWidth) + '%';\n rightBox.style.width = (1 - offsetX / sdk.viewer._element.scrollWidth) * 100 + '%';\n rightCanvas.style.width = 100 / (1 - offsetX / sdk.viewer._element.scrollWidth) + '%';\n leftElm.style.left = \"calc(\".concat(offsetX / sdk.viewer._element.scrollWidth * 100, \"% - 50px)\");\n rightElm.style.right = \"calc(\".concat((1 - offsetX / sdk.viewer._element.scrollWidth) * 100, \"% - 50px)\");\n }\n };\n billboardAttributeBoxs = sdk.viewer._element.getElementsByClassName('billboard-attribute-box');\n for (i = 0; i < billboardAttributeBoxs.length; i++) {\n billboardAttributeBoxs[i].style.display = 'none';\n }\n sdk.entityMap.forEach(function (item, key) {\n if (item.type && item.type == 'TrajectoryMotion' && item.viewFollow) {\n item.viewFollow = false;\n }\n });\n sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdk.viewer._element.removeChild(sliderElm);\n sdk.viewer._element.removeChild(leftElm);\n sdk.viewer._element.removeChild(rightElm);\n }\n sliderElm = document.createElement('div');\n sliderElm.className = 'YJ-custom-slider';\n sliderElm.style.position = 'absolute';\n sliderElm.style.left = '50%';\n sliderElm.style.top = '0px';\n leftElm = document.createElement('input');\n leftElm.className = 'YJ-custom-checkbox-left';\n leftElm.type = 'checkbox';\n leftElm.style.position = 'absolute';\n leftElm.style.left = 'calc(50% - 50px)';\n rightElm = document.createElement('input');\n rightElm.className = 'YJ-custom-checkbox-right';\n rightElm.type = 'checkbox';\n rightElm.style.position = 'absolute';\n rightElm.style.right = 'calc(50% - 50px)';\n leftElm.style.display = 'none';\n rightElm.style.display = 'none';\n sdk.viewer._element.appendChild(leftElm);\n sdk.viewer._element.appendChild(rightElm);\n left = 0;\n right = 0;\n if (!activeIds) {\n _context2.next = 43;\n break;\n }\n _i3 = 0;\n case 32:\n if (!(_i3 < activeIds.length)) {\n _context2.next = 43;\n break;\n }\n thatP = sdk.entityMap.get(activeIds[_i3]);\n if (!(!thatP || thatP.type === 'terrain' || !thatP.show || thatP.type === 'TextBox')) {\n _context2.next = 36;\n break;\n }\n return _context2.abrupt(\"continue\", 40);\n case 36:\n leftElm.style.display = 'unset';\n rightElm.style.display = 'unset';\n status = statusMap.get(activeIds[_i3]);\n if (status) {\n if (status.P) {\n left++;\n }\n if (status.D) {\n right++;\n }\n }\n case 40:\n _i3++;\n _context2.next = 32;\n break;\n case 43:\n sdkP = sdk;\n if (!left && !right) {\n left++;\n }\n leftElm.checked = left ? true : false;\n rightElm.checked = right ? true : false;\n leftElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!rightElm.checked) {\n rightElm.checked = true;\n }\n }\n for (var _i4 = 0; _i4 < activeIds.length; _i4++) {\n var _status = statusMap.get(activeIds[_i4]);\n _status = _status || {};\n _status.P = e.target.checked;\n _status.D = rightElm.checked;\n statusMap.set(activeIds[_i4], _status);\n }\n changeEntitySplitStatus();\n });\n rightElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!leftElm.checked) {\n leftElm.checked = true;\n }\n }\n for (var _i5 = 0; _i5 < activeIds.length; _i5++) {\n var _status2 = statusMap.get(activeIds[_i5]);\n _status2 = _status2 || {};\n _status2.P = leftElm.checked;\n _status2.D = e.target.checked;\n statusMap.set(activeIds[_i5], _status2);\n }\n changeEntitySplitStatus();\n });\n sliderElm.addEventListener('mousedown', function () {\n sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].style.cursor = 'e-resize';\n document.body.addEventListener('mousemove', mousemove);\n sliderElm.addEventListener('mouseup', function () {\n sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].style.cursor = 'unset';\n document.body.removeEventListener('mousemove', mousemove);\n });\n });\n sdk.viewer._element.appendChild(sliderElm);\n leftBox = sdk.viewer._element.getElementsByClassName('cesium-widget')[0];\n leftCanvas = leftBox.getElementsByTagName('canvas')[0];\n leftBox.style.width = '50%';\n leftBox.style.left = '0px';\n leftBox.style.overflow = 'hidden';\n leftCanvas.style.width = '200%';\n activeViewer = 0;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n _context2.next = 61;\n return new YJ.YJEarth(sdk.div_id);\n case 61:\n sdkD = _context2.sent;\n if (!Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_8__[\"getLeftClickState\"])()) {\n _context2.next = 65;\n break;\n }\n _context2.next = 65;\n return new _ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"openLeftClick\"](sdkD);\n case 65:\n if (!Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_8__[\"getRightClickState\"])()) {\n _context2.next = 68;\n break;\n }\n _context2.next = 68;\n return new _ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"openRightClick\"](sdkD);\n case 68:\n if (!Object(_ClickCallback__WEBPACK_IMPORTED_MODULE_8__[\"getMoveState\"])()) {\n _context2.next = 71;\n break;\n }\n _context2.next = 71;\n return new _ClickCallback__WEBPACK_IMPORTED_MODULE_9__[\"openMove\"](sdkD);\n case 71:\n if (Object(_mouseRightMenu__WEBPACK_IMPORTED_MODULE_7__[\"getMouseRightMenuStatus\"])(sdk)) {\n Object(_mouseRightMenu__WEBPACK_IMPORTED_MODULE_7__[\"MouseRightMenu\"])(sdkD, true);\n }\n sdkD.viewer._element.style.display = 'none';\n rightBox = document.createElement('div');\n rightBox.className = 'cesium-widget cesium-widget-split';\n rightBox.style.width = '50%';\n rightBox.style.position = 'absolute';\n rightBox.style.right = '0px';\n rightBox.style.overflow = 'hidden';\n rightCanvas = sdkD.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].getElementsByTagName('canvas')[0];\n rightCanvas.style.width = '200%';\n rightCanvas.style.position = 'absolute';\n rightCanvas.style.right = '0px';\n rightBox.appendChild(rightCanvas);\n sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0].appendChild(rightBox);\n document.getElementById(sdk.div_id).removeChild(sdkD.viewer._element);\n _context2.next = 88;\n return eventBind();\n case 88:\n syncObject = {\n sdks: [sdk, sdkD],\n tools: tools\n };\n changeEntitySplitStatus();\n // await setSplitDirection(-1)\n sdk.viewer.scene.preRender.addEventListener(syncViewer, syncObject);\n\n // sdk.viewer.imageryLayers.layerAdded.addEventListener(syncImageryLayerAdded);\n sdk.viewer.imageryLayers.layerMoved.addEventListener(syncImageryLayerMoved);\n // sdk.viewer.imageryLayers.layerRemoved.addEventListener(syncImageryLayerRemoved);\n // sdk.viewer.imageryLayers.layerShownOrHidden.addEventListener(syncImageryLayerShownOrHidden);\n\n if (Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"getFlwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"FlwStatusSwitch\"])(sdkD, true);\n }\n if (Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"getJwwStatus\"])(sdk)) {\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"JwwStatusSwitch\"])(sdkD, true);\n }\n if (Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_10__[\"getStatus\"])()) {\n Object(_SheetIndex__WEBPACK_IMPORTED_MODULE_10__[\"SheetIndexStatusSwitch\"])(sdkD, true);\n }\n // 雨雪雾夜视星空光照\n stages = sdk.viewer.scene.postProcessStages._stages;\n _i6 = 0;\n case 97:\n if (!(_i6 < stages.length)) {\n _context2.next = 112;\n break;\n }\n _context2.t0 = stages[_i6].name;\n _context2.next = _context2.t0 === 'rain' ? 101 : _context2.t0 === 'snow' ? 103 : _context2.t0 === 'fog' ? 105 : _context2.t0 === 'czm_night_vision' ? 107 : 109;\n break;\n case 101:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"rain\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 103:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"snow\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 105:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"fog\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 107:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"nightVision\"])(sdkD, true);\n return _context2.abrupt(\"break\", 109);\n case 109:\n _i6++;\n _context2.next = 97;\n break;\n case 112:\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"skyStarry\"])(sdkD, !sdk.viewer.scene.skyAtmosphere.show);\n Object(_efflect__WEBPACK_IMPORTED_MODULE_11__[\"illumination\"])(sdkD, sdk.viewer.shadows);\n case 114:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _init.apply(this, arguments);\n}\nfunction setSplitDirection(_x3, _x4) {\n return _setSplitDirection.apply(this, arguments);\n}\nfunction _setSplitDirection() {\n _setSplitDirection = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee4(v, id) {\n var isoff,\n entityId,\n entityMapP,\n entityMapD,\n thatP,\n _iterator2,\n _step2,\n _step2$value,\n key,\n _thatP,\n setEvent,\n _setEvent,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _setEvent = function _setEvent3() {\n _setEvent = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee3(id, entityId) {\n var status, thatP, thatD, thatPstate, _state, i, _i7, _i8, _i9, _i10, _i11, _i12, _i13, _i14, _i15, _i16, _i17, options, target, _state2, _state3, _i20, _i21, _i22;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n status = {};\n thatP = entityMapP.get(id);\n if (!(!thatP && !thatP.show)) {\n _context3.next = 4;\n break;\n }\n return _context3.abrupt(\"return\");\n case 4:\n thatD = entityMapD && entityMapD.get(id);\n if (!thatD) {\n _context3.next = 42;\n break;\n }\n _context3.t0 = v;\n _context3.next = _context3.t0 === null ? 9 : _context3.t0 === void 0 ? 9 : _context3.t0 === 0 ? 9 : _context3.t0 === '0' ? 9 : _context3.t0 === 1 ? 21 : _context3.t0 === '1' ? 21 : _context3.t0 === -1 ? 32 : _context3.t0 === '-1' ? 32 : 40;\n break;\n case 9:\n status.P = true;\n status.D = true;\n if (thatP.type === 'TrajectoryMotion') {\n thatPstate = function thatPstate(v) {\n thatP.options.state = v;\n cancelAnimationFrame(thatP._requestAnimationFrameEventId);\n if (thatP.editObj) {\n thatP.editObj.destroy();\n thatP.editObj = null;\n }\n if (thatP.TweenAnimate) {\n clearTimeout(thatP.TweenAnimate.timeout);\n if (v) {\n thatP.lineEdit = false;\n if (thatP.TweenAnimate.isPlaying()) {\n thatP.TweenAnimate.timeout = setTimeout(function () {\n thatP.TweenAnimate.resume();\n }, thatP.options.delay);\n } else {\n thatP.TweenAnimate.delay(thatP.delay).start();\n }\n } else {\n var positionCamera = _objectSpread({}, thatP.sdk.viewer.camera._position);\n thatP._requestAnimationFrameEventId = requestAnimationFrame(function fn() {\n if (thatP.firstPersonView) {\n thatP.sdk.viewer.camera.setView({\n destination: _objectSpread({}, positionCamera),\n orientation: {\n heading: thatP.sdk.viewer.camera.heading,\n pitch: thatP.sdk.viewer.camera.pitch,\n roll: thatP.sdk.viewer.camera.roll\n }\n });\n }\n thatP._requestAnimationFrameEventId = requestAnimationFrame(fn);\n });\n thatP.TweenAnimate.pause();\n }\n } else {\n if (v) {\n var positions = thatP.renewLinePositions(thatP.options.line.positions);\n thatP.modelMove(positions);\n }\n }\n };\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n if (thatP.TweenAnimate) {\n _state = thatP.state;\n if (_state) {\n thatPstate(false);\n }\n thatD.setMovePositionByDistance(thatP.TweenAnimate._object.distance);\n thatPstate(_state);\n }\n } else if (thatP.type === 'vector') {\n if (thatP.entity) {\n if (entityId) {\n for (i = 0; i < thatP.entity.entities.values.length; i++) {\n if (thatP.entity.entities.values[i].id === entityId) {\n thatP.entity.entities.values[i].show = thatP.entity.entities.values[i]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i7 = 0; _i7 < thatP.entity.entities.values.length; _i7++) {\n thatP.entity.entities.values[_i7].show = thatP.entity.entities.values[_i7]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = true);\n }\n if (thatP.type === 'PincerArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance1 / thatP.TweenAnimate._valuesEnd.distance1 * thatP.spreadTime);\n }\n }\n if (thatP.type === 'AttackArrowObject' || thatP.type === 'StraightArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance / thatP.TweenAnimate._valuesEnd.distance * thatP.spreadTime);\n }\n }\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n thatD.textShow = thatP.textShow;\n }\n if (thatP.label && thatP.labelShow) {\n thatP.labelShow = true;\n }\n if (thatD.label) {\n thatD.label.options.ground = false;\n }\n if (thatD.type === 'vector') {\n if (thatD.entity) {\n if (entityId) {\n for (_i8 = 0; _i8 < thatD.entity.entities.values.length; _i8++) {\n if (thatD.entity.entities.values[_i8].id === entityId) {\n thatD.entity.entities.values[_i8].show = thatP.entity.entities.values[_i8]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i9 = 0; _i9 < thatD.entity.entities.values.length; _i9++) {\n thatD.entity.entities.values[_i9].show = thatP.entity.entities.values[_i9]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatD.show = true;\n }\n if (thatD.type === 'TrajectoryMotion') {\n thatD.firstPersonView = thatP.firstPersonView;\n }\n if (thatD.type === 'Explosion') {\n thatD.entity.imgIndex = thatP.entity.imgIndex;\n }\n return _context3.abrupt(\"break\", 40);\n case 21:\n status.P = false;\n status.D = true;\n if (thatP.type === 'TrajectoryMotion') {\n thatP.entity && (thatP.entity.show = false);\n thatP.line && (thatP.line.show = false);\n thatP.realTimeLine && (thatP.realTimeLine.show = false);\n } else if (thatP.type === 'vector') {\n if (thatP.entity) {\n if (!entityId) {\n for (_i10 = 0; _i10 < thatP.entity.entities.values.length; _i10++) {\n thatP.entity.entities.values[_i10].show = false;\n }\n } else {\n for (_i11 = 0; _i11 < thatP.entity.entities.values.length; _i11++) {\n if (thatP.entity.entities.values[_i11].id === entityId) {\n thatP.entity.entities.values[_i11].show = false;\n }\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = false);\n }\n if (thatP.type === 'PincerArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance1 / thatP.TweenAnimate._valuesEnd.distance1 * thatP.spreadTime);\n }\n }\n if (thatP.type === 'AttackArrowObject' || thatP.type === 'StraightArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n thatP.setSpreadProgressByTime(thatP.TweenAnimate._object.distance / thatP.TweenAnimate._valuesEnd.distance * thatP.spreadTime);\n }\n }\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = false;\n thatD.textShow = thatP.textShow;\n }\n if (thatP.label) {\n thatP.label.entity.show = false;\n }\n if (thatD.label) {\n thatD.label.options.ground = false;\n }\n if (thatD.type === 'vector') {\n if (thatD.entity) {\n if (entityId) {\n for (_i12 = 0; _i12 < thatD.entity.entities.values.length; _i12++) {\n if (thatD.entity.entities.values[_i12].id === entityId) {\n thatD.entity.entities.values[_i12].show = thatP.entity.entities.values[_i12]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i13 = 0; _i13 < thatD.entity.entities.values.length; _i13++) {\n thatD.entity.entities.values[_i13].show = thatP.entity.entities.values[_i13]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatD.show = true;\n }\n if (thatD.type === 'TrajectoryMotion') {\n thatD.firstPersonView = thatP.firstPersonView;\n }\n return _context3.abrupt(\"break\", 40);\n case 32:\n status.P = true;\n status.D = false;\n if (thatP.type === 'TrajectoryMotion') {\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n // if (thatP.TweenAnimate) {\n // let state = thatP.state\n // if (state) {\n // thatP.state = false\n // }\n // thatD.setMovePositionByDistance(thatP.TweenAnimate._object.distance)\n // thatP.state = state\n // }\n } else if (thatP.type === 'vector') {\n if (thatP.entity) {\n if (entityId) {\n for (_i14 = 0; _i14 < thatP.entity.entities.values.length; _i14++) {\n if (thatP.entity.entities.values[_i14].id === entityId) {\n thatP.entity.entities.values[_i14].show = thatP.entity.entities.values[_i14]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i15 = 0; _i15 < thatP.entity.entities.values.length; _i15++) {\n thatP.entity.entities.values[_i15].show = thatP.entity.entities.values[_i15]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = true);\n }\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n thatD.textShow = false;\n }\n if (thatP.label && thatP.labelShow) {\n thatP.label.entity.show = true;\n }\n if (thatD.label) {\n thatD.label.options.ground = false;\n }\n if (thatP.type === 'terrain') {\n thatD.show = true;\n } else if (thatD.type === 'vector') {\n if (thatD.entity) {\n if (entityId) {\n for (_i16 = 0; _i16 < thatD.entity.entities.values.length; _i16++) {\n if (thatD.entity.entities.values[_i16].id === entityId) {\n if (thatD.entity.entities.values[_i16].id === entityId) {\n thatD.entity.entities.values[_i16].show = false;\n }\n }\n }\n } else {\n for (_i17 = 0; _i17 < thatD.entity.entities.values.length; _i17++) {\n thatD.entity.entities.values[_i17].show = false;\n }\n }\n }\n } else {\n thatD.show = false;\n }\n return _context3.abrupt(\"break\", 40);\n case 40:\n _context3.next = 120;\n break;\n case 42:\n options = syncObject.tools.deepCopyObj(thatP.options);\n _context3.t1 = v;\n _context3.next = _context3.t1 === null ? 46 : _context3.t1 === void 0 ? 46 : _context3.t1 === 0 ? 46 : _context3.t1 === '0' ? 46 : _context3.t1 === 1 ? 75 : _context3.t1 === '1' ? 75 : _context3.t1 === -1 ? 100 : _context3.t1 === '-1' ? 100 : 120;\n break;\n case 46:\n status.P = true;\n status.D = true;\n options.show = true;\n if (thatP.type === 'layer') {\n options.layer_index = thatP.layer_index;\n }\n _context3.next = 52;\n return new thatP.constructor(sdkD, options);\n case 52:\n target = _context3.sent;\n if (thatP.onClick) {\n target.onClick = thatP.onClick;\n }\n if (thatP.onRightClick) {\n target.onRightClick = thatP.onRightClick;\n }\n if (thatP.onMouseMove) {\n target.onMouseMove = thatP.onMouseMove;\n }\n if (!(thatP.type === 'TrajectoryMotion')) {\n _context3.next = 63;\n break;\n }\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n if (thatP.TweenAnimate) {\n _state2 = thatP.state;\n if (_state2) {\n thatP.state = false;\n }\n target.setMovePositionByDistance(thatP.TweenAnimate._object.distance);\n thatP.state = _state2;\n }\n _context3.next = 72;\n break;\n case 63:\n if (!(target.type !== 'glb' && target.on)) {\n _context3.next = 67;\n break;\n }\n if (target.type === 'vector') {\n target.data = thatP.data;\n }\n _context3.next = 67;\n return target.on();\n case 67:\n if (target.type === 'Explosion') {\n target.entity.imgIndex = thatP.entity.imgIndex;\n }\n if (target.type === 'PincerArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n target.setSpreadProgressByTime(thatP.TweenAnimate._object.distance1 / thatP.TweenAnimate._valuesEnd.distance1 * thatP.spreadTime);\n }\n }\n if (target.type === 'AttackArrowObject' || target.type === 'StraightArrowObject') {\n if (thatP.TweenAnimate && !thatP.TweenAnimate._isPaused) {\n target.setSpreadProgressByTime(thatP.TweenAnimate._object.distance / thatP.TweenAnimate._valuesEnd.distance * thatP.spreadTime);\n }\n }\n if (thatP.type === 'vector') {\n target.load(function () {\n if (target.entity) {\n if (entityId) {\n for (var _i18 = 0; _i18 < target.entity.entities.values.length; _i18++) {\n if (target.entity.entities.values[_i18].id === entityId) {\n target.entity.entities.values[_i18].show = thatP.entity.entities.values[_i18]._customShow === false ? false : true;\n }\n }\n } else {\n for (var _i19 = 0; _i19 < target.entity.entities.values.length; _i19++) {\n target.entity.entities.values[_i19].show = thatP.entity.entities.values[_i19]._customShow === false ? false : true;\n }\n }\n }\n });\n }\n thatP.entity && (thatP.entity.show = true);\n case 72:\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n target.textShow = thatP.textShow;\n }\n if (thatP.label && thatP.labelShow) {\n thatP.label.entity.show = true;\n }\n return _context3.abrupt(\"break\", 120);\n case 75:\n status.P = false;\n status.D = true;\n options.show = true;\n if (thatP.type === 'layer') {\n options.layer_index = thatP.layer_index;\n }\n _context3.next = 81;\n return new thatP.constructor(sdkD, options);\n case 81:\n target = _context3.sent;\n if (thatP.onClick) {\n target.onClick = thatP.onClick;\n }\n if (thatP.onRightClick) {\n target.onRightClick = thatP.onRightClick;\n }\n if (thatP.onMouseMove) {\n target.onMouseMove = thatP.onMouseMove;\n }\n if (!(thatP.type === 'TrajectoryMotion')) {\n _context3.next = 92;\n break;\n }\n if (thatP.entity && thatP.modelShow) {\n thatP.entity.show = false;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = false;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = false;\n }\n if (thatP.TweenAnimate) {\n _state3 = thatP.state;\n if (_state3) {\n thatP.state = false;\n }\n target.setMovePositionByDistance(thatP.TweenAnimate._object.distance);\n thatP.state = _state3;\n }\n _context3.next = 97;\n break;\n case 92:\n if (!(target.type !== 'glb' && target.on)) {\n _context3.next = 96;\n break;\n }\n if (thatP.type === 'vector') {\n target.data = thatP.data;\n if (thatP.entity) {\n for (_i20 = 0; _i20 < thatP.entity.entities.values.length; _i20++) {\n thatP.entity.entities.values[_i20].show = false;\n }\n }\n }\n _context3.next = 96;\n return target.on();\n case 96:\n if (thatP.type === 'vector') {\n if (target.entity) {\n if (entityId) {\n for (_i21 = 0; _i21 < target.entity.entities.values.length; _i21++) {\n if (target.entity.entities.values[_i21].id === entityId) {\n target.entity.entities.values[_i21].show = thatP.entity.entities.values[_i21]._customShow === false ? false : true;\n }\n }\n } else {\n for (_i22 = 0; _i22 < target.entity.entities.values.length; _i22++) {\n target.entity.entities.values[_i22].show = thatP.entity.entities.values[_i22]._customShow === false ? false : true;\n }\n }\n }\n } else {\n thatP.entity && (thatP.entity.show = false);\n }\n case 97:\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = false;\n target.textShow = thatP.textShow;\n }\n if (thatP.label) {\n thatP.label.entity.show = false;\n }\n return _context3.abrupt(\"break\", 120);\n case 100:\n status.P = true;\n status.D = false;\n if (!(thatP.type === 'TrajectoryMotion')) {\n _context3.next = 108;\n break;\n }\n if (thatP.entity && thatP.modelShow && !thatP.firstPersonView) {\n thatP.entity.show = true;\n }\n if (thatP.line && thatP.lineShow) {\n thatP.line.show = true;\n }\n if (thatP.realTimeLine && thatP.realTimeRoute) {\n thatP.realTimeLine.show = true;\n }\n // if (thatP.TweenAnimate) {\n // let state = thatP.state\n // if (state) {\n // thatP.state = false\n // }\n // target.setMovePositionByDistance(thatP.TweenAnimate._object.distance)\n // thatP.state = state\n // }\n _context3.next = 117;\n break;\n case 108:\n thatP.entity && (thatP.entity.show = true);\n if (!(thatP.type === 'terrain')) {\n _context3.next = 117;\n break;\n }\n options.show = true;\n _context3.next = 113;\n return new thatP.constructor(sdkD, options);\n case 113:\n target = _context3.sent;\n if (thatP.onClick) {\n target.onClick = thatP.onClick;\n }\n if (thatP.onRightClick) {\n target.onRightClick = thatP.onRightClick;\n }\n if (thatP.onMouseMove) {\n target.onMouseMove = thatP.onMouseMove;\n }\n case 117:\n if (thatP.type === 'GroundSvg' && thatP.text) {\n thatP.text.show = thatP.textShow;\n target && (target.textShow = false);\n }\n if (thatP.label && thatP.labelShow) {\n thatP.label.entity.show = true;\n }\n return _context3.abrupt(\"break\", 120);\n case 120:\n if (!isoff) {\n statusMap.set(id, status);\n }\n case 121:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _setEvent.apply(this, arguments);\n };\n setEvent = function _setEvent2(_x6, _x7) {\n return _setEvent.apply(this, arguments);\n };\n isoff = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : false;\n entityId = _args4.length > 3 ? _args4[3] : undefined;\n if (sdkP) {\n _context4.next = 6;\n break;\n }\n return _context4.abrupt(\"return\");\n case 6:\n entityMapP = sdkP.entityMap;\n entityMapD = sdkD && sdkD.entityMap;\n if (!id) {\n _context4.next = 15;\n break;\n }\n thatP = entityMapP.get(id);\n if (!(!thatP || !thatP.show)) {\n _context4.next = 12;\n break;\n }\n return _context4.abrupt(\"return\");\n case 12:\n setEvent(id, entityId);\n _context4.next = 35;\n break;\n case 15:\n _iterator2 = _createForOfIteratorHelper(sdkP.entityMap);\n _context4.prev = 16;\n _iterator2.s();\n case 18:\n if ((_step2 = _iterator2.n()).done) {\n _context4.next = 27;\n break;\n }\n _step2$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step2.value, 2), key = _step2$value[0], _thatP = _step2$value[1];\n if (!(!_thatP || !_thatP.show)) {\n _context4.next = 24;\n break;\n }\n return _context4.abrupt(\"continue\", 25);\n case 24:\n setEvent(key, entityId);\n case 25:\n _context4.next = 18;\n break;\n case 27:\n _context4.next = 32;\n break;\n case 29:\n _context4.prev = 29;\n _context4.t0 = _context4[\"catch\"](16);\n _iterator2.e(_context4.t0);\n case 32:\n _context4.prev = 32;\n _iterator2.f();\n return _context4.finish(32);\n case 35:\n if (!isoff) {\n _context4.next = 37;\n break;\n }\n return _context4.abrupt(\"return\");\n case 37:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[16, 29, 32, 35]]);\n }));\n return _setSplitDirection.apply(this, arguments);\n}\nfunction syncEntities(entities1, entities2) {\n if (!sdkP) {\n return;\n }\n if (sdkD) {\n if (Array.isArray(entities1) || Array.isArray(entities2)) {\n entities1 = null;\n entities2 = null;\n }\n if (!entities1) {\n entities1 = sdkD.viewer.entities;\n }\n if (!entities2) {\n entities2 = sdkP.viewer.entities;\n }\n var entities2D = entities1;\n var entities3D = entities2;\n for (var i = entities2D.values.length - 1; i >= 0; i--) {\n var flag = false;\n for (var m = entities3D.values.length - 1; m >= 0; m--) {\n if (entities2D.values[i].id === entities3D.values[m].id) {\n flag = true;\n entities2D.values[i] === entities3D.values[m];\n }\n }\n if (!flag) {\n entities2D.remove(entities2D.values[i]);\n }\n }\n for (var _m = entities3D.values.length - 1; _m >= 0; _m--) {\n var _flag = false;\n for (var _i2 = entities2D.values.length - 1; _i2 >= 0; _i2--) {\n if (entities2D.values[_i2].id === entities3D.values[_m].id) {\n _flag = true;\n break;\n }\n }\n if (!_flag) {\n var entity = entities2D.add(entities3D.values[_m]);\n // if (entity.rectangle) {\n // // 设置高度,否则在某些位置无法显示,但色彩会变暗\n // entity.rectangle.height = 0\n // console.log('242342354235',entities3D.values[m])\n // }\n }\n }\n }\n}\nfunction syncDataSources(dataSources, type) {\n if (!sdkP) {\n return;\n }\n if (sdkD) {\n var dataSources2D = sdkD.viewer.dataSources;\n if (dataSources) {\n for (var i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n if (dataSources2D._dataSources[i].name === dataSources.name) {\n if (type === 'entities') {\n syncEntities(dataSources2D._dataSources[i].entities, dataSources.entities);\n }\n if (type === 'clustering') {\n dataSources2D._dataSources[i].clustering.enabled = dataSources.clustering.enabled;\n }\n }\n }\n }\n // for (let m = dataSources3D._dataSources.length - 1; m >= 0; m--) {\n // let flag = false\n // for (let i = dataSources2D._dataSources.length - 1; i >= 0; i--) {\n // console.log(dataSources2D._dataSources[i].name, dataSources3D._dataSources[m].name)\n // if (dataSources2D._dataSources[i].name === dataSources3D._dataSources[m].name) {\n // flag = true\n // break\n // }\n // }\n // if (!flag) {\n // dataSources2D.add(dataSources3D._dataSources[m])\n // }\n // }\n }\n}\nfunction syncImageryLayerAdded(layer, index) {\n sdkD.viewer.imageryLayers.addImageryProvider(layer.imageryProvider, index);\n}\nfunction syncImageryLayerMoved(layer, newindxe, oldindex) {\n var layerD;\n for (var i = 0; i < sdkD.viewer.imageryLayers._layers.length; i++) {\n if (sdkD.viewer.imageryLayers._layers[i]._id === layer._id) {\n layerD = sdkD.viewer.imageryLayers._layers[i];\n break;\n }\n }\n if (!layerD) {\n return;\n }\n // 移到最底层\n if (newindxe === 0) {\n sdkD.viewer.imageryLayers.lowerToBottom(layerD);\n }\n // 移到最高层\n else if (newindxe >= sdkD.viewer.imageryLayers._layers.length - 1) {\n sdkD.viewer.imageryLayers.raiseToTop(layerD);\n } else {\n if (newindxe < oldindex) {\n if (newindxe < sdkD.viewer.imageryLayers._layers.length - 1) {\n sdkD.viewer.imageryLayers.lower(layerD);\n }\n } else {\n sdkD.viewer.imageryLayers.raise(layerD);\n }\n }\n}\nfunction syncImageryLayerRemoved(layer, index) {\n var layerD = sdkD.viewer.imageryLayers._layers[index];\n if (!layerD) {\n return;\n }\n sdkD.viewer.imageryLayers.remove(layerD);\n}\nfunction syncImageryLayerShownOrHidden(layer, index, state) {\n var layerD = sdkD.viewer.imageryLayers._layers[index];\n if (!layerD) {\n return;\n }\n layerD.show = state;\n}\nfunction syncPrimitives(_x5) {\n return _syncPrimitives.apply(this, arguments);\n}\nfunction _syncPrimitives() {\n _syncPrimitives = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee5(primitive) {\n var primitives2D, primitives3D, i, flag, m, _m2, _flag2, _i23;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n if (sdkP) {\n _context5.next = 2;\n break;\n }\n return _context5.abrupt(\"return\");\n case 2:\n if (sdkD) {\n // await sdkD.viewer.scene.primitives.remove(primitive)\n // await sdkD.viewer.scene.primitives.add(primitive)\n primitives2D = sdkD.viewer.scene.primitives._primitives;\n primitives3D = sdkP.viewer.scene.primitives._primitives; // console.log(primitives2D, primitives3D)\n // setTimeout(() => {\n // sdkD.viewer.scene.primitives._primitives[1] = sdkP.viewer.scene.primitives._primitives[1]\n // }, 2000);\n for (i = primitives2D.length - 1; i >= 1; i--) {\n flag = false;\n for (m = primitives3D.length - 1; m >= 1; m--) {\n if (primitives3D[m].id && primitives2D[i].id && primitives3D[m].id === primitives2D[i].id) {\n flag = true;\n }\n }\n if (!flag) {\n sdkD.viewer.scene.primitives.remove(primitives2D[i]);\n }\n }\n for (_m2 = primitives3D.length - 1; _m2 >= 1; _m2--) {\n _flag2 = false;\n for (_i23 = primitives2D.length - 1; _i23 >= 1; _i23--) {\n if (primitives3D[_m2].id && primitives2D[_i23].id && primitives3D[_m2].id === primitives2D[_i23].id) {\n _flag2 = true;\n primitives2D[_i23].show = primitives3D[_m2].show;\n primitives2D[_i23].startColor = primitives3D[_m2].startColor;\n primitives2D[_i23].endColor = primitives3D[_m2].endColor;\n primitives2D[_i23].minimumSpeed = primitives3D[_m2].minimumSpeed;\n primitives2D[_i23].maximumSpeed = primitives3D[_m2].maximumSpeed;\n primitives2D[_i23].minimumParticleLife = primitives3D[_m2].minimumParticleLife;\n primitives2D[_i23].maximumParticleLife = primitives3D[_m2].maximumParticleLife;\n primitives2D[_i23].startScale = primitives3D[_m2].startScale;\n primitives2D[_i23].endScale = primitives3D[_m2].endScale;\n primitives2D[_i23].emissionRate = primitives3D[_m2].emissionRate;\n primitives2D[_i23].particleSize = primitives3D[_m2].particleSize;\n primitives2D[_i23].modelMatrix = primitives3D[_m2].modelMatrix;\n }\n }\n if (!_flag2) {\n sdkD.viewer.scene.primitives.add(primitives3D[_m2]);\n }\n }\n }\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return _syncPrimitives.apply(this, arguments);\n}\nfunction eventBind() {\n var handler0 = new Cesium.ScreenSpaceEventHandler(sdkP.viewer._element.getElementsByClassName('cesium-widget')[0]);\n handler0.setInputAction(function () {\n activeViewer = 0;\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n handler0.setInputAction(function () {\n activeViewer = 0;\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n handler0.setInputAction(function () {\n activeViewer = 0;\n }, Cesium.ScreenSpaceEventType.WHEEL);\n handlers.push(handler0);\n var distanceLegendDiv = document.getElementById('distanceLegendDiv');\n function distanceLegendDivMouseMove(e) {\n activeViewer = 0;\n }\n distanceLegendDiv.addEventListener('mousemove', distanceLegendDivMouseMove);\n handlers.push({\n destroy: function destroy() {\n distanceLegendDiv.removeEventListener('mousemove', distanceLegendDivMouseMove);\n }\n });\n var handler1 = new Cesium.ScreenSpaceEventHandler(sdkP.viewer._element.getElementsByClassName('cesium-widget')[1]);\n handler1.setInputAction(function () {\n activeViewer = 1;\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdkP);\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n handler1.setInputAction(function () {\n activeViewer = 1;\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdkP);\n }, Cesium.ScreenSpaceEventType.RIGHT_DOWN);\n handler1.setInputAction(function () {\n activeViewer = 1;\n Object(_global__WEBPACK_IMPORTED_MODULE_5__[\"closeRotateAround\"])(sdkP);\n }, Cesium.ScreenSpaceEventType.WHEEL);\n handlers.push(handler1);\n}\nfunction syncViewer() {\n var sdk = this.sdks[activeViewer];\n var sdk2;\n if (activeViewer === 0) {\n sdk2 = this.sdks[1];\n } else if (activeViewer === 1) {\n sdk2 = this.sdks[0];\n }\n var destination = sdk.viewer.camera.position;\n // if (this.sdks[0].viewer.trackedEntity) {\n // // console.log(sdk,sdk2)\n // // sdk2.viewer.camera.setView({\n // // orientation: {\n // // heading: sdk.viewer.camera.heading,\n // // pitch: sdk.viewer.camera.pitch,\n // // roll: sdk.viewer.camera.roll\n // // }\n // // })\n // // if(sdk2.viewer.trackedEntity) {\n // // sdk2.viewer.trackedEntity.position = sdk.viewer.trackedEntity.position\n // // }\n // // else {\n // // let trackedEntity = sdk2.viewer.entities.add(sdk.viewer.trackedEntity)\n // // sdk2.viewer.trackedEntity = trackedEntity\n // // }\n // // sdk2.viewer.camera.position = sdk.viewer.camera.position\n // if(!sdk.viewer.trackedEntity) {\n // let id = this.sdks[0].viewer.trackedEntity.id\n // let trackedEntity = sdk2.viewer.entities.getById(id)\n // if(trackedEntity) {\n // trackedEntity.position = this.sdks[0].viewer.trackedEntity.position\n // }\n // else {\n // trackedEntity = sdk2.viewer.entities.add(sdk.viewer.trackedEntity)\n // }\n // sdk.viewer.trackedEntity = trackedEntity\n // }\n // else {\n // sdk.viewer.trackedEntity.position = this.sdks[0].viewer.trackedEntity.position\n // }\n // let distance = Cesium.Cartesian3.distance(sdk.viewer.trackedEntity.position._value, sdk.viewer.camera.positionWC);\n // sdk2.viewer.camera.lookAt(\n // this.sdks[0].viewer.trackedEntity.position._value,\n // new Cesium.HeadingPitchRange(sdk.viewer.camera.heading, sdk.viewer.camera.pitch, distance)\n // )\n // }\n // else {\n // if(this.sdks[1].viewer.trackedEntity) {\n // this.sdks[1].viewer.entities.remove(this.sdks[1].viewer.trackedEntity)\n // this.sdks[1].viewer.trackedEntity = null\n // destination = sdk.viewer.camera.position\n // }\n // sdk2.viewer.camera.setView({\n // destination: destination,\n // orientation: {\n // heading: sdk.viewer.camera.heading,\n // pitch: sdk.viewer.camera.pitch,\n // roll: sdk.viewer.camera.roll\n // }\n // })\n // }\n\n sdk2.viewer.camera.setView({\n destination: destination,\n orientation: {\n heading: sdk.viewer.camera.heading,\n pitch: sdk.viewer.camera.pitch,\n roll: sdk.viewer.camera.roll\n }\n });\n}\nfunction getState() {\n return state;\n}\nfunction getActiveId() {\n return activeIds;\n}\nfunction setActiveId() {\n var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n // console.log('=================================')\n if (Array.isArray(ids)) {\n activeIds = ids;\n } else {\n activeIds = [ids];\n }\n if (!sdkP || !sdkD) {\n return;\n }\n var leftElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdkP.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (!ids || ids.length === 0) {\n if (leftElm && rightElm) {\n leftElm.style.display = 'none';\n rightElm.style.display = 'none';\n }\n } else {\n if (leftElm && rightElm) {\n leftElm.style.display = 'none';\n rightElm.style.display = 'none';\n var left = 0;\n var right = 0;\n for (var i = 0; i < activeIds.length; i++) {\n var status = statusMap.get(activeIds[i]);\n if (!status) {\n status = {\n P: true,\n D: false\n };\n statusMap.set(activeIds[i], status);\n }\n if (status.P) {\n left++;\n }\n if (status.D) {\n right++;\n }\n var thatP = sdkP.entityMap.get(activeIds[i]);\n // let thatD = sdkD.entityMap.get(activeIds[i])\n if (!thatP || thatP.type === 'terrain' || !thatP.show || thatP.type === 'TextBox') {\n continue;\n }\n leftElm.style.display = 'unset';\n rightElm.style.display = 'unset';\n leftElm.checked = false;\n rightElm.checked = false;\n\n // if (thatP) {\n // if (thatP.type === 'TrajectoryMotion') {\n // if (thatP.entity && (thatP.modelShow || thatP.lineShow || thatP.labelShow || thatP.realTimeRoute) && (thatP.entity.show || thatP.line.show || (thatP.label && thatP.label.entity.show) || thatP.realTimeLine.show)) {\n // leftElm.checked = true\n // }\n // }\n // else if (thatP.type === 'vector') {\n // leftElm.checked = status.P\n // }\n // else {\n // if (thatP.entity && thatP.entity.show) {\n // leftElm.checked = true\n // }\n // }\n // }\n // if (thatD) {\n // if (thatP.type === 'TrajectoryMotion') {\n // if (thatD.show && thatD.entity && (thatD.modelShow || thatD.lineShow || thatD.labelShow || thatD.realTimeRoute) && (thatD.entity.show || thatD.line.show || (thatD.label && thatD.label.entity.show) || thatD.realTimeLine.show)) {\n // rightElm.checked = true\n // }\n // }\n // else if (thatP.type === 'vector') {\n // rightElm.checked = status.D\n // }\n // else {\n // if (thatD.show) {\n // rightElm.checked = true\n // }\n // }\n // }\n }\n if (!left && !right) {\n left++;\n }\n leftElm.checked = left ? true : false;\n rightElm.checked = right ? true : false;\n }\n }\n}\nfunction syncSplitData(sdk, id, entityId) {\n if (!sdkP || !sdkD || sdk !== sdkP || !id) {\n return;\n }\n var status = statusMap.get(id);\n var thatP = sdkP.entityMap.get(id);\n var thatD = sdkD.entityMap.get(id);\n if (thatP) {\n var value;\n if (status) {\n if (status.P && status.D) {\n value = 0;\n } else {\n if (status.P) {\n value = -1;\n }\n if (status.D) {\n value = 1;\n }\n }\n } else {\n var leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (leftElm.style.display === 'none' || rightElm.style.display === 'none') {\n value = -1;\n } else {\n if (leftElm.checked && rightElm.checked) {\n value = 0;\n } else {\n if (leftElm.checked) {\n value = -1;\n }\n if (rightElm.checked) {\n value = 1;\n }\n }\n }\n }\n if (thatD) {\n thatD.options = JSON.parse(JSON.stringify(thatP.options));\n thatD.originalOptions = JSON.parse(JSON.stringify(thatP.options));\n if (thatP.oldData) {\n thatD.oldData = JSON.parse(JSON.stringify(thatP.oldData));\n }\n if (thatD.type === 'TrajectoryMotion') {\n thatD.height = thatD.options.height;\n }\n thatD.reset && thatD.reset();\n if (thatP.show) {\n setSplitDirection(value, id, false, entityId);\n } else {\n thatD.show = false;\n }\n\n // else {\n // thatD.show = false\n // }\n } else {\n var _value = -1;\n // if (thatP.show) {\n // let leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0]\n // let rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0]\n // if (leftElm.checked && rightElm.checked) {\n // value = 0\n // }\n // else {\n // if (leftElm.checked) {\n // value = -1\n // }\n // if (rightElm.checked) {\n // value = 1\n // }\n // }\n // }\n setSplitDirection(_value, id, false, entityId);\n }\n } else {\n thatD && thatD.remove();\n }\n}\nfunction setActiveViewer(v) {\n activeViewer = v;\n}\nfunction getSdk() {\n return {\n sdkP: sdkP,\n sdkD: sdkD\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL1NwbGl0U2NyZWVuL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9TcGxpdFNjcmVlbi9pbmRleC5qcz83MDhkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDliIblsY/lr7nmr5RcclxuICogKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJztcclxuaW1wb3J0IHsgQ2VzaXVtQ29udGFpbmVyLCBjbG9zZVJvdGF0ZUFyb3VuZCB9IGZyb20gJy4uL2dsb2JhbCdcclxuaW1wb3J0IHsgRmx3U3RhdHVzU3dpdGNoLCBKd3dTdGF0dXNTd2l0Y2gsIGdldEZsd1N0YXR1cywgZ2V0Snd3U3RhdHVzIH0gZnJvbSBcIi4uL2dsb2JhbFwiXHJcbmltcG9ydCB7IG9mZiBhcyBvZmZNdWx0aVZpZXdwb3J0TW9kZSB9IGZyb20gJy4uL011bHRpVmlld3BvcnRNb2RlJztcclxuaW1wb3J0IHsgTW91c2VSaWdodE1lbnUsIGdldE1vdXNlUmlnaHRNZW51U3RhdHVzIH0gZnJvbSAnLi4vbW91c2VSaWdodE1lbnUnO1xyXG5pbXBvcnQgeyBnZXRMZWZ0Q2xpY2tTdGF0ZSwgZ2V0UmlnaHRDbGlja1N0YXRlLCBnZXRNb3ZlU3RhdGUgfSBmcm9tICcuLi9DbGlja0NhbGxiYWNrJ1xyXG5pbXBvcnQgeyBvcGVuTGVmdENsaWNrLCBvcGVuUmlnaHRDbGljaywgb3Blbk1vdmUgfSBmcm9tICcuL0NsaWNrQ2FsbGJhY2snXHJcbmltcG9ydCB7IFNoZWV0SW5kZXhTdGF0dXNTd2l0Y2gsIGdldFN0YXR1cyB9IGZyb20gJy4uL1NoZWV0SW5kZXgnXHJcbmltcG9ydCB7IHJhaW4sIHNub3csIGZvZywgbmlnaHRWaXNpb24sIHNreVN0YXJyeSwgaWxsdW1pbmF0aW9uIH0gZnJvbSAnLi4vZWZmbGVjdCdcclxuXHJcblxyXG5sZXQgc3RhdGUgPSBmYWxzZVxyXG5sZXQgc2RrRCAvLyDliIblsY/lr7nosaFcclxubGV0IHNka1AgLy8g5Li75bGP5a+56LGhXHJcbmxldCBhY3RpdmVWaWV3ZXJcclxubGV0IGNvbnRyb2xWaWV3ZXJcclxubGV0IHN5bmNPYmplY3QgPSB7fVxyXG5sZXQgaGFuZGxlcnMgPSBbXVxyXG5sZXQgYWN0aXZlSWRzXHJcbmxldCBzdGF0dXNNYXAgPSBuZXcgTWFwKClcclxuLy8gd2luZG93LnN0YXR1c01hcCA9IHN0YXR1c01hcFxyXG4vLyBhc3luYyBmdW5jdGlvbiBpbml0KHNkaykge1xyXG4vLyAgIHNka1AgPSBzZGtcclxuLy8gICBhY3RpdmVWaWV3ZXIgPSAwXHJcbi8vICAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuLy8gICBsZXQgc2RrMiA9IGF3YWl0IG5ldyBZSi5ZSkVhcnRoKHNkay5kaXZfaWQpXHJcbi8vICAgc2RrMi52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lID0gJ2Nlc2l1bS12aWV3ZXIgMmQnXHJcbi8vICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbi8vICAgLy8gICBsZXQgc3dpdGNoQ2x1c3RlciA9IG5ldyBZSi5HbG9iYWwuc3dpdGNoQ2x1c3RlcihzZGsyLCB0cnVlKVxyXG4vLyAgIC8vIH0sIDUwMCk7XHJcbi8vICAgQ2VzaXVtQ29udGFpbmVyKHNkazIsIHtcclxuLy8gICAgIGNvbXBhc3M6IGZhbHNlLCAvLyDnvZfnm5hcclxuLy8gICAgIC8vIGxlZ2VuZDogZmFsc2UsIC8vIOavlOS+i+WwulxyXG4vLyAgICAgaW5mbzogZmFsc2UsIC8vIOS/oeaBr+agj1xyXG4vLyAgICAgZnJhbWU6IGZhbHNlIC8vIOWIt+aWsOeOh1xyXG4vLyAgIH0pXHJcbi8vICAgc2RrMi52aWV3ZXIuc2NlbmUubW9kZSA9IENlc2l1bS5TY2VuZU1vZGUuU0NFTkUyRFxyXG4vLyAgIHNka0QgPSBhd2FpdCBzZGsyXHJcbi8vICAgc29sdmVCdWcoKVxyXG4vLyAgIGF3YWl0IGV2ZW50QmluZChzZGssIDApXHJcbi8vICAgYXdhaXQgZXZlbnRCaW5kKHNkazIsIDEpXHJcbi8vICAgc3luY09iamVjdCA9IHsgc2RrczogW3Nkaywgc2RrMl0sIHRvb2xzIH1cclxuLy8gICBhd2FpdCBzeW5jRGF0YShzZGspXHJcbi8vICAgc2RrLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KVxyXG5cclxuLy8gICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJBZGRlZC5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZCk7XHJcbi8vICAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyTW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyTW92ZWQpO1xyXG4vLyAgIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclJlbW92ZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyUmVtb3ZlZCk7XHJcbi8vICAgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyU2hvd25PckhpZGRlbi5hZGRFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJTaG93bk9ySGlkZGVuKTtcclxuLy8gICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmNvbGxlY3Rpb25DaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0VudGl0aWVzKVxyXG4vLyAgIC8vIHNkay52aWV3ZXIuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZUFkZGVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0RhdGFTb3VyY2VzKVxyXG4vLyB9XHJcbmFzeW5jIGZ1bmN0aW9uIG9uKHNkaykge1xyXG4gIHN0YXRlID0gdHJ1ZVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaW5pdChzZGspXHJcbiAgICBvZmZNdWx0aVZpZXdwb3J0TW9kZShzZGspXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvZmYoKSB7XHJcbiAgc3RhdGUgPSBmYWxzZVxyXG4gIGlmICghc2RrUCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHNldFNwbGl0RGlyZWN0aW9uKC0xLCB1bmRlZmluZWQsIHRydWUpXHJcbiAgbGV0IHNsaWRlckVsbSA9IHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1zbGlkZXInKVswXVxyXG4gIGxldCBsZWZ0RWxtID0gc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnKVswXVxyXG4gIGxldCByaWdodEVsbSA9IHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCcpWzBdXHJcbiAgaWYgKHNsaWRlckVsbSkge1xyXG4gICAgc2RrUC52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQoc2xpZGVyRWxtKVxyXG4gICAgc2RrUC52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQobGVmdEVsbSlcclxuICAgIHNka1Audmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHJpZ2h0RWxtKVxyXG4gIH1cclxuICBzZGtQLnZpZXdlci5zY2VuZS5wcmVSZW5kZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihzeW5jVmlld2VyLCBzeW5jT2JqZWN0KVxyXG4gIHNka1Audmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJBZGRlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZCk7XHJcbiAgc2RrUC52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllck1vdmVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllck1vdmVkKTtcclxuICBzZGtQLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyUmVtb3ZlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJSZW1vdmVkKTtcclxuICBzZGtQLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyU2hvd25PckhpZGRlbi5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNJbWFnZXJ5TGF5ZXJTaG93bk9ySGlkZGVuKTtcclxuICAvLyBzZGsudmlld2VyLmVudGl0aWVzLmNvbGxlY3Rpb25DaGFuZ2VkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0VudGl0aWVzKVxyXG4gIC8vIHNkay52aWV3ZXIuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZUFkZGVkLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3luY0RhdGFTb3VyY2VzKVxyXG5cclxuICAvL3ByaW1pdGl2ZUFkZGVkPXVuZGVmaW5lZOWfuuWFg+WQjOatpeiuvue9ruWcqGFkZOS9jee9rlxyXG4gIC8vIHNkay52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5wcmltaXRpdmVBZGRlZC5yZW1vdmVFdmVudExpc3RlbmVyKHN5bmNQcmltaXRpdmVzQWRkZWQpXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgaGFuZGxlcnNbaV0uZGVzdHJveSgpXHJcbiAgfVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgICBsZXQgcmlnaHRCb3ggPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0tdmlld2VyLWNlc2l1bVdpZGdldENvbnRhaW5lcicpWzBdLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS13aWRnZXQnKVsxXVxyXG4gICAgc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXS5yZW1vdmVDaGlsZChyaWdodEJveClcclxuICAgIC8vIHNka0QuZGVzdHJveSgpXHJcbiAgICBoYW5kbGVycyA9IFtdXHJcbiAgICBzZGtEID0gbnVsbFxyXG4gICAgYWN0aXZlVmlld2VyID0gbnVsbFxyXG4gICAgc3luY09iamVjdCA9IHt9XHJcbiAgfVxyXG4gIGxldCBsZWZ0Qm94ID0gc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXdpZGdldCcpWzBdXHJcbiAgbGV0IGxlZnRDYW52YXMgPSBsZWZ0Qm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXVxyXG4gIGxlZnRCb3guc3R5bGUud2lkdGggPSAnMTAwJSdcclxuICBsZWZ0Q2FudmFzLnN0eWxlLndpZHRoID0gJzEwMCUnXHJcbiAgbGV0IGJpbGxib2FyZEF0dHJpYnV0ZUJveHMgPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiaWxsYm9hcmQtYXR0cmlidXRlLWJveCcpXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzW2ldLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcbiAgfVxyXG4gIHNka1AgPSBudWxsXHJcbn1cclxuXHJcblxyXG5hc3luYyBmdW5jdGlvbiBpbml0KHNkaykge1xyXG4gIGxldCBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdiaWxsYm9hcmQtYXR0cmlidXRlLWJveCcpXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBiaWxsYm9hcmRBdHRyaWJ1dGVCb3hzW2ldLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICB9XHJcblxyXG4gIHNkay5lbnRpdHlNYXAuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XHJcbiAgICBpZiAoaXRlbS50eXBlICYmIGl0ZW0udHlwZSA9PSAnVHJhamVjdG9yeU1vdGlvbicgJiYgaXRlbS52aWV3Rm9sbG93KSB7XHJcbiAgICAgIGl0ZW0udmlld0ZvbGxvdyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgfSlcclxuICBsZXQgc2xpZGVyRWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tc2xpZGVyJylbMF1cclxuICBsZXQgbGVmdEVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnKVswXVxyXG4gIGxldCByaWdodEVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0JylbMF1cclxuICBpZiAoc2xpZGVyRWxtKSB7XHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHNsaWRlckVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQobGVmdEVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQucmVtb3ZlQ2hpbGQocmlnaHRFbG0pXHJcbiAgfVxyXG4gIHNsaWRlckVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gIHNsaWRlckVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLXNsaWRlcidcclxuICBzbGlkZXJFbG0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXHJcbiAgc2xpZGVyRWxtLnN0eWxlLmxlZnQgPSAnNTAlJ1xyXG4gIHNsaWRlckVsbS5zdHlsZS50b3AgPSAnMHB4J1xyXG5cclxuICBsZWZ0RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICBsZWZ0RWxtLmNsYXNzTmFtZSA9ICdZSi1jdXN0b20tY2hlY2tib3gtbGVmdCdcclxuICBsZWZ0RWxtLnR5cGUgPSAnY2hlY2tib3gnXHJcbiAgbGVmdEVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICBsZWZ0RWxtLnN0eWxlLmxlZnQgPSAnY2FsYyg1MCUgLSA1MHB4KSdcclxuICByaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgcmlnaHRFbG0uY2xhc3NOYW1lID0gJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCdcclxuICByaWdodEVsbS50eXBlID0gJ2NoZWNrYm94J1xyXG4gIHJpZ2h0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gIHJpZ2h0RWxtLnN0eWxlLnJpZ2h0ID0gJ2NhbGMoNTAlIC0gNTBweCknXHJcblxyXG4gIGxlZnRFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gIHJpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuXHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5hcHBlbmRDaGlsZChsZWZ0RWxtKVxyXG4gIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRFbG0pXHJcblxyXG4gIGxldCBsZWZ0ID0gMFxyXG4gIGxldCByaWdodCA9IDBcclxuICBpZiAoYWN0aXZlSWRzKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZUlkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgdGhhdFAgPSBzZGsuZW50aXR5TWFwLmdldChhY3RpdmVJZHNbaV0pXHJcbiAgICAgIGlmICghdGhhdFAgfHwgKHRoYXRQLnR5cGUgPT09ICd0ZXJyYWluJyB8fCAhdGhhdFAuc2hvdykgfHwgdGhhdFAudHlwZSA9PT0gJ1RleHRCb3gnKSB7XHJcbiAgICAgICAgY29udGludWVcclxuICAgICAgfVxyXG4gICAgICBsZWZ0RWxtLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnXHJcbiAgICAgIHJpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnXHJcbiAgICAgIGxldCBzdGF0dXMgPSBzdGF0dXNNYXAuZ2V0KGFjdGl2ZUlkc1tpXSlcclxuICAgICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAgIGlmIChzdGF0dXMuUCkge1xyXG4gICAgICAgICAgbGVmdCsrXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMuRCkge1xyXG4gICAgICAgICAgcmlnaHQrK1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNka1AgPSBzZGtcclxuXHJcbiAgaWYgKCFsZWZ0ICYmICFyaWdodCkge1xyXG4gICAgbGVmdCsrXHJcbiAgfVxyXG4gIGxlZnRFbG0uY2hlY2tlZCA9IGxlZnQgPyB0cnVlIDogZmFsc2VcclxuICByaWdodEVsbS5jaGVja2VkID0gcmlnaHQgPyB0cnVlIDogZmFsc2VcclxuICBsZWZ0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7XHJcbiAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgaWYgKCFyaWdodEVsbS5jaGVja2VkKSB7XHJcbiAgICAgICAgcmlnaHRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHN0YXR1cyA9IHN0YXR1c01hcC5nZXQoYWN0aXZlSWRzW2ldKVxyXG4gICAgICBzdGF0dXMgPSBzdGF0dXMgfHwge31cclxuICAgICAgc3RhdHVzLlAgPSBlLnRhcmdldC5jaGVja2VkXHJcbiAgICAgIHN0YXR1cy5EID0gcmlnaHRFbG0uY2hlY2tlZFxyXG4gICAgICBzdGF0dXNNYXAuc2V0KGFjdGl2ZUlkc1tpXSwgc3RhdHVzKVxyXG4gICAgfVxyXG4gICAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoKVxyXG4gIH0pXHJcbiAgcmlnaHRFbG0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgIGlmICghZS50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICBpZiAoIWxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgIGxlZnRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHN0YXR1cyA9IHN0YXR1c01hcC5nZXQoYWN0aXZlSWRzW2ldKVxyXG4gICAgICBzdGF0dXMgPSBzdGF0dXMgfHwge31cclxuICAgICAgc3RhdHVzLlAgPSBsZWZ0RWxtLmNoZWNrZWRcclxuICAgICAgc3RhdHVzLkQgPSBlLnRhcmdldC5jaGVja2VkXHJcbiAgICAgIHN0YXR1c01hcC5zZXQoYWN0aXZlSWRzW2ldLCBzdGF0dXMpXHJcbiAgICB9XHJcbiAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgfSlcclxuXHJcbiAgc2xpZGVyRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsICgpID0+IHtcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXS5zdHlsZS5jdXJzb3IgPSAnZS1yZXNpemUnXHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgIHNsaWRlckVsbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT4ge1xyXG4gICAgICBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS12aWV3ZXItY2VzaXVtV2lkZ2V0Q29udGFpbmVyJylbMF0uc3R5bGUuY3Vyc29yID0gJ3Vuc2V0J1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5hcHBlbmRDaGlsZChzbGlkZXJFbG0pXHJcblxyXG5cclxuICBsZXQgbGVmdEJveCA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXdpZGdldCcpWzBdXHJcbiAgbGV0IGxlZnRDYW52YXMgPSBsZWZ0Qm94LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXVxyXG4gIGxlZnRCb3guc3R5bGUud2lkdGggPSAnNTAlJ1xyXG4gIGxlZnRCb3guc3R5bGUubGVmdCA9ICcwcHgnXHJcbiAgbGVmdEJveC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nXHJcbiAgbGVmdENhbnZhcy5zdHlsZS53aWR0aCA9ICcyMDAlJ1xyXG5cclxuICBhY3RpdmVWaWV3ZXIgPSAwXHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuICBzZGtEID0gYXdhaXQgbmV3IFlKLllKRWFydGgoc2RrLmRpdl9pZClcclxuICBpZiAoZ2V0TGVmdENsaWNrU3RhdGUoKSkge1xyXG4gICAgYXdhaXQgbmV3IG9wZW5MZWZ0Q2xpY2soc2RrRClcclxuICB9XHJcbiAgaWYgKGdldFJpZ2h0Q2xpY2tTdGF0ZSgpKSB7XHJcbiAgICBhd2FpdCBuZXcgb3BlblJpZ2h0Q2xpY2soc2RrRClcclxuICB9XHJcbiAgaWYgKGdldE1vdmVTdGF0ZSgpKSB7XHJcbiAgICBhd2FpdCBuZXcgb3Blbk1vdmUoc2RrRClcclxuICB9XHJcbiAgaWYgKGdldE1vdXNlUmlnaHRNZW51U3RhdHVzKHNkaykpIHtcclxuICAgIE1vdXNlUmlnaHRNZW51KHNka0QsIHRydWUpXHJcbiAgfVxyXG4gIHNka0Qudmlld2VyLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICBsZXQgcmlnaHRCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICByaWdodEJveC5jbGFzc05hbWUgPSAnY2VzaXVtLXdpZGdldCBjZXNpdW0td2lkZ2V0LXNwbGl0J1xyXG4gIHJpZ2h0Qm94LnN0eWxlLndpZHRoID0gJzUwJSdcclxuICByaWdodEJveC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICByaWdodEJveC5zdHlsZS5yaWdodCA9ICcwcHgnXHJcbiAgcmlnaHRCb3guc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xyXG4gIGxldCByaWdodENhbnZhcyA9IHNka0Qudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS12aWV3ZXItY2VzaXVtV2lkZ2V0Q29udGFpbmVyJylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdXHJcbiAgcmlnaHRDYW52YXMuc3R5bGUud2lkdGggPSAnMjAwJSdcclxuICByaWdodENhbnZhcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICByaWdodENhbnZhcy5zdHlsZS5yaWdodCA9ICcwcHgnXHJcbiAgcmlnaHRCb3guYXBwZW5kQ2hpbGQocmlnaHRDYW52YXMpXHJcbiAgc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0tdmlld2VyLWNlc2l1bVdpZGdldENvbnRhaW5lcicpWzBdLmFwcGVuZENoaWxkKHJpZ2h0Qm94KVxyXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNkay5kaXZfaWQpLnJlbW92ZUNoaWxkKHNka0Qudmlld2VyLl9lbGVtZW50KVxyXG5cclxuICBmdW5jdGlvbiBtb3VzZW1vdmUoYSkge1xyXG4gICAgaWYgKHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXSA9PT0gYS50YXJnZXQgfHxcclxuICAgICAgc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0td2lkZ2V0JylbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2NhbnZhcycpWzBdID09PSBhLnRhcmdldCB8fFxyXG4gICAgICBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS13aWRnZXQnKVsxXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0gPT09IGEudGFyZ2V0KSB7XHJcbiAgICAgIGxldCBvZmZzZXRYID0gYS5vZmZzZXRYXHJcbiAgICAgIGlmIChhLm9mZnNldFggPCA2MCkge1xyXG4gICAgICAgIG9mZnNldFggPSA2MFxyXG4gICAgICB9XHJcbiAgICAgIGlmICgoYS50YXJnZXQud2lkdGggLSBhLm9mZnNldFgpIDwgNjApIHtcclxuICAgICAgICBvZmZzZXRYID0gYS50YXJnZXQud2lkdGggLSA2MFxyXG4gICAgICB9XHJcbiAgICAgIHNsaWRlckVsbS5zdHlsZS5sZWZ0ID0gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoICogMTAwKSArICclJ1xyXG4gICAgICBsZWZ0Qm94LnN0eWxlLndpZHRoID0gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSAqIDEwMCArICclJ1xyXG4gICAgICBsZWZ0Q2FudmFzLnN0eWxlLndpZHRoID0gMTAwIC8gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSArICclJ1xyXG4gICAgICByaWdodEJveC5zdHlsZS53aWR0aCA9ICgxIC0gKG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSkgKiAxMDAgKyAnJSdcclxuICAgICAgcmlnaHRDYW52YXMuc3R5bGUud2lkdGggPSAxMDAgLyAoMSAtIChvZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCkpICsgJyUnXHJcbiAgICAgIGxlZnRFbG0uc3R5bGUubGVmdCA9IGBjYWxjKCR7KG9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoKSAqIDEwMH0lIC0gNTBweClgXHJcbiAgICAgIHJpZ2h0RWxtLnN0eWxlLnJpZ2h0ID0gYGNhbGMoJHsoMSAtIChvZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCkpICogMTAwfSUgLSA1MHB4KWBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGF3YWl0IGV2ZW50QmluZCgpXHJcbiAgc3luY09iamVjdCA9IHsgc2RrczogW3Nkaywgc2RrRF0sIHRvb2xzIH1cclxuXHJcbiAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoKVxyXG4gIC8vIGF3YWl0IHNldFNwbGl0RGlyZWN0aW9uKC0xKVxyXG4gIHNkay52aWV3ZXIuc2NlbmUucHJlUmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoc3luY1ZpZXdlciwgc3luY09iamVjdClcclxuXHJcbiAgLy8gc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmxheWVyQWRkZWQuYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyQWRkZWQpO1xyXG4gIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllck1vdmVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllck1vdmVkKTtcclxuICAvLyBzZGsudmlld2VyLmltYWdlcnlMYXllcnMubGF5ZXJSZW1vdmVkLmFkZEV2ZW50TGlzdGVuZXIoc3luY0ltYWdlcnlMYXllclJlbW92ZWQpO1xyXG4gIC8vIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5sYXllclNob3duT3JIaWRkZW4uYWRkRXZlbnRMaXN0ZW5lcihzeW5jSW1hZ2VyeUxheWVyU2hvd25PckhpZGRlbik7XHJcblxyXG4gIGlmIChnZXRGbHdTdGF0dXMoc2RrKSkge1xyXG4gICAgRmx3U3RhdHVzU3dpdGNoKHNka0QsIHRydWUpXHJcbiAgfVxyXG4gIGlmIChnZXRKd3dTdGF0dXMoc2RrKSkge1xyXG4gICAgSnd3U3RhdHVzU3dpdGNoKHNka0QsIHRydWUpXHJcbiAgfVxyXG4gIGlmIChnZXRTdGF0dXMoKSkge1xyXG4gICAgU2hlZXRJbmRleFN0YXR1c1N3aXRjaChzZGtELCB0cnVlKVxyXG4gIH1cclxuICAvLyDpm6jpm6rpm77lpJzop4bmmJ/nqbrlhYnnhadcclxuICBsZXQgc3RhZ2VzID0gc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIHN3aXRjaCAoc3RhZ2VzW2ldLm5hbWUpIHtcclxuICAgICAgY2FzZSAncmFpbic6XHJcbiAgICAgICAgcmFpbihzZGtELCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ3Nub3cnOlxyXG4gICAgICAgIHNub3coc2RrRCwgdHJ1ZSlcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlICdmb2cnOlxyXG4gICAgICAgIGZvZyhzZGtELCB0cnVlKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgJ2N6bV9uaWdodF92aXNpb24nOlxyXG4gICAgICAgIG5pZ2h0VmlzaW9uKHNka0QsIHRydWUpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgc2t5U3RhcnJ5KHNka0QsICFzZGsudmlld2VyLnNjZW5lLnNreUF0bW9zcGhlcmUuc2hvdylcclxuICBpbGx1bWluYXRpb24oc2RrRCwgc2RrLnZpZXdlci5zaGFkb3dzKVxyXG5cclxuICBmdW5jdGlvbiBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cyh2KSB7XHJcbiAgICBsZXQgdmFsdWVcclxuICAgIC8vIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkge1xyXG4gICAgLy8gICBpZiAobGVmdEVsbS5jaGVja2VkICYmIHJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgIC8vICAgICB2YWx1ZSA9IDBcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBlbHNlIHtcclxuICAgIC8vICAgICBpZiAobGVmdEVsbS5jaGVja2VkKSB7XHJcbiAgICAvLyAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGlmIChyaWdodEVsbS5jaGVja2VkKSB7XHJcbiAgICAvLyAgICAgICB2YWx1ZSA9IDFcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICB2YWx1ZSA9IHZcclxuICAgIC8vIH1cclxuICAgIGZvciAobGV0IFtrZXksIHN0YXR1c10gb2Ygc3RhdHVzTWFwKSB7XHJcbiAgICAgIGlmICghc3RhdHVzKSB7XHJcbiAgICAgICAgdmFsdWUgPSAtMVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHN0YXR1cy5QICYmIHN0YXR1cy5EKSB7XHJcbiAgICAgICAgdmFsdWUgPSAwXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHN0YXR1cy5QKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMuRCkge1xyXG4gICAgICAgICAgdmFsdWUgPSAxXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIHZhbHVlID0gdlxyXG4gICAgICAvLyB9XHJcbiAgICAgIGxldCBlbnRpdHkgPSBzZGsuZW50aXR5TWFwLmdldChrZXkpXHJcbiAgICAgIC8vIGVudGl0eSAmJiAoZW50aXR5LnNwbGl0RGlyZWN0aW9uID0gdmFsdWUpXHJcbiAgICAgIGVudGl0eSAmJiAoc2V0U3BsaXREaXJlY3Rpb24odmFsdWUsIGtleSkpXHJcbiAgICB9XHJcbiAgICAvLyBpZiAoYWN0aXZlSWRzICYmIGFjdGl2ZUlkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aXZlSWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAvLyAgICAgbGV0IGVudGl0eSA9IHNkay5lbnRpdHlNYXAuZ2V0KGFjdGl2ZUlkc1tpXSlcclxuICAgIC8vICAgICAvLyBlbnRpdHkgJiYgKGVudGl0eS5zcGxpdERpcmVjdGlvbiA9IHZhbHVlKVxyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKGVudGl0eSwgYWN0aXZlSWRzLCB2YWx1ZSlcclxuICAgIC8vICAgICBlbnRpdHkgJiYgKHNldFNwbGl0RGlyZWN0aW9uKHZhbHVlLCBlbnRpdHkub3B0aW9ucy5pZCkpXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xyXG4gICAgLy8gICAgIC8vIGl0ZW0uc3BsaXREaXJlY3Rpb24gPSB2YWx1ZVxyXG4gICAgLy8gICAgIHNldFNwbGl0RGlyZWN0aW9uKHZhbHVlLCBpdGVtLm9wdGlvbnMuaWQpXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBhc3luYyBmdW5jdGlvbiBzeW5jRGF0YShlbnRpdHlJZCkge1xyXG4vLyAgICAgaWYgKCFzZGtQKSB7XHJcbi8vICAgICAgIHJldHVyblxyXG4vLyAgICAgfVxyXG4vLyAgICAgbGV0IGVudGl0eU1hcFAgPSBzZGtQLmVudGl0eU1hcFxyXG4vLyAgICAgbGV0IGVudGl0eU1hcEQgPSAoc2RrRCAmJiBzZGtELmVudGl0eU1hcClcclxuLy8gICAgIGlmIChlbnRpdHlJZCkge1xyXG4vLyAgICAgICBsZXQgdGhhdEQgPSBlbnRpdHlNYXBELmdldChlbnRpdHlJZClcclxuLy8gICAgICAgaWYgKHRoYXREKSB7XHJcbi8vICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IDBcclxuLy8gICAgICAgICBpZih0aGF0RC5zaG93KSB7XHJcbi8vICAgICAgICAgICBkaXJlY3Rpb24gPSBcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgdGhhdEQucmVtb3ZlKClcclxuLy8gICAgICAgfVxyXG4vLyAgICAgICBzZXRTcGxpdERpcmVjdGlvbihlbnRpdHlJZClcclxuLy8gICAgIH1cclxuLy8gICAgIC8vIGVsc2Uge1xyXG4vLyAgICAgLy8gICBmb3IgKGxldCBba2V5LCB0aGF0UF0gb2Ygc2RrUC5lbnRpdHlNYXApIHtcclxuLy8gICAgIC8vICAgICBpZiAoIXRoYXRQIHx8ICF0aGF0UC5zaG93KSB7XHJcbi8vICAgICAvLyAgICAgICBjb250aW51ZVxyXG4vLyAgICAgLy8gICAgIH1cclxuLy8gICAgIC8vICAgICBlbHNlIHtcclxuLy8gICAgIC8vICAgICAgIHNldEV2ZW50KGtleSlcclxuLy8gICAgIC8vICAgICB9XHJcbi8vICAgICAvLyAgIH1cclxuLy8gICAgIC8vIH1cclxuLy8gICB9XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzZXRTcGxpdERpcmVjdGlvbih2LCBpZCwgaXNvZmYgPSBmYWxzZSwgZW50aXR5SWQpIHtcclxuICBpZiAoIXNka1ApIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuXHJcbiAgbGV0IGVudGl0eU1hcFAgPSBzZGtQLmVudGl0eU1hcFxyXG4gIGxldCBlbnRpdHlNYXBEID0gKHNka0QgJiYgc2RrRC5lbnRpdHlNYXApXHJcbiAgaWYgKGlkKSB7XHJcbiAgICBsZXQgdGhhdFAgPSBlbnRpdHlNYXBQLmdldChpZClcclxuICAgIGlmICghdGhhdFAgfHwgIXRoYXRQLnNob3cpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBzZXRFdmVudChpZCwgZW50aXR5SWQpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgZm9yIChsZXQgW2tleSwgdGhhdFBdIG9mIHNka1AuZW50aXR5TWFwKSB7XHJcbiAgICAgIGlmICghdGhhdFAgfHwgIXRoYXRQLnNob3cpIHtcclxuICAgICAgICBjb250aW51ZVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHNldEV2ZW50KGtleSwgZW50aXR5SWQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGZ1bmN0aW9uIHNldEV2ZW50KGlkLCBlbnRpdHlJZCkge1xyXG4gICAgbGV0IHN0YXR1cyA9IHt9XHJcbiAgICBsZXQgdGhhdFAgPSBlbnRpdHlNYXBQLmdldChpZClcclxuICAgIGlmICghdGhhdFAgJiYgIXRoYXRQLnNob3cpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgdGhhdEQgPSAoZW50aXR5TWFwRCAmJiBlbnRpdHlNYXBELmdldChpZCkpXHJcbiAgICBpZiAodGhhdEQpIHtcclxuICAgICAgc3dpdGNoICh2KSB7XHJcbiAgICAgICAgY2FzZSBudWxsOlxyXG4gICAgICAgIGNhc2Ugdm9pZCAwOlxyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICBjYXNlICcwJzpcclxuICAgICAgICAgIHN0YXR1cy5QID0gdHJ1ZVxyXG4gICAgICAgICAgc3RhdHVzLkQgPSB0cnVlXHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgdGhhdFAubW9kZWxTaG93ICYmICF0aGF0UC5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAucmVhbFRpbWVMaW5lICYmIHRoYXRQLnJlYWxUaW1lUm91dGUpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhhdFAuc3RhdGVcclxuICAgICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRQc3RhdGUoZmFsc2UpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoYXRELnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpXHJcbiAgICAgICAgICAgICAgdGhhdFBzdGF0ZShzdGF0ZSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZnVuY3Rpb24gdGhhdFBzdGF0ZSh2KSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAub3B0aW9ucy5zdGF0ZSA9IHZcclxuICAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGF0UC5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZClcclxuICAgICAgICAgICAgICBpZiAodGhhdFAuZWRpdE9iaikge1xyXG4gICAgICAgICAgICAgICAgdGhhdFAuZWRpdE9iai5kZXN0cm95KClcclxuICAgICAgICAgICAgICAgIHRoYXRQLmVkaXRPYmogPSBudWxsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGF0UC5Ud2VlbkFuaW1hdGUudGltZW91dClcclxuICAgICAgICAgICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRQLmxpbmVFZGl0ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRQLlR3ZWVuQW5pbWF0ZS5pc1BsYXlpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRQLlR3ZWVuQW5pbWF0ZS50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGF0UC5Ud2VlbkFuaW1hdGUucmVzdW1lKClcclxuICAgICAgICAgICAgICAgICAgICB9LCB0aGF0UC5vcHRpb25zLmRlbGF5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0UC5Ud2VlbkFuaW1hdGUuZGVsYXkodGhhdFAuZGVsYXkpLnN0YXJ0KClcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbkNhbWVyYSA9IHsgLi4udGhhdFAuc2RrLnZpZXdlci5jYW1lcmEuX3Bvc2l0aW9uIH1cclxuICAgICAgICAgICAgICAgICAgdGhhdFAuX3JlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50SWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gZm4oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXRQLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiB7IC4uLnBvc2l0aW9uQ2FtZXJhIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZzogdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwaXRjaDogdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sbDogdGhhdFAuc2RrLnZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGF0UC5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRXZlbnRJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmbilcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgdGhhdFAuVHdlZW5BbmltYXRlLnBhdXNlKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb25zID0gdGhhdFAucmVuZXdMaW5lUG9zaXRpb25zKHRoYXRQLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgIHRoYXRQLm1vZGVsTW92ZShwb3NpdGlvbnMpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGF0UC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoYXRQLmVudGl0eSAmJiAodGhhdFAuZW50aXR5LnNob3cgPSB0cnVlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLlR3ZWVuQW5pbWF0ZSAmJiAhdGhhdFAuVHdlZW5BbmltYXRlLl9pc1BhdXNlZCkge1xyXG4gICAgICAgICAgICAgIHRoYXRQLnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKHRoYXRQLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlMSAvIHRoYXRQLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlMSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnQXR0YWNrQXJyb3dPYmplY3QnIHx8IHRoYXRQLnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlICYmICF0aGF0UC5Ud2VlbkFuaW1hdGUuX2lzUGF1c2VkKSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UgLyB0aGF0UC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnR3JvdW5kU3ZnJyAmJiB0aGF0UC50ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLnRleHQuc2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICAgIHRoYXRELnRleHRTaG93ID0gdGhhdFAudGV4dFNob3dcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5sYWJlbCAmJiB0aGF0UC5sYWJlbFNob3cpIHtcclxuICAgICAgICAgICAgdGhhdFAubGFiZWxTaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELmxhYmVsKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmxhYmVsLm9wdGlvbnMuZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0RC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdEQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoYXRELnNob3cgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdEQudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmZpcnN0UGVyc29uVmlldyA9IHRoYXRQLmZpcnN0UGVyc29uVmlld1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELnR5cGUgPT09ICdFeHBsb3Npb24nKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmVudGl0eS5pbWdJbmRleCA9IHRoYXRQLmVudGl0eS5pbWdJbmRleFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgY2FzZSAnMSc6XHJcbiAgICAgICAgICBzdGF0dXMuUCA9IGZhbHNlXHJcbiAgICAgICAgICBzdGF0dXMuRCA9IHRydWVcclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnVHJhamVjdG9yeU1vdGlvbicpIHtcclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgICB0aGF0UC5saW5lICYmICh0aGF0UC5saW5lLnNob3cgPSBmYWxzZSlcclxuICAgICAgICAgICAgdGhhdFAucmVhbFRpbWVMaW5lICYmICh0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgIGlmICghZW50aXR5SWQpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5pZCA9PT0gZW50aXR5SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdQaW5jZXJBcnJvd09iamVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLlR3ZWVuQW5pbWF0ZSAmJiAhdGhhdFAuVHdlZW5BbmltYXRlLl9pc1BhdXNlZCkge1xyXG4gICAgICAgICAgICAgIHRoYXRQLnNldFNwcmVhZFByb2dyZXNzQnlUaW1lKHRoYXRQLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlMSAvIHRoYXRQLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlMSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnQXR0YWNrQXJyb3dPYmplY3QnIHx8IHRoYXRQLnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlICYmICF0aGF0UC5Ud2VlbkFuaW1hdGUuX2lzUGF1c2VkKSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAuc2V0U3ByZWFkUHJvZ3Jlc3NCeVRpbWUodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UgLyB0aGF0UC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZSAqIHRoYXRQLnNwcmVhZFRpbWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ0dyb3VuZFN2ZycgJiYgdGhhdFAudGV4dCkge1xyXG4gICAgICAgICAgICB0aGF0UC50ZXh0LnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGF0RC50ZXh0U2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAubGFiZWwpIHtcclxuICAgICAgICAgICAgdGhhdFAubGFiZWwuZW50aXR5LnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELmxhYmVsKSB7XHJcbiAgICAgICAgICAgIHRoYXRELmxhYmVsLm9wdGlvbnMuZ3JvdW5kID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0RC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdEQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICB0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0RC5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRELnR5cGUgPT09ICdUcmFqZWN0b3J5TW90aW9uJykge1xyXG4gICAgICAgICAgICB0aGF0RC5maXJzdFBlcnNvblZpZXcgPSB0aGF0UC5maXJzdFBlcnNvblZpZXdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAtMTpcclxuICAgICAgICBjYXNlICctMSc6XHJcbiAgICAgICAgICBzdGF0dXMuUCA9IHRydWVcclxuICAgICAgICAgIHN0YXR1cy5EID0gZmFsc2VcclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnVHJhamVjdG9yeU1vdGlvbicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eSAmJiB0aGF0UC5tb2RlbFNob3cgJiYgIXRoYXRQLmZpcnN0UGVyc29uVmlldykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5saW5lICYmIHRoYXRQLmxpbmVTaG93KSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAubGluZS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5yZWFsVGltZUxpbmUgJiYgdGhhdFAucmVhbFRpbWVSb3V0ZSkge1xyXG4gICAgICAgICAgICAgIHRoYXRQLnJlYWxUaW1lTGluZS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgICAgICAgLy8gICBsZXQgc3RhdGUgPSB0aGF0UC5zdGF0ZVxyXG4gICAgICAgICAgICAvLyAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhhdFAuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gICB0aGF0RC5zZXRNb3ZlUG9zaXRpb25CeURpc3RhbmNlKHRoYXRQLlR3ZWVuQW5pbWF0ZS5fb2JqZWN0LmRpc3RhbmNlKVxyXG4gICAgICAgICAgICAvLyAgIHRoYXRQLnN0YXRlID0gc3RhdGVcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRQLmVudGl0eSkge1xyXG4gICAgICAgICAgICAgIGlmIChlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkID09PSBlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0UC5lbnRpdHkgJiYgKHRoYXRQLmVudGl0eS5zaG93ID0gdHJ1ZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnR3JvdW5kU3ZnJyAmJiB0aGF0UC50ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLnRleHQuc2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICAgIHRoYXRELnRleHRTaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5sYWJlbCAmJiB0aGF0UC5sYWJlbFNob3cpIHtcclxuICAgICAgICAgICAgdGhhdFAubGFiZWwuZW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdEQubGFiZWwpIHtcclxuICAgICAgICAgICAgdGhhdEQubGFiZWwub3B0aW9ucy5ncm91bmQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICd0ZXJyYWluJykge1xyXG4gICAgICAgICAgICB0aGF0RC5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhhdEQudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgaWYgKHRoYXRELmVudGl0eSkge1xyXG4gICAgICAgICAgICAgIGlmIChlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkID09PSBlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0RC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLmlkID09PSBlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoYXRELmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgdGhhdEQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0RC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHN5bmNPYmplY3QudG9vbHMuZGVlcENvcHlPYmoodGhhdFAub3B0aW9ucylcclxuICAgICAgbGV0IHRhcmdldFxyXG4gICAgICBzd2l0Y2ggKHYpIHtcclxuICAgICAgICBjYXNlIG51bGw6XHJcbiAgICAgICAgY2FzZSB2b2lkIDA6XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgICAgc3RhdHVzLlAgPSB0cnVlXHJcbiAgICAgICAgICBzdGF0dXMuRCA9IHRydWVcclxuICAgICAgICAgIG9wdGlvbnMuc2hvdyA9IHRydWVcclxuICAgICAgICAgIGlmKHRoYXRQLnR5cGU9PT0nbGF5ZXInKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMubGF5ZXJfaW5kZXggPSB0aGF0UC5sYXllcl9pbmRleFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGFyZ2V0ID0gYXdhaXQgbmV3IHRoYXRQLmNvbnN0cnVjdG9yKHNka0QsIG9wdGlvbnMpXHJcbiAgICAgICAgICBpZiAodGhhdFAub25DbGljaykge1xyXG4gICAgICAgICAgICB0YXJnZXQub25DbGljayA9IHRoYXRQLm9uQ2xpY2tcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5vblJpZ2h0Q2xpY2spIHtcclxuICAgICAgICAgICAgdGFyZ2V0Lm9uUmlnaHRDbGljayA9IHRoYXRQLm9uUmlnaHRDbGlja1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLm9uTW91c2VNb3ZlKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5vbk1vdXNlTW92ZSA9IHRoYXRQLm9uTW91c2VNb3ZlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgdGhhdFAubW9kZWxTaG93ICYmICF0aGF0UC5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAucmVhbFRpbWVMaW5lICYmIHRoYXRQLnJlYWxUaW1lUm91dGUpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhhdFAuc3RhdGVcclxuICAgICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoYXRQLnN0YXRlID0gZmFsc2VcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpXHJcbiAgICAgICAgICAgICAgdGhhdFAuc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSAnZ2xiJyAmJiB0YXJnZXQub24pIHtcclxuICAgICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICd2ZWN0b3InKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuZGF0YSA9IHRoYXRQLmRhdGFcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lm9uKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICdFeHBsb3Npb24nKSB7XHJcbiAgICAgICAgICAgICAgdGFyZ2V0LmVudGl0eS5pbWdJbmRleCA9IHRoYXRQLmVudGl0eS5pbWdJbmRleFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gJ1BpbmNlckFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUgJiYgIXRoYXRQLlR3ZWVuQW5pbWF0ZS5faXNQYXVzZWQpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSh0aGF0UC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZTEgLyB0aGF0UC5Ud2VlbkFuaW1hdGUuX3ZhbHVlc0VuZC5kaXN0YW5jZTEgKiB0aGF0UC5zcHJlYWRUaW1lKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICdBdHRhY2tBcnJvd09iamVjdCcgfHwgdGFyZ2V0LnR5cGUgPT09ICdTdHJhaWdodEFycm93T2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUgJiYgIXRoYXRQLlR3ZWVuQW5pbWF0ZS5faXNQYXVzZWQpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRTcHJlYWRQcm9ncmVzc0J5VGltZSh0aGF0UC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSAvIHRoYXRQLlR3ZWVuQW5pbWF0ZS5fdmFsdWVzRW5kLmRpc3RhbmNlICogdGhhdFAuc3ByZWFkVGltZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICAgIHRhcmdldC5sb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHlJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5pZCA9PT0gZW50aXR5SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLnNob3cgPSB0aGF0UC5lbnRpdHkuZW50aXRpZXMudmFsdWVzW2ldLl9jdXN0b21TaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ0dyb3VuZFN2ZycgJiYgdGhhdFAudGV4dCkge1xyXG4gICAgICAgICAgICB0aGF0UC50ZXh0LnNob3cgPSB0aGF0UC50ZXh0U2hvd1xyXG4gICAgICAgICAgICB0YXJnZXQudGV4dFNob3cgPSB0aGF0UC50ZXh0U2hvd1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLmxhYmVsICYmIHRoYXRQLmxhYmVsU2hvdykge1xyXG4gICAgICAgICAgICB0aGF0UC5sYWJlbC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgICAgc3RhdHVzLlAgPSBmYWxzZVxyXG4gICAgICAgICAgc3RhdHVzLkQgPSB0cnVlXHJcbiAgICAgICAgICBvcHRpb25zLnNob3cgPSB0cnVlXHJcbiAgICAgICAgICBpZih0aGF0UC50eXBlPT09J2xheWVyJykge1xyXG4gICAgICAgICAgICBvcHRpb25zLmxheWVyX2luZGV4ID0gdGhhdFAubGF5ZXJfaW5kZXhcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRhcmdldCA9IGF3YWl0IG5ldyB0aGF0UC5jb25zdHJ1Y3RvcihzZGtELCBvcHRpb25zKVxyXG4gICAgICAgICAgaWYgKHRoYXRQLm9uQ2xpY2spIHtcclxuICAgICAgICAgICAgdGFyZ2V0Lm9uQ2xpY2sgPSB0aGF0UC5vbkNsaWNrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAub25SaWdodENsaWNrKSB7XHJcbiAgICAgICAgICAgIHRhcmdldC5vblJpZ2h0Q2xpY2sgPSB0aGF0UC5vblJpZ2h0Q2xpY2tcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5vbk1vdXNlTW92ZSkge1xyXG4gICAgICAgICAgICB0YXJnZXQub25Nb3VzZU1vdmUgPSB0aGF0UC5vbk1vdXNlTW92ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdUcmFqZWN0b3J5TW90aW9uJykge1xyXG4gICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5ICYmIHRoYXRQLm1vZGVsU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoYXRQLnJlYWxUaW1lTGluZSAmJiB0aGF0UC5yZWFsVGltZVJvdXRlKSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAucmVhbFRpbWVMaW5lLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5Ud2VlbkFuaW1hdGUpIHtcclxuICAgICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGF0UC5zdGF0ZVxyXG4gICAgICAgICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhhdFAuc3RhdGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0YXJnZXQuc2V0TW92ZVBvc2l0aW9uQnlEaXN0YW5jZSh0aGF0UC5Ud2VlbkFuaW1hdGUuX29iamVjdC5kaXN0YW5jZSlcclxuICAgICAgICAgICAgICB0aGF0UC5zdGF0ZSA9IHN0YXRlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09ICdnbGInICYmIHRhcmdldC5vbikge1xyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAndmVjdG9yJykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmRhdGEgPSB0aGF0UC5kYXRhXHJcbiAgICAgICAgICAgICAgICBpZiAodGhhdFAuZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGFyZ2V0Lm9uKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAgICAgICBpZiAodGFyZ2V0LmVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uaWQgPT09IGVudGl0eUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5zaG93ID0gdGhhdFAuZW50aXR5LmVudGl0aWVzLnZhbHVlc1tpXS5fY3VzdG9tU2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldC5lbnRpdHkuZW50aXRpZXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uc2hvdyA9IHRoYXRQLmVudGl0eS5lbnRpdGllcy52YWx1ZXNbaV0uX2N1c3RvbVNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IGZhbHNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoYXRQLnR5cGUgPT09ICdHcm91bmRTdmcnICYmIHRoYXRQLnRleHQpIHtcclxuICAgICAgICAgICAgdGhhdFAudGV4dC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgICAgdGFyZ2V0LnRleHRTaG93ID0gdGhhdFAudGV4dFNob3dcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC5sYWJlbCkge1xyXG4gICAgICAgICAgICB0aGF0UC5sYWJlbC5lbnRpdHkuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgLTE6XHJcbiAgICAgICAgY2FzZSAnLTEnOlxyXG4gICAgICAgICAgc3RhdHVzLlAgPSB0cnVlXHJcbiAgICAgICAgICBzdGF0dXMuRCA9IGZhbHNlXHJcbiAgICAgICAgICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgdGhhdFAubW9kZWxTaG93ICYmICF0aGF0UC5maXJzdFBlcnNvblZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAubGluZSAmJiB0aGF0UC5saW5lU2hvdykge1xyXG4gICAgICAgICAgICAgIHRoYXRQLmxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhhdFAucmVhbFRpbWVMaW5lICYmIHRoYXRQLnJlYWxUaW1lUm91dGUpIHtcclxuICAgICAgICAgICAgICB0aGF0UC5yZWFsVGltZUxpbmUuc2hvdyA9IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiAodGhhdFAuVHdlZW5BbmltYXRlKSB7XHJcbiAgICAgICAgICAgIC8vICAgbGV0IHN0YXRlID0gdGhhdFAuc3RhdGVcclxuICAgICAgICAgICAgLy8gICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoYXRQLnN0YXRlID0gZmFsc2VcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vICAgdGFyZ2V0LnNldE1vdmVQb3NpdGlvbkJ5RGlzdGFuY2UodGhhdFAuVHdlZW5BbmltYXRlLl9vYmplY3QuZGlzdGFuY2UpXHJcbiAgICAgICAgICAgIC8vICAgdGhhdFAuc3RhdGUgPSBzdGF0ZVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhhdFAuZW50aXR5ICYmICh0aGF0UC5lbnRpdHkuc2hvdyA9IHRydWUpXHJcbiAgICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAndGVycmFpbicpIHtcclxuICAgICAgICAgICAgICBvcHRpb25zLnNob3cgPSB0cnVlXHJcbiAgICAgICAgICAgICAgdGFyZ2V0ID0gYXdhaXQgbmV3IHRoYXRQLmNvbnN0cnVjdG9yKHNka0QsIG9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgaWYgKHRoYXRQLm9uQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5vbkNsaWNrID0gdGhhdFAub25DbGlja1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhhdFAub25SaWdodENsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQub25SaWdodENsaWNrID0gdGhhdFAub25SaWdodENsaWNrXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGF0UC5vbk1vdXNlTW92ZSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Lm9uTW91c2VNb3ZlID0gdGhhdFAub25Nb3VzZU1vdmVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGF0UC50eXBlID09PSAnR3JvdW5kU3ZnJyAmJiB0aGF0UC50ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLnRleHQuc2hvdyA9IHRoYXRQLnRleHRTaG93XHJcbiAgICAgICAgICAgIHRhcmdldCAmJiAodGFyZ2V0LnRleHRTaG93ID0gZmFsc2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhhdFAubGFiZWwgJiYgdGhhdFAubGFiZWxTaG93KSB7XHJcbiAgICAgICAgICAgIHRoYXRQLmxhYmVsLmVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNvZmYpIHtcclxuICAgICAgc3RhdHVzTWFwLnNldChpZCwgc3RhdHVzKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzb2ZmKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgLy8gbGV0IGxlZnRFbG0gPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtbGVmdCcpWzBdXHJcbiAgLy8gbGV0IHJpZ2h0RWxtID0gc2RrUC52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0JylbMF1cclxuICAvLyBpZiAobGVmdEVsbSAmJiByaWdodEVsbSkge1xyXG4gIC8vICAgc3dpdGNoICh2KSB7XHJcbiAgLy8gICAgIGNhc2UgbnVsbDpcclxuICAvLyAgICAgY2FzZSB2b2lkIDA6XHJcbiAgLy8gICAgIGNhc2UgMDpcclxuICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgLy8gICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gIC8vICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgLy8gICAgICAgYnJlYWtcclxuICAvLyAgICAgY2FzZSAxOlxyXG4gIC8vICAgICBjYXNlICcxJzpcclxuICAvLyAgICAgICBsZWZ0RWxtLmNoZWNrZWQgPSBmYWxzZVxyXG4gIC8vICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgLy8gICAgICAgYnJlYWtcclxuICAvLyAgICAgY2FzZSAtMTpcclxuICAvLyAgICAgY2FzZSAnLTEnOlxyXG4gIC8vICAgICAgIGxlZnRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAvLyAgICAgICByaWdodEVsbS5jaGVja2VkID0gZmFsc2VcclxuICAvLyAgICAgICBicmVha1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN5bmNFbnRpdGllcyhlbnRpdGllczEsIGVudGl0aWVzMikge1xyXG4gIGlmICghc2RrUCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlbnRpdGllczEpIHx8IEFycmF5LmlzQXJyYXkoZW50aXRpZXMyKSkge1xyXG4gICAgICBlbnRpdGllczEgPSBudWxsXHJcbiAgICAgIGVudGl0aWVzMiA9IG51bGxcclxuICAgIH1cclxuICAgIGlmICghZW50aXRpZXMxKSB7XHJcbiAgICAgIGVudGl0aWVzMSA9IHNka0Qudmlld2VyLmVudGl0aWVzXHJcbiAgICB9XHJcbiAgICBpZiAoIWVudGl0aWVzMikge1xyXG4gICAgICBlbnRpdGllczIgPSBzZGtQLnZpZXdlci5lbnRpdGllc1xyXG4gICAgfVxyXG4gICAgbGV0IGVudGl0aWVzMkQgPSBlbnRpdGllczFcclxuICAgIGxldCBlbnRpdGllczNEID0gZW50aXRpZXMyXHJcbiAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgZW50aXRpZXMyRC52YWx1ZXNbaV0gPT09IGVudGl0aWVzM0QudmFsdWVzW21dXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgIGVudGl0aWVzMkQucmVtb3ZlKGVudGl0aWVzMkQudmFsdWVzW2ldKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBtID0gZW50aXRpZXMzRC52YWx1ZXMubGVuZ3RoIC0gMTsgbSA+PSAwOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gZW50aXRpZXMyRC52YWx1ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBpZiAoZW50aXRpZXMyRC52YWx1ZXNbaV0uaWQgPT09IGVudGl0aWVzM0QudmFsdWVzW21dLmlkKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmbGFnKSB7XHJcbiAgICAgICAgbGV0IGVudGl0eSA9IGVudGl0aWVzMkQuYWRkKGVudGl0aWVzM0QudmFsdWVzW21dKVxyXG4gICAgICAgIC8vIGlmIChlbnRpdHkucmVjdGFuZ2xlKSB7XHJcbiAgICAgICAgLy8gICAvLyDorr7nva7pq5jluqbvvIzlkKbliJnlnKjmn5DkupvkvY3nva7ml6Dms5XmmL7npLrvvIzkvYboibLlvankvJrlj5jmmpdcclxuICAgICAgICAvLyAgIGVudGl0eS5yZWN0YW5nbGUuaGVpZ2h0ID0gMFxyXG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJzI0MjM0MjM1NDIzNScsZW50aXRpZXMzRC52YWx1ZXNbbV0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNEYXRhU291cmNlcyhkYXRhU291cmNlcywgdHlwZSkge1xyXG4gIGlmICghc2RrUCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGlmIChzZGtEKSB7XHJcbiAgICBsZXQgZGF0YVNvdXJjZXMyRCA9IHNka0Qudmlld2VyLmRhdGFTb3VyY2VzXHJcbiAgICBpZiAoZGF0YVNvdXJjZXMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgaWYgKGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLm5hbWUgPT09IGRhdGFTb3VyY2VzLm5hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlID09PSAnZW50aXRpZXMnKSB7XHJcbiAgICAgICAgICAgIHN5bmNFbnRpdGllcyhkYXRhU291cmNlczJELl9kYXRhU291cmNlc1tpXS5lbnRpdGllcywgZGF0YVNvdXJjZXMuZW50aXRpZXMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NsdXN0ZXJpbmcnKSB7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzW2ldLmNsdXN0ZXJpbmcuZW5hYmxlZCA9IGRhdGFTb3VyY2VzLmNsdXN0ZXJpbmcuZW5hYmxlZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gZm9yIChsZXQgbSA9IGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IG0gPj0gMDsgbS0tKSB7XHJcbiAgICAvLyAgIGxldCBmbGFnID0gZmFsc2VcclxuICAgIC8vICAgZm9yIChsZXQgaSA9IGRhdGFTb3VyY2VzMkQuX2RhdGFTb3VyY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAvLyAgICAgY29uc29sZS5sb2coZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSwgZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSlcclxuICAgIC8vICAgICBpZiAoZGF0YVNvdXJjZXMyRC5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gZGF0YVNvdXJjZXMzRC5fZGF0YVNvdXJjZXNbbV0ubmFtZSkge1xyXG4gICAgLy8gICAgICAgZmxhZyA9IHRydWVcclxuICAgIC8vICAgICAgIGJyZWFrXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICghZmxhZykge1xyXG4gICAgLy8gICAgIGRhdGFTb3VyY2VzMkQuYWRkKGRhdGFTb3VyY2VzM0QuX2RhdGFTb3VyY2VzW21dKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNJbWFnZXJ5TGF5ZXJBZGRlZChsYXllciwgaW5kZXgpIHtcclxuICBzZGtELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLmFkZEltYWdlcnlQcm92aWRlcihsYXllci5pbWFnZXJ5UHJvdmlkZXIsIGluZGV4KVxyXG59XHJcbmZ1bmN0aW9uIHN5bmNJbWFnZXJ5TGF5ZXJNb3ZlZChsYXllciwgbmV3aW5keGUsIG9sZGluZGV4KSB7XHJcbiAgbGV0IGxheWVyRFxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pZCA9PT0gbGF5ZXIuX2lkKSB7XHJcbiAgICAgIGxheWVyRCA9IHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoIWxheWVyRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIC8vIOenu+WIsOacgOW6leWxglxyXG4gIGlmIChuZXdpbmR4ZSA9PT0gMCkge1xyXG4gICAgc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5sb3dlclRvQm90dG9tKGxheWVyRClcclxuICB9XHJcbiAgLy8g56e75Yiw5pyA6auY5bGCXHJcbiAgZWxzZSBpZiAobmV3aW5keGUgPj0gc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aCAtIDEpIHtcclxuICAgIHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMucmFpc2VUb1RvcChsYXllckQpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKG5ld2luZHhlIDwgb2xkaW5kZXgpIHtcclxuICAgICAgaWYobmV3aW5keGU8c2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aC0xKSB7XHJcbiAgICAgICAgc2RrRC52aWV3ZXIuaW1hZ2VyeUxheWVycy5sb3dlcihsYXllckQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzZGtELnZpZXdlci5pbWFnZXJ5TGF5ZXJzLnJhaXNlKGxheWVyRClcclxuICAgIH1cclxuICB9XHJcbn1cclxuZnVuY3Rpb24gc3luY0ltYWdlcnlMYXllclJlbW92ZWQobGF5ZXIsIGluZGV4KSB7XHJcbiAgbGV0IGxheWVyRCA9IHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpbmRleF1cclxuICBpZiAoIWxheWVyRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMucmVtb3ZlKGxheWVyRClcclxufVxyXG5mdW5jdGlvbiBzeW5jSW1hZ2VyeUxheWVyU2hvd25PckhpZGRlbihsYXllciwgaW5kZXgsIHN0YXRlKSB7XHJcbiAgbGV0IGxheWVyRCA9IHNka0Qudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpbmRleF1cclxuICBpZiAoIWxheWVyRCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxheWVyRC5zaG93ID0gc3RhdGVcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc3luY1ByaW1pdGl2ZXMocHJpbWl0aXZlKSB7XHJcbiAgaWYgKCFzZGtQKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgaWYgKHNka0QpIHtcclxuICAgIC8vIGF3YWl0IHNka0Qudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHByaW1pdGl2ZSlcclxuICAgIC8vIGF3YWl0IHNka0Qudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHByaW1pdGl2ZSlcclxuICAgIGxldCBwcmltaXRpdmVzMkQgPSBzZGtELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLl9wcmltaXRpdmVzXHJcbiAgICBsZXQgcHJpbWl0aXZlczNEID0gc2RrUC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1xyXG4gICAgLy8gY29uc29sZS5sb2cocHJpbWl0aXZlczJELCBwcmltaXRpdmVzM0QpXHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgc2RrRC52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5fcHJpbWl0aXZlc1sxXSA9IHNka1Audmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuX3ByaW1pdGl2ZXNbMV1cclxuICAgIC8vIH0sIDIwMDApO1xyXG4gICAgZm9yIChsZXQgaSA9IHByaW1pdGl2ZXMyRC5sZW5ndGggLSAxOyBpID49IDE7IGktLSkge1xyXG4gICAgICBsZXQgZmxhZyA9IGZhbHNlXHJcbiAgICAgIGZvciAobGV0IG0gPSBwcmltaXRpdmVzM0QubGVuZ3RoIC0gMTsgbSA+PSAxOyBtLS0pIHtcclxuICAgICAgICBpZiAocHJpbWl0aXZlczNEW21dLmlkICYmIHByaW1pdGl2ZXMyRFtpXS5pZCAmJiAocHJpbWl0aXZlczNEW21dLmlkID09PSBwcmltaXRpdmVzMkRbaV0uaWQpKSB7XHJcbiAgICAgICAgICBmbGFnID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICBzZGtELnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZShwcmltaXRpdmVzMkRbaV0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAobGV0IG0gPSBwcmltaXRpdmVzM0QubGVuZ3RoIC0gMTsgbSA+PSAxOyBtLS0pIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZVxyXG4gICAgICBmb3IgKGxldCBpID0gcHJpbWl0aXZlczJELmxlbmd0aCAtIDE7IGkgPj0gMTsgaS0tKSB7XHJcbiAgICAgICAgaWYgKHByaW1pdGl2ZXMzRFttXS5pZCAmJiBwcmltaXRpdmVzMkRbaV0uaWQgJiYgKHByaW1pdGl2ZXMzRFttXS5pZCA9PT0gcHJpbWl0aXZlczJEW2ldLmlkKSkge1xyXG4gICAgICAgICAgZmxhZyA9IHRydWVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zaG93ID0gcHJpbWl0aXZlczNEW21dLnNob3dcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5zdGFydENvbG9yID0gcHJpbWl0aXZlczNEW21dLnN0YXJ0Q29sb3JcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbmRDb2xvciA9IHByaW1pdGl2ZXMzRFttXS5lbmRDb2xvclxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1pbmltdW1TcGVlZCA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtU3BlZWRcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5tYXhpbXVtU3BlZWQgPSBwcmltaXRpdmVzM0RbbV0ubWF4aW11bVNwZWVkXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWluaW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5taW5pbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ubWF4aW11bVBhcnRpY2xlTGlmZSA9IHByaW1pdGl2ZXMzRFttXS5tYXhpbXVtUGFydGljbGVMaWZlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uc3RhcnRTY2FsZSA9IHByaW1pdGl2ZXMzRFttXS5zdGFydFNjYWxlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0uZW5kU2NhbGUgPSBwcmltaXRpdmVzM0RbbV0uZW5kU2NhbGVcclxuICAgICAgICAgIHByaW1pdGl2ZXMyRFtpXS5lbWlzc2lvblJhdGUgPSBwcmltaXRpdmVzM0RbbV0uZW1pc3Npb25SYXRlXHJcbiAgICAgICAgICBwcmltaXRpdmVzMkRbaV0ucGFydGljbGVTaXplID0gcHJpbWl0aXZlczNEW21dLnBhcnRpY2xlU2l6ZVxyXG4gICAgICAgICAgcHJpbWl0aXZlczJEW2ldLm1vZGVsTWF0cml4ID0gcHJpbWl0aXZlczNEW21dLm1vZGVsTWF0cml4XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmxhZykge1xyXG4gICAgICAgIHNka0Qudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHByaW1pdGl2ZXMzRFttXSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZXZlbnRCaW5kKCkge1xyXG4gIGxldCBoYW5kbGVyMCA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIoXHJcbiAgICBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0td2lkZ2V0JylbMF1cclxuICApXHJcbiAgaGFuZGxlcjAuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gMFxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0RPV04pXHJcbiAgaGFuZGxlcjAuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gMFxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5SSUdIVF9ET1dOKVxyXG4gIGhhbmRsZXIwLnNldElucHV0QWN0aW9uKCgpID0+IHtcclxuICAgIGFjdGl2ZVZpZXdlciA9IDBcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuV0hFRUwpXHJcbiAgaGFuZGxlcnMucHVzaChoYW5kbGVyMClcclxuXHJcbiAgbGV0IGRpc3RhbmNlTGVnZW5kRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpc3RhbmNlTGVnZW5kRGl2JylcclxuICBmdW5jdGlvbiBkaXN0YW5jZUxlZ2VuZERpdk1vdXNlTW92ZShlKSB7XHJcbiAgICBhY3RpdmVWaWV3ZXIgPSAwXHJcbiAgfVxyXG4gIGRpc3RhbmNlTGVnZW5kRGl2LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGRpc3RhbmNlTGVnZW5kRGl2TW91c2VNb3ZlKVxyXG4gIGhhbmRsZXJzLnB1c2goe1xyXG4gICAgZGVzdHJveTogKCkgPT4ge1xyXG4gICAgICBkaXN0YW5jZUxlZ2VuZERpdi5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBkaXN0YW5jZUxlZ2VuZERpdk1vdXNlTW92ZSlcclxuICAgIH1cclxuICB9KVxyXG5cclxuXHJcbiAgbGV0IGhhbmRsZXIxID0gbmV3IENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50SGFuZGxlcihcclxuICAgIHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS13aWRnZXQnKVsxXVxyXG4gIClcclxuICBoYW5kbGVyMS5zZXRJbnB1dEFjdGlvbigoKSA9PiB7XHJcbiAgICBhY3RpdmVWaWV3ZXIgPSAxXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZChzZGtQKVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0RPV04pXHJcbiAgaGFuZGxlcjEuc2V0SW5wdXRBY3Rpb24oKCkgPT4ge1xyXG4gICAgYWN0aXZlVmlld2VyID0gMVxyXG4gICAgY2xvc2VSb3RhdGVBcm91bmQoc2RrUClcclxuICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuUklHSFRfRE9XTilcclxuICBoYW5kbGVyMS5zZXRJbnB1dEFjdGlvbigoKSA9PiB7XHJcbiAgICBhY3RpdmVWaWV3ZXIgPSAxXHJcbiAgICBjbG9zZVJvdGF0ZUFyb3VuZChzZGtQKVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5XSEVFTClcclxuICBoYW5kbGVycy5wdXNoKGhhbmRsZXIxKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzeW5jVmlld2VyKCkge1xyXG4gIGxldCBzZGsgPSB0aGlzLnNka3NbYWN0aXZlVmlld2VyXVxyXG4gIGxldCBzZGsyXHJcbiAgaWYgKGFjdGl2ZVZpZXdlciA9PT0gMCkge1xyXG4gICAgc2RrMiA9IHRoaXMuc2Rrc1sxXVxyXG4gIH1cclxuICBlbHNlIGlmIChhY3RpdmVWaWV3ZXIgPT09IDEpIHtcclxuICAgIHNkazIgPSB0aGlzLnNka3NbMF1cclxuICB9XHJcbiAgbGV0IGRlc3RpbmF0aW9uID0gc2RrLnZpZXdlci5jYW1lcmEucG9zaXRpb25cclxuICAvLyBpZiAodGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAvLyBjb25zb2xlLmxvZyhzZGssc2RrMilcclxuICAvLyAgIC8vIHNkazIudmlld2VyLmNhbWVyYS5zZXRWaWV3KHtcclxuICAvLyAgIC8vICAgb3JpZW50YXRpb246IHtcclxuICAvLyAgIC8vICAgICBoZWFkaW5nOiBzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gIC8vICAgLy8gICAgIHBpdGNoOiBzZGsudmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAvLyAgIC8vICAgICByb2xsOiBzZGsudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgLy8gICAvLyAgIH1cclxuICAvLyAgIC8vIH0pXHJcbiAgLy8gICAvLyBpZihzZGsyLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAvLyAgIHNkazIudmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb24gPSBzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb25cclxuICAvLyAgIC8vIH1cclxuICAvLyAgIC8vIGVsc2Uge1xyXG4gIC8vICAgLy8gICBsZXQgdHJhY2tlZEVudGl0eSA9IHNkazIudmlld2VyLmVudGl0aWVzLmFkZChzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpXHJcbiAgLy8gICAvLyAgIHNkazIudmlld2VyLnRyYWNrZWRFbnRpdHkgPSB0cmFja2VkRW50aXR5XHJcbiAgLy8gICAvLyB9XHJcbiAgLy8gICAvLyBzZGsyLnZpZXdlci5jYW1lcmEucG9zaXRpb24gPSBzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvblxyXG4gIC8vICAgaWYoIXNkay52aWV3ZXIudHJhY2tlZEVudGl0eSkge1xyXG4gIC8vICAgICBsZXQgaWQgPSB0aGlzLnNka3NbMF0udmlld2VyLnRyYWNrZWRFbnRpdHkuaWRcclxuICAvLyAgICAgbGV0IHRyYWNrZWRFbnRpdHkgPSBzZGsyLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKGlkKVxyXG4gIC8vICAgICBpZih0cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAgICAgdHJhY2tlZEVudGl0eS5wb3NpdGlvbiA9IHRoaXMuc2Rrc1swXS52aWV3ZXIudHJhY2tlZEVudGl0eS5wb3NpdGlvblxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGVsc2Uge1xyXG4gIC8vICAgICAgIHRyYWNrZWRFbnRpdHkgPSBzZGsyLnZpZXdlci5lbnRpdGllcy5hZGQoc2RrLnZpZXdlci50cmFja2VkRW50aXR5KVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHNkay52aWV3ZXIudHJhY2tlZEVudGl0eSA9IHRyYWNrZWRFbnRpdHlcclxuICAvLyAgIH1cclxuICAvLyAgIGVsc2Uge1xyXG4gIC8vICAgICBzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb24gPSB0aGlzLnNka3NbMF0udmlld2VyLnRyYWNrZWRFbnRpdHkucG9zaXRpb25cclxuICAvLyAgIH1cclxuICAvLyAgIGxldCBkaXN0YW5jZSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHNkay52aWV3ZXIudHJhY2tlZEVudGl0eS5wb3NpdGlvbi5fdmFsdWUsIHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uV0MpO1xyXG4gIC8vICAgc2RrMi52aWV3ZXIuY2FtZXJhLmxvb2tBdChcclxuICAvLyAgICAgdGhpcy5zZGtzWzBdLnZpZXdlci50cmFja2VkRW50aXR5LnBvc2l0aW9uLl92YWx1ZSxcclxuICAvLyAgICAgbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSYW5nZShzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLCBzZGsudmlld2VyLmNhbWVyYS5waXRjaCwgZGlzdGFuY2UpXHJcbiAgLy8gICApXHJcbiAgLy8gfVxyXG4gIC8vIGVsc2Uge1xyXG4gIC8vICAgaWYodGhpcy5zZGtzWzFdLnZpZXdlci50cmFja2VkRW50aXR5KSB7XHJcbiAgLy8gICAgIHRoaXMuc2Rrc1sxXS52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuc2Rrc1sxXS52aWV3ZXIudHJhY2tlZEVudGl0eSlcclxuICAvLyAgICAgdGhpcy5zZGtzWzFdLnZpZXdlci50cmFja2VkRW50aXR5ID0gbnVsbFxyXG4gIC8vICAgICBkZXN0aW5hdGlvbiA9IHNkay52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uXHJcbiAgLy8gICB9XHJcbiAgLy8gICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgLy8gICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAvLyAgICAgb3JpZW50YXRpb246IHtcclxuICAvLyAgICAgICBoZWFkaW5nOiBzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gIC8vICAgICAgIHBpdGNoOiBzZGsudmlld2VyLmNhbWVyYS5waXRjaCxcclxuICAvLyAgICAgICByb2xsOiBzZGsudmlld2VyLmNhbWVyYS5yb2xsXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICBzZGsyLnZpZXdlci5jYW1lcmEuc2V0Vmlldyh7XHJcbiAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sXHJcbiAgICBvcmllbnRhdGlvbjoge1xyXG4gICAgICBoZWFkaW5nOiBzZGsudmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgICBwaXRjaDogc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgIHJvbGw6IHNkay52aWV3ZXIuY2FtZXJhLnJvbGxcclxuICAgIH1cclxuICB9KVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XHJcbiAgcmV0dXJuIHN0YXRlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEFjdGl2ZUlkKCkge1xyXG4gIHJldHVybiBhY3RpdmVJZHNcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0QWN0aXZlSWQoaWRzID0gW10pIHtcclxuICAvLyBjb25zb2xlLmxvZygnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09JylcclxuICBpZiAoQXJyYXkuaXNBcnJheShpZHMpKSB7XHJcbiAgICBhY3RpdmVJZHMgPSBpZHNcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBhY3RpdmVJZHMgPSBbaWRzXVxyXG4gIH1cclxuICBpZiAoIXNka1AgfHwgIXNka0QpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgbGVmdEVsbSA9IHNka1Audmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICBsZXQgcmlnaHRFbG0gPSBzZGtQLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtcmlnaHQnKVswXVxyXG4gIGlmICghaWRzIHx8IGlkcy5sZW5ndGggPT09IDApIHtcclxuICAgIGlmIChsZWZ0RWxtICYmIHJpZ2h0RWxtKSB7XHJcbiAgICAgIGxlZnRFbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgICByaWdodEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgaWYgKGxlZnRFbG0gJiYgcmlnaHRFbG0pIHtcclxuICAgICAgbGVmdEVsbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgIHJpZ2h0RWxtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcclxuICAgICAgbGV0IGxlZnQgPSAwXHJcbiAgICAgIGxldCByaWdodCA9IDBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3RpdmVJZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc3RhdHVzID0gc3RhdHVzTWFwLmdldChhY3RpdmVJZHNbaV0pXHJcbiAgICAgICAgaWYgKCFzdGF0dXMpIHtcclxuICAgICAgICAgIHN0YXR1cyA9IHsgUDogdHJ1ZSwgRDogZmFsc2UgfVxyXG4gICAgICAgICAgc3RhdHVzTWFwLnNldChhY3RpdmVJZHNbaV0sIHN0YXR1cylcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0YXR1cy5QKSB7XHJcbiAgICAgICAgICBsZWZ0KytcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0YXR1cy5EKSB7XHJcbiAgICAgICAgICByaWdodCsrXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IHRoYXRQID0gc2RrUC5lbnRpdHlNYXAuZ2V0KGFjdGl2ZUlkc1tpXSlcclxuICAgICAgICAvLyBsZXQgdGhhdEQgPSBzZGtELmVudGl0eU1hcC5nZXQoYWN0aXZlSWRzW2ldKVxyXG4gICAgICAgIGlmICghdGhhdFAgfHwgKHRoYXRQLnR5cGUgPT09ICd0ZXJyYWluJyB8fCAhdGhhdFAuc2hvdykgfHwgdGhhdFAudHlwZSA9PT0gJ1RleHRCb3gnKSB7XHJcbiAgICAgICAgICBjb250aW51ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZWZ0RWxtLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnXHJcbiAgICAgICAgcmlnaHRFbG0uc3R5bGUuZGlzcGxheSA9ICd1bnNldCdcclxuICAgICAgICBsZWZ0RWxtLmNoZWNrZWQgPSBmYWxzZVxyXG4gICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSBmYWxzZVxyXG5cclxuXHJcbiAgICAgICAgLy8gaWYgKHRoYXRQKSB7XHJcbiAgICAgICAgLy8gICBpZiAodGhhdFAudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGF0UC5lbnRpdHkgJiYgKHRoYXRQLm1vZGVsU2hvdyB8fCB0aGF0UC5saW5lU2hvdyB8fCB0aGF0UC5sYWJlbFNob3cgfHwgdGhhdFAucmVhbFRpbWVSb3V0ZSkgJiYgKHRoYXRQLmVudGl0eS5zaG93IHx8IHRoYXRQLmxpbmUuc2hvdyB8fCAodGhhdFAubGFiZWwgJiYgdGhhdFAubGFiZWwuZW50aXR5LnNob3cpIHx8IHRoYXRQLnJlYWxUaW1lTGluZS5zaG93KSkge1xyXG4gICAgICAgIC8vICAgICAgIGxlZnRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgZWxzZSBpZiAodGhhdFAudHlwZSA9PT0gJ3ZlY3RvcicpIHtcclxuICAgICAgICAvLyAgICAgbGVmdEVsbS5jaGVja2VkID0gc3RhdHVzLlBcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICBpZiAodGhhdFAuZW50aXR5ICYmIHRoYXRQLmVudGl0eS5zaG93KSB7XHJcbiAgICAgICAgLy8gICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmICh0aGF0RCkge1xyXG4gICAgICAgIC8vICAgaWYgKHRoYXRQLnR5cGUgPT09ICdUcmFqZWN0b3J5TW90aW9uJykge1xyXG4gICAgICAgIC8vICAgICBpZiAodGhhdEQuc2hvdyAmJiB0aGF0RC5lbnRpdHkgJiYgKHRoYXRELm1vZGVsU2hvdyB8fCB0aGF0RC5saW5lU2hvdyB8fCB0aGF0RC5sYWJlbFNob3cgfHwgdGhhdEQucmVhbFRpbWVSb3V0ZSkgJiYgKHRoYXRELmVudGl0eS5zaG93IHx8IHRoYXRELmxpbmUuc2hvdyB8fCAodGhhdEQubGFiZWwgJiYgdGhhdEQubGFiZWwuZW50aXR5LnNob3cpIHx8IHRoYXRELnJlYWxUaW1lTGluZS5zaG93KSkge1xyXG4gICAgICAgIC8vICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyAgIGVsc2UgaWYgKHRoYXRQLnR5cGUgPT09ICd2ZWN0b3InKSB7XHJcbiAgICAgICAgLy8gICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSBzdGF0dXMuRFxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vICAgZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIGlmICh0aGF0RC5zaG93KSB7XHJcbiAgICAgICAgLy8gICAgICAgcmlnaHRFbG0uY2hlY2tlZCA9IHRydWVcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWxlZnQgJiYgIXJpZ2h0KSB7XHJcbiAgICAgICAgbGVmdCsrXHJcbiAgICAgIH1cclxuICAgICAgbGVmdEVsbS5jaGVja2VkID0gbGVmdCA/IHRydWUgOiBmYWxzZVxyXG4gICAgICByaWdodEVsbS5jaGVja2VkID0gcmlnaHQgPyB0cnVlIDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN5bmNTcGxpdERhdGEoc2RrLCBpZCwgZW50aXR5SWQpIHtcclxuICBpZiAoIXNka1AgfHwgIXNka0QgfHwgc2RrICE9PSBzZGtQIHx8ICFpZCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBzdGF0dXMgPSBzdGF0dXNNYXAuZ2V0KGlkKVxyXG4gIGxldCB0aGF0UCA9IHNka1AuZW50aXR5TWFwLmdldChpZClcclxuICBsZXQgdGhhdEQgPSBzZGtELmVudGl0eU1hcC5nZXQoaWQpXHJcbiAgaWYgKHRoYXRQKSB7XHJcbiAgICBsZXQgdmFsdWVcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgaWYgKHN0YXR1cy5QICYmIHN0YXR1cy5EKSB7XHJcbiAgICAgICAgdmFsdWUgPSAwXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHN0YXR1cy5QKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGF0dXMuRCkge1xyXG4gICAgICAgICAgdmFsdWUgPSAxXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGxlZnRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICAgICAgbGV0IHJpZ2h0RWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtcmlnaHQnKVswXVxyXG4gICAgICBpZiAobGVmdEVsbS5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgfHwgcmlnaHRFbG0uc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgdmFsdWUgPSAtMVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgdmFsdWUgPSAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IDFcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGF0RCkge1xyXG4gICAgICB0aGF0RC5vcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGF0UC5vcHRpb25zKSlcclxuICAgICAgdGhhdEQub3JpZ2luYWxPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGF0UC5vcHRpb25zKSlcclxuICAgICAgaWYgKHRoYXRQLm9sZERhdGEpIHtcclxuICAgICAgICB0aGF0RC5vbGREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGF0UC5vbGREYXRhKSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhhdEQudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nKSB7XHJcbiAgICAgICAgdGhhdEQuaGVpZ2h0ID0gdGhhdEQub3B0aW9ucy5oZWlnaHRcclxuICAgICAgfVxyXG4gICAgICB0aGF0RC5yZXNldCAmJiB0aGF0RC5yZXNldCgpXHJcblxyXG5cclxuICAgICAgaWYgKHRoYXRQLnNob3cpIHtcclxuICAgICAgICBzZXRTcGxpdERpcmVjdGlvbih2YWx1ZSwgaWQsIGZhbHNlLCBlbnRpdHlJZClcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGF0RC5zaG93ID0gZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhhdEQuc2hvdyA9IGZhbHNlXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgdmFsdWUgPSAtMVxyXG4gICAgICAvLyBpZiAodGhhdFAuc2hvdykge1xyXG4gICAgICAvLyAgIGxldCBsZWZ0RWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtbGVmdCcpWzBdXHJcbiAgICAgIC8vICAgbGV0IHJpZ2h0RWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdZSi1jdXN0b20tY2hlY2tib3gtcmlnaHQnKVswXVxyXG4gICAgICAvLyAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAvLyAgICAgdmFsdWUgPSAwXHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIGVsc2Uge1xyXG4gICAgICAvLyAgICAgaWYgKGxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IC0xXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgICBpZiAocmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAvLyAgICAgICB2YWx1ZSA9IDFcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgICAgc2V0U3BsaXREaXJlY3Rpb24odmFsdWUsIGlkLCBmYWxzZSwgZW50aXR5SWQpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgdGhhdEQgJiYgdGhhdEQucmVtb3ZlKClcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEFjdGl2ZVZpZXdlcih2KSB7XHJcbiAgYWN0aXZlVmlld2VyID0gdlxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTZGsoKSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNka1A6IHNka1AsXHJcbiAgICBzZGtEOiBzZGtEXHJcbiAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IHsgb24sIG9mZiwgc2V0U3BsaXREaXJlY3Rpb24sIHN5bmNTcGxpdERhdGEsIGdldFN0YXRlLCBnZXRBY3RpdmVJZCwgc2V0QWN0aXZlSWQsIHNldEFjdGl2ZVZpZXdlciwgZ2V0U2RrIH0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBaVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUEzU0E7QUF1TkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFySEE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFvQkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUF1QkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVUE7QUFBQTtBQVJBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5REE7QUFBQTtBQUFBO0FBK0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbU5BO0FBQUE7QUE5TUE7QUFDQTtBQUNBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBK0NBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBRUE7QUF3S0E7QUFBQTtBQW5LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBeGdCQTtBQUFBO0FBQUE7QUF6QkE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK2dCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJCQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/SplitScreen/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/cluster/cluster.js":
-/*!***************************************!*\
- !*** ./src/Global/cluster/cluster.js ***!
- \***************************************/
-/*! exports provided: createCluster, addCluster, switchCluster, remove_entity_from_cluster, updateCluster */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCluster\", function() { return createCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addCluster\", function() { return addCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchCluster\", function() { return switchCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"remove_entity_from_cluster\", function() { return remove_entity_from_cluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateCluster\", function() { return updateCluster; });\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n/*\r\nlet datasource=null\r\nlet dataSourcePromise = null\r\n// let enabled = true\r\nlet dataSourcexg = null\r\nfunction createCluster(viewer) {\r\n datasource = new Cesium.CustomDataSource(\"dataSource1\");\r\n dataSourcePromise = viewer.dataSources.add(datasource);\r\n dataSourcePromise.then((dataSource)=> {\r\n // return;\r\n const pixelRange = 15;\r\n const minimumClusterSize = 3;\r\n const enabled = false;\r\n dataSourcexg = dataSource\r\n\r\n dataSource.clustering.enabled = enabled; //聚合开启\r\n dataSource.clustering.pixelRange = pixelRange; //设置像素范围,以扩展显示边框\r\n dataSource.clustering.minimumClusterSize = minimumClusterSize; //设置最小的聚合点数目,超过此数目才能聚合\r\n\r\n let removeListener;\r\n\r\n //按聚合层级创建对应图标\r\n const pinBuilder = new Cesium.PinBuilder();\r\n // console.log('pinBuilder',pinBuilder);\r\n var pin100 = pinBuilder\r\n .fromText(\"100+\", Cesium.Color.BLUE, 48)\r\n .toDataURL();\r\n var pin50 = pinBuilder\r\n .fromText(\"50+\", Cesium.Color.BLUE, 48)\r\n .toDataURL();\r\n var pin40 = pinBuilder\r\n .fromText(\"40+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n var pin30 = pinBuilder\r\n .fromText(\"30+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n var pin20 = pinBuilder\r\n .fromText(\"20+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n var pin10 = pinBuilder\r\n .fromText(\"10+\", Cesium.Color.RED, 48)\r\n .toDataURL();\r\n // 10以内聚合图标\r\n const singleDigitPins = new Array(8);\r\n for (let i = 0; i < singleDigitPins.length; ++i) {\r\n singleDigitPins[i] = pinBuilder\r\n .fromText(`${i + 2}`, Cesium.Color.VIOLET, 48)\r\n .toDataURL();\r\n }\r\n\r\n\r\n function customStyle() {\r\n if (Cesium.defined(removeListener)) {\r\n removeListener();\r\n removeListener = undefined;\r\n } else {\r\n removeListener = dataSource.clustering.clusterEvent.addEventListener(\r\n function(clusteredEntities, cluster) {\r\n cluster.label.show = false;\r\n cluster.billboard.show = true;\r\n cluster.billboard.id = cluster.label.id;\r\n cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;\r\n if (clusteredEntities.length >= 100) {\r\n cluster.billboard.image = pin100;\r\n } else if (clusteredEntities.length >= 50) {\r\n cluster.billboard.image = pin50;\r\n } else if (clusteredEntities.length >= 40) {\r\n cluster.billboard.image = pin40;\r\n } else if (clusteredEntities.length >= 30) {\r\n cluster.billboard.image = pin30;\r\n } else if (clusteredEntities.length >= 20) {\r\n cluster.billboard.image = pin20;\r\n } else if (clusteredEntities.length >= 10) {\r\n cluster.billboard.image = pin10;\r\n } else {\r\n cluster.billboard.image =\r\n singleDigitPins[clusteredEntities.length - 2];\r\n }\r\n }\r\n );\r\n }\r\n\r\n // force a re-cluster with the new styling\r\n const pixelRange = dataSource.clustering.pixelRange;\r\n dataSource.clustering.pixelRange = 0;\r\n dataSource.clustering.pixelRange = pixelRange;\r\n }\r\n\r\n customStyle();\r\n\r\n var viewModel = {\r\n pixelRange: pixelRange,\r\n minimumClusterSize: minimumClusterSize,\r\n };\r\n Cesium.knockout.track(viewModel);\r\n\r\n\r\n function subscribeParameter(name) {\r\n Cesium.knockout\r\n .getObservable(viewModel, name)\r\n .subscribe(function (newValue) {\r\n dataSource.clustering[name] = newValue;\r\n });\r\n }\r\n\r\n subscribeParameter(\"pixelRange\");\r\n subscribeParameter(\"minimumClusterSize\");\r\n });\r\n}\r\n\r\nfunction addCluster(entity) {\r\n datasource.entities.add(entity)\r\n}\r\nfunction remove_entity_from_cluster(entity) {\r\n datasource.entities.remove(entity)\r\n}\r\n\r\nfunction switchCluster(status){\r\n dataSourcexg.clustering.enabled = status\r\n}\r\n\r\n*/\n\n\n\n\n/*创建聚合,只能聚合point ,billboard,label*/\nfunction createCluster(viewer) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var cluster = new Cesium.CustomDataSource(\"sdk-dataSource1\");\n var dataSourcePromise = viewer.dataSources.add(cluster);\n dataSourcePromise.then(function (dataSource) {\n // if (!get2DView()) {\n // dataSource.entities.collectionChanged.addEventListener((entities) => {\n // syncDataSources(dataSource, 'entities')\n // })\n // }\n var pixelRange = 15;\n var minimumClusterSize = 2;\n var enabled = false;\n dataSource.clustering.enabled = enabled;\n dataSource.clustering.pixelRange = pixelRange;\n dataSource.clustering.minimumClusterSize = minimumClusterSize;\n var removeListener;\n var pinBuilder = new Cesium.PinBuilder();\n var pin50 = pinBuilder.fromText(\"50+\", Cesium.Color.RED, 48).toDataURL();\n var pin40 = pinBuilder.fromText(\"40+\", Cesium.Color.ORANGE, 48).toDataURL();\n var pin30 = pinBuilder.fromText(\"30+\", Cesium.Color.YELLOW, 48).toDataURL();\n var pin20 = pinBuilder.fromText(\"20+\", Cesium.Color.GREEN, 48).toDataURL();\n var pin10 = pinBuilder.fromText(\"10+\", Cesium.Color.BLUE, 48).toDataURL();\n var singleDigitPins = new Array(8);\n for (var i = 0; i < singleDigitPins.length; ++i) {\n singleDigitPins[i] = pinBuilder.fromText(\"\" + (i + 2), Cesium.Color.VIOLET, 48).toDataURL();\n }\n function customStyle() {\n if (Cesium.defined(removeListener)) {\n removeListener();\n removeListener = undefined;\n } else {\n removeListener = dataSource.clustering.clusterEvent.addEventListener(function (clusteredEntities, cluster) {\n // cluster.label.show = false;\n // cluster.label.verticalOrigin = false;\n cluster.billboard.show = true;\n cluster.billboard.id = cluster.label.id;\n cluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;\n // 根据聚合数量的多少设置不同层级的图片以及大小\n /*if (clusteredEntities.length >= 50) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_大红.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 72;\r\n cluster.billboard.height = 72;\r\n } else if (clusteredEntities.length >= 40) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_大黄.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 56;\r\n cluster.billboard.height = 56;\r\n } else if (clusteredEntities.length >= 30) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_大蓝.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 48;\r\n cluster.billboard.height = 48;\r\n } else if (clusteredEntities.length >= 20) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_小红.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 48;\r\n cluster.billboard.height = 48;\r\n } else if (clusteredEntities.length >= 10) {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_小黄.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 48;\r\n cluster.billboard.height = 48;\r\n } else {\r\n cluster.billboard.image = that.combineIconAndLabel(host + '1_小蓝.png', clusteredEntities.length, 64);\r\n cluster.billboard.width = 40;\r\n cluster.billboard.height = 40;\r\n }*/\n\n cluster.billboard.image = tools.getSourceRootPath() + '/img/cluster.png';\n cluster.billboard.disableDepthTestDistance = Object(_Global_global__WEBPACK_IMPORTED_MODULE_1__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n cluster.label.verticalOrigin = Cesium.VerticalOrigin.CENTER;\n cluster.label.font = \"18px Arial,sans-serif\",\n // cluster.label.scale = 0.5\n cluster.label.disableDepthTestDistance = Object(_Global_global__WEBPACK_IMPORTED_MODULE_1__[\"getGroundCover\"])() ? undefined : Number.POSITIVE_INFINITY;\n cluster.label.style = Cesium.LabelStyle.FILL;\n cluster.label.showBackground = true;\n cluster.label.backgroundColor = Cesium.Color.WHITE.withAlpha(0.0);\n if (clusteredEntities.length >= 1000) {\n cluster.billboard.scale = 1.5;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-28, -46);\n } else if (clusteredEntities.length >= 100) {\n cluster.billboard.scale = 1.25;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-21, -40);\n } else if (clusteredEntities.length >= 50) {\n cluster.billboard.scale = 1.1;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -36);\n } else if (clusteredEntities.length >= 40) {\n cluster.billboard.scale = 1.05;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -34);\n } else if (clusteredEntities.length >= 30) {\n cluster.billboard.scale = 1;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -32);\n } else if (clusteredEntities.length >= 20) {\n cluster.billboard.scale = 0.95;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -30);\n } else if (clusteredEntities.length >= 10) {\n cluster.billboard.scale = 0.9;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-16, -28);\n } else {\n cluster.billboard.scale = 0.8;\n cluster.label.pixelOffset = new Cesium.Cartesian2(-11, -25);\n }\n\n // if (clusteredEntities.length >= 50) {\n // cluster.billboard.image = pin50;\n // } else if (clusteredEntities.length >= 40) {\n // cluster.billboard.image = pin40;\n // } else if (clusteredEntities.length >= 30) {\n // cluster.billboard.image = pin30;\n // } else if (clusteredEntities.length >= 20) {\n // cluster.billboard.image = pin20;\n // } else if (clusteredEntities.length >= 10) {\n // cluster.billboard.image = pin10;\n // } else {\n // cluster.billboard.image =\n // singleDigitPins[clusteredEntities.length - 2];\n // }\n });\n }\n\n // force a re-cluster with the new styling\n var pixelRange = dataSource.clustering.pixelRange;\n dataSource.clustering.pixelRange = 0;\n dataSource.clustering.pixelRange = pixelRange;\n }\n\n // start with custom style\n customStyle();\n var viewModel = {\n pixelRange: pixelRange,\n minimumClusterSize: minimumClusterSize\n };\n Cesium.knockout.track(viewModel);\n function subscribeParameter(name) {\n Cesium.knockout.getObservable(viewModel, name).subscribe(function (newValue) {\n dataSource.clustering[name] = newValue;\n });\n }\n subscribeParameter(\"pixelRange\");\n subscribeParameter(\"minimumClusterSize\");\n // var handler = new Cesium.ScreenSpaceEventHandler(this.sdk.viewer.scene.canvas);\n // handler.setInputAction((movement) => {\n // var pickedLabel = this.sdk.viewer.scene.pick(movement.position);\n //\n // if (Cesium.defined(pickedLabel)) {\n // this.log(pickedLabel)\n // var ids = pickedLabel.id;\n // if (Array.isArray(ids)) {\n // for (var i = 0; i < ids.length; ++i) {\n // ids[i].billboard.color = Cesium.Color.RED;\n // }\n // }\n // }\n // }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n });\n}\n\n/**\r\n * @description 开启/关闭聚合效果\r\n * @method set_cluster_status\r\n * @param [enable=false] {boolean}默认关闭\r\n * @memberOf Tool-3D\r\n * */\nfunction switchCluster(sdk) {\n var enable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var viewer = sdk.viewer;\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].clustering.enabled = enable;\n // syncDataSources(viewer.dataSources._dataSources[i], 'clustering')\n break;\n }\n }\n}\nfunction addCluster(sdk, entity) {\n var viewer = sdk.viewer;\n if (!viewer) {\n return;\n }\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].entities.add(entity);\n break;\n }\n }\n}\nfunction remove_entity_from_cluster(viewer, entity) {\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].entities.remove(entity);\n break;\n }\n }\n}\nfunction updateCluster(viewer) {\n if (!viewer) {\n return;\n }\n for (var i = 0; i < viewer.dataSources._dataSources.length; i++) {\n if (viewer.dataSources._dataSources[i].name === \"sdk-dataSource1\") {\n viewer.dataSources._dataSources[i].clustering._cluster();\n break;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2NsdXN0ZXIvY2x1c3Rlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvY2x1c3Rlci9jbHVzdGVyLmpzPzA3YzQiXSwic291cmNlc0NvbnRlbnQiOlsiXHJcblxyXG4vKlxyXG5sZXQgZGF0YXNvdXJjZT1udWxsXHJcbmxldCBkYXRhU291cmNlUHJvbWlzZSA9IG51bGxcclxuLy8gbGV0IGVuYWJsZWQgPSB0cnVlXHJcbmxldCBkYXRhU291cmNleGcgPSBudWxsXHJcbmZ1bmN0aW9uIGNyZWF0ZUNsdXN0ZXIodmlld2VyKSB7XHJcbiAgICBkYXRhc291cmNlID0gbmV3IENlc2l1bS5DdXN0b21EYXRhU291cmNlKFwiZGF0YVNvdXJjZTFcIik7XHJcbiAgICBkYXRhU291cmNlUHJvbWlzZSA9IHZpZXdlci5kYXRhU291cmNlcy5hZGQoZGF0YXNvdXJjZSk7XHJcbiAgICBkYXRhU291cmNlUHJvbWlzZS50aGVuKChkYXRhU291cmNlKT0+IHtcclxuICAgICAgICAvLyByZXR1cm47XHJcbiAgICAgICAgY29uc3QgcGl4ZWxSYW5nZSA9IDE1O1xyXG4gICAgICAgIGNvbnN0IG1pbmltdW1DbHVzdGVyU2l6ZSA9IDM7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGRhdGFTb3VyY2V4ZyA9IGRhdGFTb3VyY2VcclxuXHJcbiAgICAgICAgZGF0YVNvdXJjZS5jbHVzdGVyaW5nLmVuYWJsZWQgPSBlbmFibGVkOyAvL+iBmuWQiOW8gOWQr1xyXG4gICAgICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTsgLy/orr7nva7lg4/ntKDojIPlm7TvvIzku6XmianlsZXmmL7npLrovrnmoYZcclxuICAgICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmcubWluaW11bUNsdXN0ZXJTaXplID0gbWluaW11bUNsdXN0ZXJTaXplOyAvL+iuvue9ruacgOWwj+eahOiBmuWQiOeCueaVsOebru+8jOi2hei/h+atpOaVsOebruaJjeiDveiBmuWQiFxyXG5cclxuICAgICAgICBsZXQgcmVtb3ZlTGlzdGVuZXI7XHJcblxyXG4gICAgICAgIC8v5oyJ6IGa5ZCI5bGC57qn5Yib5bu65a+55bqU5Zu+5qCHXHJcbiAgICAgICAgY29uc3QgcGluQnVpbGRlciA9IG5ldyBDZXNpdW0uUGluQnVpbGRlcigpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdwaW5CdWlsZGVyJyxwaW5CdWlsZGVyKTtcclxuICAgICAgICB2YXIgcGluMTAwID0gcGluQnVpbGRlclxyXG4gICAgICAgICAgICAuZnJvbVRleHQoXCIxMDArXCIsIENlc2l1bS5Db2xvci5CTFVFLCA0OClcclxuICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIHZhciBwaW41MCA9IHBpbkJ1aWxkZXJcclxuICAgICAgICAgICAgLmZyb21UZXh0KFwiNTArXCIsIENlc2l1bS5Db2xvci5CTFVFLCA0OClcclxuICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIHZhciBwaW40MCA9IHBpbkJ1aWxkZXJcclxuICAgICAgICAgICAgLmZyb21UZXh0KFwiNDArXCIsIENlc2l1bS5Db2xvci5SRUQsIDQ4KVxyXG4gICAgICAgICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICAgICAgdmFyIHBpbjMwID0gcGluQnVpbGRlclxyXG4gICAgICAgICAgICAuZnJvbVRleHQoXCIzMCtcIiwgQ2VzaXVtLkNvbG9yLlJFRCwgNDgpXHJcbiAgICAgICAgICAgIC50b0RhdGFVUkwoKTtcclxuICAgICAgICB2YXIgcGluMjAgPSBwaW5CdWlsZGVyXHJcbiAgICAgICAgICAgIC5mcm9tVGV4dChcIjIwK1wiLCBDZXNpdW0uQ29sb3IuUkVELCA0OClcclxuICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIHZhciBwaW4xMCA9IHBpbkJ1aWxkZXJcclxuICAgICAgICAgICAgLmZyb21UZXh0KFwiMTArXCIsIENlc2l1bS5Db2xvci5SRUQsIDQ4KVxyXG4gICAgICAgICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICAgICAgLy8gMTDku6XlhoXogZrlkIjlm77moIdcclxuICAgICAgICBjb25zdCBzaW5nbGVEaWdpdFBpbnMgPSBuZXcgQXJyYXkoOCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaW5nbGVEaWdpdFBpbnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgc2luZ2xlRGlnaXRQaW5zW2ldID0gcGluQnVpbGRlclxyXG4gICAgICAgICAgICAgICAgLmZyb21UZXh0KGAke2kgKyAyfWAsIENlc2l1bS5Db2xvci5WSU9MRVQsIDQ4KVxyXG4gICAgICAgICAgICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGN1c3RvbVN0eWxlKCkge1xyXG4gICAgICAgICAgICBpZiAoQ2VzaXVtLmRlZmluZWQocmVtb3ZlTGlzdGVuZXIpKSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcigpO1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lciA9IGRhdGFTb3VyY2UuY2x1c3RlcmluZy5jbHVzdGVyRXZlbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihjbHVzdGVyZWRFbnRpdGllcywgY2x1c3Rlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmlkID0gY2x1c3Rlci5sYWJlbC5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQudmVydGljYWxPcmlnaW4gPSBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW4xMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDUwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjUwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSA0MCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW40MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMzApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gcGluMzA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjIwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW4xMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVEaWdpdFBpbnNbY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBmb3JjZSBhIHJlLWNsdXN0ZXIgd2l0aCB0aGUgbmV3IHN0eWxpbmdcclxuICAgICAgICAgICAgY29uc3QgcGl4ZWxSYW5nZSA9IGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlO1xyXG4gICAgICAgICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmcucGl4ZWxSYW5nZSA9IDA7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICBjdXN0b21TdHlsZSgpO1xyXG5cclxuICAgICAgdmFyIHZpZXdNb2RlbCA9IHtcclxuICAgICAgICBwaXhlbFJhbmdlOiBwaXhlbFJhbmdlLFxyXG4gICAgICAgIG1pbmltdW1DbHVzdGVyU2l6ZTogbWluaW11bUNsdXN0ZXJTaXplLFxyXG4gICAgICB9O1xyXG4gICAgICBDZXNpdW0ua25vY2tvdXQudHJhY2sodmlld01vZGVsKTtcclxuXHJcblxyXG4gICAgICBmdW5jdGlvbiBzdWJzY3JpYmVQYXJhbWV0ZXIobmFtZSkge1xyXG4gICAgICAgIENlc2l1bS5rbm9ja291dFxyXG4gICAgICAgICAgLmdldE9ic2VydmFibGUodmlld01vZGVsLCBuYW1lKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZS5jbHVzdGVyaW5nW25hbWVdID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3Vic2NyaWJlUGFyYW1ldGVyKFwicGl4ZWxSYW5nZVwiKTtcclxuICAgICAgc3Vic2NyaWJlUGFyYW1ldGVyKFwibWluaW11bUNsdXN0ZXJTaXplXCIpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZENsdXN0ZXIoZW50aXR5KSB7XHJcbiAgICBkYXRhc291cmNlLmVudGl0aWVzLmFkZChlbnRpdHkpXHJcbn1cclxuZnVuY3Rpb24gcmVtb3ZlX2VudGl0eV9mcm9tX2NsdXN0ZXIoZW50aXR5KSB7XHJcbiAgICBkYXRhc291cmNlLmVudGl0aWVzLnJlbW92ZShlbnRpdHkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN3aXRjaENsdXN0ZXIoc3RhdHVzKXtcclxuICAgIGRhdGFTb3VyY2V4Zy5jbHVzdGVyaW5nLmVuYWJsZWQgPSBzdGF0dXNcclxufVxyXG5cclxuKi9cclxuXHJcbmltcG9ydCBUb29scyBmcm9tICcuLi8uLi9Ub29scydcclxuaW1wb3J0IHtcclxuICBnZXRHcm91bmRDb3ZlclxyXG59IGZyb20gJy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5cclxuLyrliJvlu7rogZrlkIgs5Y+q6IO96IGa5ZCIcG9pbnQg77yMYmlsbGJvYXJk77yMbGFiZWwqL1xyXG5mdW5jdGlvbiBjcmVhdGVDbHVzdGVyKHZpZXdlcikge1xyXG4gIGxldCB0b29scyA9IG5ldyBUb29scygpXHJcbiAgbGV0IGNsdXN0ZXIgPSBuZXcgQ2VzaXVtLkN1c3RvbURhdGFTb3VyY2UoXCJzZGstZGF0YVNvdXJjZTFcIilcclxuICBsZXQgZGF0YVNvdXJjZVByb21pc2UgPSB2aWV3ZXIuZGF0YVNvdXJjZXMuYWRkKGNsdXN0ZXIpXHJcbiAgZGF0YVNvdXJjZVByb21pc2UudGhlbihkYXRhU291cmNlID0+IHtcclxuICAgIC8vIGlmICghZ2V0MkRWaWV3KCkpIHtcclxuICAgIC8vICAgZGF0YVNvdXJjZS5lbnRpdGllcy5jb2xsZWN0aW9uQ2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKChlbnRpdGllcykgPT4ge1xyXG4gICAgLy8gICAgIHN5bmNEYXRhU291cmNlcyhkYXRhU291cmNlLCAnZW50aXRpZXMnKVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gfVxyXG4gICAgdmFyIHBpeGVsUmFuZ2UgPSAxNTtcclxuICAgIHZhciBtaW5pbXVtQ2x1c3RlclNpemUgPSAyO1xyXG4gICAgdmFyIGVuYWJsZWQgPSBmYWxzZTtcclxuICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5lbmFibGVkID0gZW5hYmxlZDtcclxuICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTtcclxuICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5taW5pbXVtQ2x1c3RlclNpemUgPSBtaW5pbXVtQ2x1c3RlclNpemU7XHJcbiAgICB2YXIgcmVtb3ZlTGlzdGVuZXI7XHJcblxyXG4gICAgdmFyIHBpbkJ1aWxkZXIgPSBuZXcgQ2VzaXVtLlBpbkJ1aWxkZXIoKTtcclxuICAgIHZhciBwaW41MCA9IHBpbkJ1aWxkZXJcclxuICAgICAgLmZyb21UZXh0KFwiNTArXCIsIENlc2l1bS5Db2xvci5SRUQsIDQ4KVxyXG4gICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICB2YXIgcGluNDAgPSBwaW5CdWlsZGVyXHJcbiAgICAgIC5mcm9tVGV4dChcIjQwK1wiLCBDZXNpdW0uQ29sb3IuT1JBTkdFLCA0OClcclxuICAgICAgLnRvRGF0YVVSTCgpO1xyXG4gICAgdmFyIHBpbjMwID0gcGluQnVpbGRlclxyXG4gICAgICAuZnJvbVRleHQoXCIzMCtcIiwgQ2VzaXVtLkNvbG9yLllFTExPVywgNDgpXHJcbiAgICAgIC50b0RhdGFVUkwoKTtcclxuICAgIHZhciBwaW4yMCA9IHBpbkJ1aWxkZXJcclxuICAgICAgLmZyb21UZXh0KFwiMjArXCIsIENlc2l1bS5Db2xvci5HUkVFTiwgNDgpXHJcbiAgICAgIC50b0RhdGFVUkwoKTtcclxuICAgIHZhciBwaW4xMCA9IHBpbkJ1aWxkZXJcclxuICAgICAgLmZyb21UZXh0KFwiMTArXCIsIENlc2l1bS5Db2xvci5CTFVFLCA0OClcclxuICAgICAgLnRvRGF0YVVSTCgpO1xyXG5cclxuICAgIHZhciBzaW5nbGVEaWdpdFBpbnMgPSBuZXcgQXJyYXkoOCk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpbmdsZURpZ2l0UGlucy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBzaW5nbGVEaWdpdFBpbnNbaV0gPSBwaW5CdWlsZGVyXHJcbiAgICAgICAgLmZyb21UZXh0KFwiXCIgKyAoaSArIDIpLCBDZXNpdW0uQ29sb3IuVklPTEVULCA0OClcclxuICAgICAgICAudG9EYXRhVVJMKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY3VzdG9tU3R5bGUoKSB7XHJcbiAgICAgIGlmIChDZXNpdW0uZGVmaW5lZChyZW1vdmVMaXN0ZW5lcikpIHtcclxuICAgICAgICByZW1vdmVMaXN0ZW5lcigpO1xyXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyID0gZGF0YVNvdXJjZS5jbHVzdGVyaW5nLmNsdXN0ZXJFdmVudC5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICAgZnVuY3Rpb24gKGNsdXN0ZXJlZEVudGl0aWVzLCBjbHVzdGVyKSB7XHJcbiAgICAgICAgICAgIC8vIGNsdXN0ZXIubGFiZWwuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBjbHVzdGVyLmxhYmVsLnZlcnRpY2FsT3JpZ2luID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNob3cgPSB0cnVlO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pZCA9IGNsdXN0ZXIubGFiZWwuaWQ7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnZlcnRpY2FsT3JpZ2luID1cclxuICAgICAgICAgICAgICBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NO1xyXG4gICAgICAgICAgICAvLyDmoLnmja7ogZrlkIjmlbDph4/nmoTlpJrlsJHorr7nva7kuI3lkIzlsYLnuqfnmoTlm77niYfku6Xlj4rlpKflsI9cclxuICAgICAgICAgICAgLyppZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDUwKSB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gdGhhdC5jb21iaW5lSWNvbkFuZExhYmVsKGhvc3QgKyAnMV/lpKfnuqIucG5nJywgY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoLCA2NCk7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLndpZHRoID0gNzI7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmhlaWdodCA9IDcyO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gNDApIHtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSB0aGF0LmNvbWJpbmVJY29uQW5kTGFiZWwoaG9zdCArICcxX+Wkp+m7hC5wbmcnLCBjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGgsIDY0KTtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQud2lkdGggPSA1NjtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaGVpZ2h0ID0gNTY7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSAzMCkge1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHRoYXQuY29tYmluZUljb25BbmRMYWJlbChob3N0ICsgJzFf5aSn6JOdLnBuZycsIGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCwgNjQpO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC53aWR0aCA9IDQ4O1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5oZWlnaHQgPSA0ODtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gdGhhdC5jb21iaW5lSWNvbkFuZExhYmVsKGhvc3QgKyAnMV/lsI/nuqIucG5nJywgY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoLCA2NCk7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLndpZHRoID0gNDg7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmhlaWdodCA9IDQ4O1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMTApIHtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSB0aGF0LmNvbWJpbmVJY29uQW5kTGFiZWwoaG9zdCArICcxX+Wwj+m7hC5wbmcnLCBjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGgsIDY0KTtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQud2lkdGggPSA0ODtcclxuICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuaGVpZ2h0ID0gNDg7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHRoYXQuY29tYmluZUljb25BbmRMYWJlbChob3N0ICsgJzFf5bCP6JOdLnBuZycsIGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCwgNjQpO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC53aWR0aCA9IDQwO1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5oZWlnaHQgPSA0MDtcclxuICAgICAgICAgIH0qL1xyXG5cclxuXHJcbiAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gdG9vbHMuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2NsdXN0ZXIucG5nJ1xyXG4gICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBnZXRHcm91bmRDb3ZlcigpID8gdW5kZWZpbmVkIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXHJcblxyXG4gICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnZlcnRpY2FsT3JpZ2luID0gQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkNFTlRFUlxyXG4gICAgICAgICAgICBjbHVzdGVyLmxhYmVsLmZvbnQgPSBcIjE4cHggQXJpYWwsc2Fucy1zZXJpZlwiLFxyXG4gICAgICAgICAgICAgIC8vIGNsdXN0ZXIubGFiZWwuc2NhbGUgPSAwLjVcclxuICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSA9IGdldEdyb3VuZENvdmVyKCkgPyB1bmRlZmluZWQgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5zdHlsZSA9IENlc2l1bS5MYWJlbFN0eWxlLkZJTExcclxuICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5zaG93QmFja2dyb3VuZCA9IHRydWVcclxuICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5iYWNrZ3JvdW5kQ29sb3IgPSBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuMClcclxuXHJcbiAgICAgICAgICAgIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMTAwMCkge1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNjYWxlID0gMS41O1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTI4LCAtNDYpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDEwMCkge1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNjYWxlID0gMS4yNTtcclxuICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKC0yMSwgLTQwKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSA1MCkge1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIuYmlsbGJvYXJkLnNjYWxlID0gMS4xO1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzYpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDQwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAxLjA1O1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzQpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDMwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAxO1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzIpXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAwLjk1O1xyXG4gICAgICAgICAgICAgIGNsdXN0ZXIubGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoLTE2LCAtMzApXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDEwKSB7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5iaWxsYm9hcmQuc2NhbGUgPSAwLjk7XHJcbiAgICAgICAgICAgICAgY2x1c3Rlci5sYWJlbC5waXhlbE9mZnNldCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMigtMTYsIC0yOClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjbHVzdGVyLmJpbGxib2FyZC5zY2FsZSA9IDAuODtcclxuICAgICAgICAgICAgICBjbHVzdGVyLmxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKC0xMSwgLTI1KVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDUwKSB7XHJcbiAgICAgICAgICAgIC8vICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW41MDtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gNDApIHtcclxuICAgICAgICAgICAgLy8gICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjQwO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2UgaWYgKGNsdXN0ZXJlZEVudGl0aWVzLmxlbmd0aCA+PSAzMCkge1xyXG4gICAgICAgICAgICAvLyAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID0gcGluMzA7XHJcbiAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoY2x1c3RlcmVkRW50aXRpZXMubGVuZ3RoID49IDIwKSB7XHJcbiAgICAgICAgICAgIC8vICAgY2x1c3Rlci5iaWxsYm9hcmQuaW1hZ2UgPSBwaW4yMDtcclxuICAgICAgICAgICAgLy8gfSBlbHNlIGlmIChjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggPj0gMTApIHtcclxuICAgICAgICAgICAgLy8gICBjbHVzdGVyLmJpbGxib2FyZC5pbWFnZSA9IHBpbjEwO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgIGNsdXN0ZXIuYmlsbGJvYXJkLmltYWdlID1cclxuICAgICAgICAgICAgLy8gICAgIHNpbmdsZURpZ2l0UGluc1tjbHVzdGVyZWRFbnRpdGllcy5sZW5ndGggLSAyXTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZvcmNlIGEgcmUtY2x1c3RlciB3aXRoIHRoZSBuZXcgc3R5bGluZ1xyXG4gICAgICB2YXIgcGl4ZWxSYW5nZSA9IGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlO1xyXG4gICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmcucGl4ZWxSYW5nZSA9IDA7XHJcbiAgICAgIGRhdGFTb3VyY2UuY2x1c3RlcmluZy5waXhlbFJhbmdlID0gcGl4ZWxSYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdGFydCB3aXRoIGN1c3RvbSBzdHlsZVxyXG4gICAgY3VzdG9tU3R5bGUoKTtcclxuXHJcbiAgICB2YXIgdmlld01vZGVsID0ge1xyXG4gICAgICBwaXhlbFJhbmdlOiBwaXhlbFJhbmdlLFxyXG4gICAgICBtaW5pbXVtQ2x1c3RlclNpemU6IG1pbmltdW1DbHVzdGVyU2l6ZSxcclxuICAgIH07XHJcbiAgICBDZXNpdW0ua25vY2tvdXQudHJhY2sodmlld01vZGVsKTtcclxuXHJcblxyXG4gICAgZnVuY3Rpb24gc3Vic2NyaWJlUGFyYW1ldGVyKG5hbWUpIHtcclxuICAgICAgQ2VzaXVtLmtub2Nrb3V0XHJcbiAgICAgICAgLmdldE9ic2VydmFibGUodmlld01vZGVsLCBuYW1lKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICBkYXRhU291cmNlLmNsdXN0ZXJpbmdbbmFtZV0gPSBuZXdWYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdWJzY3JpYmVQYXJhbWV0ZXIoXCJwaXhlbFJhbmdlXCIpO1xyXG4gICAgc3Vic2NyaWJlUGFyYW1ldGVyKFwibWluaW11bUNsdXN0ZXJTaXplXCIpO1xyXG4gICAgLy8gdmFyIGhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHRoaXMuc2RrLnZpZXdlci5zY2VuZS5jYW52YXMpO1xyXG4gICAgLy8gaGFuZGxlci5zZXRJbnB1dEFjdGlvbigobW92ZW1lbnQpID0+IHtcclxuICAgIC8vICAgICB2YXIgcGlja2VkTGFiZWwgPSB0aGlzLnNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbik7XHJcbiAgICAvL1xyXG4gICAgLy8gICAgIGlmIChDZXNpdW0uZGVmaW5lZChwaWNrZWRMYWJlbCkpIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5sb2cocGlja2VkTGFiZWwpXHJcbiAgICAvLyAgICAgICAgIHZhciBpZHMgPSBwaWNrZWRMYWJlbC5pZDtcclxuICAgIC8vICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaWRzKSkge1xyXG4gICAgLy8gICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyArK2kpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBpZHNbaV0uYmlsbGJvYXJkLmNvbG9yID0gQ2VzaXVtLkNvbG9yLlJFRDtcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX0NMSUNLKTtcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIOW8gOWQry/lhbPpl63ogZrlkIjmlYjmnpxcclxuICogQG1ldGhvZCBzZXRfY2x1c3Rlcl9zdGF0dXNcclxuICogQHBhcmFtIFtlbmFibGU9ZmFsc2VdIHtib29sZWFufem7mOiupOWFs+mXrVxyXG4gKiBAbWVtYmVyT2YgVG9vbC0zRFxyXG4gKiAqL1xyXG5mdW5jdGlvbiBzd2l0Y2hDbHVzdGVyKHNkaywgZW5hYmxlID0gZmFsc2UpIHtcclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlclxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gXCJzZGstZGF0YVNvdXJjZTFcIikge1xyXG4gICAgICB2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLmNsdXN0ZXJpbmcuZW5hYmxlZCA9IGVuYWJsZVxyXG4gICAgICAvLyBzeW5jRGF0YVNvdXJjZXModmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlc1tpXSwgJ2NsdXN0ZXJpbmcnKVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gYWRkQ2x1c3RlcihzZGssIGVudGl0eSkge1xyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgaWYoIXZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gXCJzZGstZGF0YVNvdXJjZTFcIikge1xyXG4gICAgICB2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLmVudGl0aWVzLmFkZChlbnRpdHkpXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZW1vdmVfZW50aXR5X2Zyb21fY2x1c3Rlcih2aWV3ZXIsIGVudGl0eSkge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXNbaV0ubmFtZSA9PT0gXCJzZGstZGF0YVNvdXJjZTFcIikge1xyXG4gICAgICB2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLmVudGl0aWVzLnJlbW92ZShlbnRpdHkpXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB1cGRhdGVDbHVzdGVyKHZpZXdlcikge1xyXG4gIGlmKCF2aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZXdlci5kYXRhU291cmNlcy5fZGF0YVNvdXJjZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmICh2aWV3ZXIuZGF0YVNvdXJjZXMuX2RhdGFTb3VyY2VzW2ldLm5hbWUgPT09IFwic2RrLWRhdGFTb3VyY2UxXCIpIHtcclxuICAgICAgdmlld2VyLmRhdGFTb3VyY2VzLl9kYXRhU291cmNlc1tpXS5jbHVzdGVyaW5nLl9jbHVzdGVyKClcclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgeyBjcmVhdGVDbHVzdGVyLCBhZGRDbHVzdGVyLCBzd2l0Y2hDbHVzdGVyLCByZW1vdmVfZW50aXR5X2Zyb21fY2x1c3RlciwgdXBkYXRlQ2x1c3RlciB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUdBO0FBR0E7QUFHQTtBQUlBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/cluster/cluster.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/efflect/Sunshine/TimeLine.js":
-/*!*************************************************!*\
- !*** ./src/Global/efflect/Sunshine/TimeLine.js ***!
- \*************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TimeLine; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar TimeLine = /*#__PURE__*/function () {\n function TimeLine(sdk, speed) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, TimeLine);\n this.sdk = _objectSpread({}, sdk);\n this.progress = document.getElementById('progress');\n this.handle = document.getElementById('handle');\n // this.timeline = document.getElementById('timeline');\n this.timeline = document.getElementsByClassName('timeline-container')[0];\n this.currentTime = document.getElementById('currentTime');\n this.timelineCon = document.getElementsByClassName('timeline-container')[0];\n this.speed = speed;\n this.animationId;\n this.startTime = performance.now();\n this.manualPosition = null;\n this.isDragging = false;\n this.pauseed = false;\n this.time = '';\n this.update = this.update.bind(this);\n TimeLine.init(this);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(TimeLine, [{\n key: \"moveComplay\",\n value: function moveComplay(func) {\n var that = this;\n // that.timeline.addEventListener('mouseup', () => {\n document.addEventListener('mouseup', function () {\n if (that.isDragging) {\n that.isDragging = false;\n if (that.manualPosition !== null) {\n // that.sdk.viewer.clock.shouldAnimate = true\n that.startTime = performance.now() - that.manualPosition * 86400 * 1000 / that.speed;\n that.manualPosition = null;\n that.changeDate && (that.changeDateGrag = true);\n if (!that.pauseed) {\n that.update();\n func(that.time);\n } else {\n that.pausedTime = performance.now(); // 记录暂停时刻\n func(that.currentTime.textContent);\n }\n }\n }\n });\n }\n }, {\n key: \"formatTime\",\n value: function formatTime(seconds) {\n var hrs = Math.floor(seconds / 3600).toString().padStart(2, '0');\n var mins = Math.floor(seconds % 3600 / 60).toString().padStart(2, '0');\n var secs = Math.floor(seconds % 60).toString().padStart(2, '0');\n return \"\".concat(hrs, \":\").concat(mins, \":\").concat(secs);\n }\n }, {\n key: \"update\",\n value: function update() {\n if (this.manualPosition !== null) return;\n if (this.changeDate) {\n //切换日期后让时间从0开始\n this.startTime = performance.now();\n }\n var elapsed = (performance.now() - this.startTime) * this.speed;\n // if (this.elapsed) {\n // elapsed = elapsed + this.elapsed\n // this.elapsed = undefined\n // }\n var totalSeconds = elapsed / 1000; //秒\n var daySeconds = totalSeconds % 86400; //天\n var percentage = daySeconds / 86400;\n this.progress.style.width = \"\".concat(percentage * 100, \"%\");\n this.time = this.formatTime(daySeconds);\n this.currentTime.textContent = this.time;\n if (!this.pauseed) {\n this.animationId && cancelAnimationFrame(this.animationId);\n this.animationId = requestAnimationFrame(this.update);\n }\n }\n }, {\n key: \"setSpeed\",\n value: function setSpeed(v) {\n var now = performance.now();\n if (!this.pauseed) {\n var _this$manualPosition;\n var currentProgress = (_this$manualPosition = this.manualPosition) !== null && _this$manualPosition !== void 0 ? _this$manualPosition : (performance.now() - this.startTime) * this.speed / (86400 * 1000);\n this.speed = v;\n this.startTime = performance.now() - currentProgress * 86400 * 1000 / this.speed;\n } else {\n var _this$manualPosition2;\n var pausedDuration = now - this.pausedTime;\n this.startTime += pausedDuration; // 补偿暂停期间的时间差\n var _currentProgress = (_this$manualPosition2 = this.manualPosition) !== null && _this$manualPosition2 !== void 0 ? _this$manualPosition2 : (now - this.startTime) * this.speed / (86400 * 1000);\n this.speed = v;\n this.startTime = now - _currentProgress * 86400 * 1000 / this.speed;\n this.pausedTime = now; // 记录切换speed暂停时刻\n // this.speed = v;\n }\n this.manualPosition = null;\n\n // this.update();\n }\n }, {\n key: \"updateTime\",\n value: function updateTime() {\n this.manualPosition = null;\n this.startTime = performance.now() - (this.manualPosition || 0) * 86400 * 1000 / this.speed;\n this.pauseed && (this.changeDate = true);\n this.changeDateGrag = undefined;\n this.update();\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.animationId && cancelAnimationFrame(this.animationId);\n this.progress.style.width = '0%';\n this.currentTime.textContent = '00:00:00';\n }\n }], [{\n key: \"init\",\n value: function init(that) {\n for (var i = 0; i <= 24; i++) {\n if (i % 6 === 0) {\n var label = document.createElement('div');\n label.className = 'time-mark';\n label.textContent = \"\".concat(i, \":00\");\n label.style.left = \"\".concat(i / 24 * 100, \"%\");\n document.getElementsByClassName('time-marks')[0].appendChild(label);\n }\n }\n that.startTime = performance.now() - (that.manualPosition || 0) * 86400 * 1000 / that.speed;\n that.timeline.addEventListener('mousedown', function (e) {\n if (e.srcElement.className === 'handle') {\n that.isDragging = true;\n }\n e.preventDefault();\n });\n that.timeline.addEventListener('mousemove', function (e) {\n if (!that.isDragging) return;\n var rect = that.timeline.getBoundingClientRect();\n var pos = (e.clientX - rect.left) / rect.width;\n pos = Math.max(0, Math.min(1, pos));\n that.manualPosition = pos;\n that.progress.style.width = \"\".concat(pos * 100, \"%\");\n var seconds = pos * 86400;\n that.currentTime.textContent = that.formatTime(seconds);\n });\n that.update();\n document.getElementById('timePause').addEventListener('click', function () {\n that.pauseed = !that.pauseed;\n if (that.pauseed) {\n //暂停\n that.pausedTime = performance.now(); // 记录暂停时刻\n document.getElementById('timePause').textContent = '播放';\n that.animationId && cancelAnimationFrame(that.animationId);\n that.sdk.viewer.clock.shouldAnimate = false;\n } else {\n //播放\n var now = performance.now();\n var pausedDuration = now - that.pausedTime;\n document.getElementById('timePause').textContent = '暂停';\n that.manualPosition = null;\n that.startTime += pausedDuration; // 补偿暂停期间的时间差\n\n if (that.changeDate) {\n //切换日期后让时间从0开始\n if (that.changeDateGrag) {\n that.changeDateGrag = undefined;\n } else {\n that.startTime = now;\n }\n that.changeDate = undefined;\n }\n that.sdk.viewer.clock.shouldAnimate = true;\n that.update(); // 重启动画循环\n }\n });\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvVGltZUxpbmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvVGltZUxpbmUuanM/MDI1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBUaW1lTGluZSB7XHJcbiAgY29uc3RydWN0b3Ioc2RrLCBzcGVlZCkge1xyXG4gICAgdGhpcy5zZGsgPSB7IC4uLnNkayB9O1xyXG4gICAgdGhpcy5wcm9ncmVzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9ncmVzcycpO1xyXG4gICAgdGhpcy5oYW5kbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGFuZGxlJyk7XHJcbiAgICAvLyB0aGlzLnRpbWVsaW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpbWVsaW5lJyk7XHJcbiAgICB0aGlzLnRpbWVsaW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGltZWxpbmUtY29udGFpbmVyJylbMF07XHJcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1cnJlbnRUaW1lJyk7XHJcbiAgICB0aGlzLnRpbWVsaW5lQ29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGltZWxpbmUtY29udGFpbmVyJylbMF07XHJcbiAgICB0aGlzLnNwZWVkID0gc3BlZWQ7XHJcbiAgICB0aGlzLmFuaW1hdGlvbklkO1xyXG4gICAgdGhpcy5zdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcclxuICAgIHRoaXMubWFudWFsUG9zaXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnBhdXNlZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudGltZSA9ICcnO1xyXG4gICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xyXG5cclxuICAgIFRpbWVMaW5lLmluaXQodGhpcylcclxuICB9XHJcbiAgc3RhdGljIGluaXQodGhhdCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMjQ7IGkrKykge1xyXG4gICAgICBpZiAoaSAlIDYgPT09IDApIHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICd0aW1lLW1hcmsnO1xyXG4gICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gYCR7aX06MDBgO1xyXG4gICAgICAgIGxhYmVsLnN0eWxlLmxlZnQgPSBgJHsoaSAvIDI0KSAqIDEwMH0lYDtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0aW1lLW1hcmtzJylbMF0uYXBwZW5kQ2hpbGQobGFiZWwpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoYXQuc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSAoKHRoYXQubWFudWFsUG9zaXRpb24gfHwgMCkgKiA4NjQwMCAqIDEwMDAgLyB0aGF0LnNwZWVkKTtcclxuXHJcbiAgICB0aGF0LnRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB7XHJcbiAgICAgIGlmIChlLnNyY0VsZW1lbnQuY2xhc3NOYW1lID09PSAnaGFuZGxlJykge1xyXG4gICAgICAgIHRoYXQuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhhdC50aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoYXQuaXNEcmFnZ2luZykgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgcmVjdCA9IHRoYXQudGltZWxpbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGxldCBwb3MgPSAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0KSAvIHJlY3Qud2lkdGg7XHJcbiAgICAgIHBvcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHBvcykpO1xyXG5cclxuICAgICAgdGhhdC5tYW51YWxQb3NpdGlvbiA9IHBvcztcclxuICAgICAgdGhhdC5wcm9ncmVzcy5zdHlsZS53aWR0aCA9IGAke3BvcyAqIDEwMH0lYDtcclxuXHJcbiAgICAgIGNvbnN0IHNlY29uZHMgPSBwb3MgKiA4NjQwMDtcclxuICAgICAgdGhhdC5jdXJyZW50VGltZS50ZXh0Q29udGVudCA9IHRoYXQuZm9ybWF0VGltZShzZWNvbmRzKTtcclxuICAgIH0pO1xyXG4gICAgdGhhdC51cGRhdGUoKTtcclxuXHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGltZVBhdXNlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRoYXQucGF1c2VlZCA9ICF0aGF0LnBhdXNlZWQ7XHJcbiAgICAgIGlmICh0aGF0LnBhdXNlZWQpIHsvL+aaguWBnFxyXG4gICAgICAgIHRoYXQucGF1c2VkVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpOyAvLyDorrDlvZXmmoLlgZzml7bliLtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGltZVBhdXNlJykudGV4dENvbnRlbnQgPSAn5pKt5pS+JztcclxuICAgICAgICB0aGF0LmFuaW1hdGlvbklkICYmIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoYXQuYW5pbWF0aW9uSWQpO1xyXG4gICAgICAgIHRoYXQuc2RrLnZpZXdlci5jbG9jay5zaG91bGRBbmltYXRlID0gZmFsc2VcclxuICAgICAgfSBlbHNlIHsvL+aSreaUvlxyXG4gICAgICAgIGxldCBub3cgPSBwZXJmb3JtYW5jZS5ub3coKVxyXG4gICAgICAgIGNvbnN0IHBhdXNlZER1cmF0aW9uID0gbm93IC0gdGhhdC5wYXVzZWRUaW1lO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW1lUGF1c2UnKS50ZXh0Q29udGVudCA9ICfmmoLlgZwnO1xyXG4gICAgICAgIHRoYXQubWFudWFsUG9zaXRpb24gPSBudWxsXHJcbiAgICAgICAgdGhhdC5zdGFydFRpbWUgKz0gcGF1c2VkRHVyYXRpb247IC8vIOihpeWBv+aaguWBnOacn+mXtOeahOaXtumXtOW3rlxyXG5cclxuICAgICAgICBpZiAodGhhdC5jaGFuZ2VEYXRlKSB7Ly/liIfmjaLml6XmnJ/lkI7orqnml7bpl7Tku44w5byA5aeLXHJcbiAgICAgICAgICBpZiAodGhhdC5jaGFuZ2VEYXRlR3JhZykge1xyXG4gICAgICAgICAgICB0aGF0LmNoYW5nZURhdGVHcmFnID0gdW5kZWZpbmVkXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGF0LnN0YXJ0VGltZSA9IG5vd1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhhdC5jaGFuZ2VEYXRlID0gdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoYXQuc2RrLnZpZXdlci5jbG9jay5zaG91bGRBbmltYXRlID0gdHJ1ZVxyXG4gICAgICAgIHRoYXQudXBkYXRlKCk7IC8vIOmHjeWQr+WKqOeUu+W+queOr1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbW92ZUNvbXBsYXkoZnVuYykge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICAvLyB0aGF0LnRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT4ge1xyXG4gICAgICBpZiAodGhhdC5pc0RyYWdnaW5nKSB7XHJcbiAgICAgICAgdGhhdC5pc0RyYWdnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoYXQubWFudWFsUG9zaXRpb24gIT09IG51bGwpIHtcclxuICAgICAgICAgIC8vIHRoYXQuc2RrLnZpZXdlci5jbG9jay5zaG91bGRBbmltYXRlID0gdHJ1ZVxyXG4gICAgICAgICAgdGhhdC5zdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtICh0aGF0Lm1hbnVhbFBvc2l0aW9uICogODY0MDAgKiAxMDAwIC8gdGhhdC5zcGVlZCk7XHJcbiAgICAgICAgICB0aGF0Lm1hbnVhbFBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgICAgIHRoYXQuY2hhbmdlRGF0ZSAmJiAodGhhdC5jaGFuZ2VEYXRlR3JhZyA9IHRydWUpXHJcbiAgICAgICAgICBpZiAoIXRoYXQucGF1c2VlZCkge1xyXG4gICAgICAgICAgICB0aGF0LnVwZGF0ZSgpXHJcbiAgICAgICAgICAgIGZ1bmModGhhdC50aW1lKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhhdC5wYXVzZWRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7IC8vIOiusOW9leaaguWBnOaXtuWIu1xyXG4gICAgICAgICAgICBmdW5jKHRoYXQuY3VycmVudFRpbWUudGV4dENvbnRlbnQpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZvcm1hdFRpbWUoc2Vjb25kcykge1xyXG4gICAgY29uc3QgaHJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgbWlucyA9IE1hdGguZmxvb3IoKHNlY29uZHMgJSAzNjAwKSAvIDYwKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBzZWNzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIHJldHVybiBgJHtocnN9OiR7bWluc306JHtzZWNzfWA7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5tYW51YWxQb3NpdGlvbiAhPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuY2hhbmdlRGF0ZSkgey8v5YiH5o2i5pel5pyf5ZCO6K6p5pe26Ze05LuOMOW8gOWni1xyXG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpXHJcbiAgICB9XHJcbiAgICBsZXQgZWxhcHNlZCA9IChwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lKSAqIHRoaXMuc3BlZWQ7XHJcbiAgICAvLyBpZiAodGhpcy5lbGFwc2VkKSB7XHJcbiAgICAvLyAgIGVsYXBzZWQgPSBlbGFwc2VkICsgdGhpcy5lbGFwc2VkXHJcbiAgICAvLyAgIHRoaXMuZWxhcHNlZCA9IHVuZGVmaW5lZFxyXG4gICAgLy8gfVxyXG4gICAgY29uc3QgdG90YWxTZWNvbmRzID0gZWxhcHNlZCAvIDEwMDA7Ly/np5JcclxuICAgIGNvbnN0IGRheVNlY29uZHMgPSB0b3RhbFNlY29uZHMgJSA4NjQwMDsvL+WkqVxyXG4gICAgY29uc3QgcGVyY2VudGFnZSA9IGRheVNlY29uZHMgLyA4NjQwMDtcclxuXHJcbiAgICB0aGlzLnByb2dyZXNzLnN0eWxlLndpZHRoID0gYCR7cGVyY2VudGFnZSAqIDEwMH0lYDtcclxuICAgIHRoaXMudGltZSA9IHRoaXMuZm9ybWF0VGltZShkYXlTZWNvbmRzKVxyXG4gICAgdGhpcy5jdXJyZW50VGltZS50ZXh0Q29udGVudCA9IHRoaXMudGltZTtcclxuICAgIGlmICghdGhpcy5wYXVzZWVkKSB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSWQgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25JZCk7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRTcGVlZCh2KSB7XHJcbiAgICBsZXQgbm93ID0gcGVyZm9ybWFuY2Uubm93KClcclxuICAgIGlmICghdGhpcy5wYXVzZWVkKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRQcm9ncmVzcyA9IHRoaXMubWFudWFsUG9zaXRpb24gPz9cclxuICAgICAgICAocGVyZm9ybWFuY2Uubm93KCkgLSB0aGlzLnN0YXJ0VGltZSkgKiB0aGlzLnNwZWVkIC8gKDg2NDAwICogMTAwMCk7XHJcbiAgICAgIHRoaXMuc3BlZWQgPSB2O1xyXG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gKGN1cnJlbnRQcm9ncmVzcyAqIDg2NDAwICogMTAwMCAvIHRoaXMuc3BlZWQpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBwYXVzZWREdXJhdGlvbiA9IG5vdyAtIHRoaXMucGF1c2VkVGltZTtcclxuICAgICAgdGhpcy5zdGFydFRpbWUgKz0gcGF1c2VkRHVyYXRpb247IC8vIOihpeWBv+aaguWBnOacn+mXtOeahOaXtumXtOW3rlxyXG4gICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3MgPSB0aGlzLm1hbnVhbFBvc2l0aW9uID8/XHJcbiAgICAgICAgKG5vdyAtIHRoaXMuc3RhcnRUaW1lKSAqIHRoaXMuc3BlZWQgLyAoODY0MDAgKiAxMDAwKTtcclxuICAgICAgdGhpcy5zcGVlZCA9IHY7XHJcbiAgICAgIHRoaXMuc3RhcnRUaW1lID0gbm93IC0gKGN1cnJlbnRQcm9ncmVzcyAqIDg2NDAwICogMTAwMCAvIHRoaXMuc3BlZWQpO1xyXG5cclxuICAgICAgdGhpcy5wYXVzZWRUaW1lID0gbm93OyAvLyDorrDlvZXliIfmjaJzcGVlZOaaguWBnOaXtuWIu1xyXG4gICAgICAvLyB0aGlzLnNwZWVkID0gdjtcclxuICAgIH1cclxuICAgIHRoaXMubWFudWFsUG9zaXRpb24gPSBudWxsO1xyXG5cclxuICAgIC8vIHRoaXMudXBkYXRlKCk7XHJcblxyXG4gIH1cclxuICB1cGRhdGVUaW1lKCkge1xyXG4gICAgdGhpcy5tYW51YWxQb3NpdGlvbiA9IG51bGw7XHJcbiAgICB0aGlzLnN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gKCh0aGlzLm1hbnVhbFBvc2l0aW9uIHx8IDApICogODY0MDAgKiAxMDAwIC8gdGhpcy5zcGVlZCk7XHJcbiAgICB0aGlzLnBhdXNlZWQgJiYgKHRoaXMuY2hhbmdlRGF0ZSA9IHRydWUpXHJcbiAgICB0aGlzLmNoYW5nZURhdGVHcmFnID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gIH1cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMuYW5pbWF0aW9uSWQgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25JZCk7XHJcbiAgICB0aGlzLnByb2dyZXNzLnN0eWxlLndpZHRoID0gJzAlJztcclxuICAgIHRoaXMuY3VycmVudFRpbWUudGV4dENvbnRlbnQgPSAnMDA6MDA6MDAnO1xyXG4gIH1cclxuXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQStEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBbkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/TimeLine.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/efflect/Sunshine/_element.js":
-/*!*************************************************!*\
- !*** ./src/Global/efflect/Sunshine/_element.js ***!
- \*************************************************/
-/*! exports provided: html */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n \\n
\\n
\\n
\\u64AD\\u653E\\u500D\\u6570\\n
\\n \\n \\n
\\n
\\n
\\n
\\u9634\\u5F71\\u67D4\\u548C\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvX2VsZW1lbnQuanM/YjJhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gIHJldHVybiBgXHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5pKt5pS+5YCN5pWwPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwLjAxXCIgbWF4PVwiOTk5OTk5XCIgc3RlcD1cIjEwXCIgQG1vZGVsPVwic3BlZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6Zi05b2x5p+U5ZKM5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIwXCIgbWF4PVwiMVwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJkYXJrbmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPumYtOW9seS8mOWMljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1zd2l0Y2hcIiB0eXBlPVwiY2hlY2tib3hcIiBAbW9kZWw9XCJzb2Z0U2hhZG93XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNTZweDtcIj7ml6XmnJ/pgInmi6k8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJzdW5zaGluZS1kYXRlXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIllZWVktTU0tRERcIiBAbW9kZWw9XCJ0aW1lXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVsaW5lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIiBpZD1cInRpbWVsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBpZD1cInByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhhbmRsZVwiIGlkPVwiaGFuZGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnQtdGltZVwiIGlkPVwiY3VycmVudFRpbWVcIj4wMDowMDowMDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1tYXJrc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInRpbWVQYXVzZVwiPuaaguWBnDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvREE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/_element.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/efflect/Sunshine/eventBinding.js":
-/*!*****************************************************!*\
- !*** ./src/Global/efflect/Sunshine/eventBinding.js ***!
- \*****************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar EventBinding = /*#__PURE__*/function () {\n function EventBinding() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, EventBinding);\n this.element = {};\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(EventBinding, [{\n key: \"getEvent\",\n value: function getEvent(name) {\n return EventBinding.event[name];\n }\n }, {\n key: \"getEventAll\",\n value: function getEventAll() {\n return EventBinding.event;\n }\n }, {\n key: \"setEvent\",\n value: function setEvent(name, event) {\n EventBinding.event[name] = event;\n }\n }, {\n key: \"on\",\n value: function on(that, elements) {\n var _this = this;\n this.element = {};\n var _loop = function _loop() {\n if (!elements[i] || !elements[i].attributes) {\n return 1; // continue\n }\n var Event = {\n 'input': [],\n 'change': [],\n 'blur': [],\n 'click': []\n };\n var isEvent = false;\n var removeName = [];\n var _iterator = _createForOfIteratorHelper(elements[i].attributes),\n _step;\n try {\n var _loop3 = function _loop3() {\n var m = _step.value;\n switch (m.name) {\n case '@model':\n {\n isEvent = true;\n if (elements[i].type == 'checkbox') {\n Event.change.push(function (e) {\n that[m.value] = e.target.checked;\n });\n elements[i].checked = that[m.value];\n } else {\n if (elements[i].type == 'number') {\n Event.input.push(function (e) {\n if (e.target.value || e.target.value === 0) {\n var value = e.target.value;\n value = Number(value);\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n if (!e.target.max && !e.target.min || value <= Number(e.target.max) && value >= Number(e.target.min)) {\n // that[m.value] = value\n value = value;\n }\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n // if ((e.target.dataset.min) && value < Number(e.target.dataset.min)) {\n // value = Number(e.target.dataset.min)\n // }\n that[m.value] = value;\n }\n }\n });\n Event.blur.push(function (e) {\n var value = e.target.value;\n if (e.target.value || e.target.dataset.null !== 'undefined' && e.target.dataset.null !== '' && !Boolean(e.target.dataset.null)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n if (e.target.dataset.min && value < Number(e.target.dataset.min)) {\n value = Number(e.target.dataset.min);\n }\n }\n that[m.value] = value;\n });\n } else {\n Event.input.push(function (e) {\n that[m.value] = e.target.value;\n });\n }\n if (elements[i].nodeName == 'IMG') {\n elements[i].src = that[m.value];\n } else {\n elements[i].value = that[m.value];\n }\n }\n if (_this.element[m.value]) {\n _this.element[m.value].push(elements[i]);\n } else {\n _this.element[m.value] = [elements[i]];\n }\n removeName.push(m.name);\n break;\n }\n case '@click':\n {\n isEvent = true;\n Event.click.push(function (e) {\n if (typeof that[m.value] === 'function') {\n that[m.value](e);\n }\n });\n removeName.push(m.name);\n break;\n }\n }\n // elements[i].attributes[m] = undefined\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop3();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n for (var n = 0; n < removeName.length; n++) {\n elements[i].attributes.removeNamedItem(removeName[n]);\n }\n if (isEvent) {\n var _loop2 = function _loop2(key) {\n if (Event[key].length > 0) {\n elements[i].addEventListener(key, function (e) {\n for (var t = 0; t < Event[key].length; t++) {\n Event[key][t](e);\n }\n });\n }\n };\n for (var key in Event) {\n _loop2(key);\n }\n }\n };\n for (var i = 0; i < elements.length; i++) {\n if (_loop()) continue;\n }\n }\n }]);\n}();\n_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(EventBinding, \"event\", {});\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventBinding);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvZXZlbnRCaW5kaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9lZmZsZWN0L1N1bnNoaW5lL2V2ZW50QmluZGluZy5qcz84MGY5Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEV2ZW50QmluZGluZyB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSB7fVxyXG4gIH1cclxuICBzdGF0aWMgZXZlbnQgPSB7fVxyXG5cclxuICBnZXRFdmVudChuYW1lKSB7XHJcbiAgICByZXR1cm4gRXZlbnRCaW5kaW5nLmV2ZW50W25hbWVdXHJcbiAgfVxyXG5cclxuICBnZXRFdmVudEFsbCgpIHtcclxuICAgIHJldHVybiBFdmVudEJpbmRpbmcuZXZlbnRcclxuICB9XHJcblxyXG4gIHNldEV2ZW50KG5hbWUsIGV2ZW50KSB7XHJcbiAgICBFdmVudEJpbmRpbmcuZXZlbnRbbmFtZV0gPSBldmVudFxyXG4gIH1cclxuXHJcbiAgb24odGhhdCwgZWxlbWVudHMpIHtcclxuICAgIHRoaXMuZWxlbWVudCA9IHt9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICghZWxlbWVudHNbaV0gfHwgIWVsZW1lbnRzW2ldLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgRXZlbnQgPSB7XHJcbiAgICAgICAgJ2lucHV0JzogW10sXHJcbiAgICAgICAgJ2NoYW5nZSc6IFtdLFxyXG4gICAgICAgICdibHVyJzogW10sXHJcbiAgICAgICAgJ2NsaWNrJzogW11cclxuICAgICAgfVxyXG4gICAgICBsZXQgaXNFdmVudCA9IGZhbHNlXHJcbiAgICAgIGxldCByZW1vdmVOYW1lID0gW11cclxuICAgICAgZm9yIChsZXQgbSBvZiBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChtLm5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ0Btb2RlbCc6IHtcclxuICAgICAgICAgICAgaXNFdmVudCA9IHRydWVcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIEV2ZW50LmNoYW5nZS5wdXNoKChlKSA9PiB7IHRoYXRbbS52YWx1ZV0gPSBlLnRhcmdldC5jaGVja2VkIH0pXHJcbiAgICAgICAgICAgICAgZWxlbWVudHNbaV0uY2hlY2tlZCA9IHRoYXRbbS52YWx1ZV1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0udHlwZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgRXZlbnQuaW5wdXQucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgfHwgZS50YXJnZXQudmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEgIT0gJy4nICYmIChlLmRhdGEgIT0gJy0nIHx8IGUudGFyZ2V0LnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCgoIWUudGFyZ2V0Lm1heCkgJiYgKCFlLnRhcmdldC5taW4pKSB8fCAoKHZhbHVlIDw9IE51bWJlcihlLnRhcmdldC5tYXgpKSAmJiB2YWx1ZSA+PSBOdW1iZXIoZS50YXJnZXQubWluKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdFttLnZhbHVlXSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1heClcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKGUudGFyZ2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5kYXRhc2V0Lm1pbilcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIEV2ZW50LmJsdXIucHVzaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudmFsdWUgfHwgKGUudGFyZ2V0LmRhdGFzZXQubnVsbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZS50YXJnZXQuZGF0YXNldC5udWxsICE9PSAnJyAmJiAhQm9vbGVhbihlLnRhcmdldC5kYXRhc2V0Lm51bGwpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWF4KSAmJiB2YWx1ZSA+IE51bWJlcihlLnRhcmdldC5tYXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQubWluKSAmJiB2YWx1ZSA8IE51bWJlcihlLnRhcmdldC5taW4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoZS50YXJnZXQuZGF0YXNldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0LmRhdGFzZXQubWluKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQuZGF0YXNldC5taW4pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBFdmVudC5pbnB1dC5wdXNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoYXRbbS52YWx1ZV0gPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm5vZGVOYW1lID09ICdJTUcnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50c1tpXS5zcmMgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudHNbaV0udmFsdWUgPSB0aGF0W20udmFsdWVdXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRbbS52YWx1ZV0pIHtcclxuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbbS52YWx1ZV0ucHVzaChlbGVtZW50c1tpXSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbbS52YWx1ZV0gPSBbZWxlbWVudHNbaV1dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlICdAY2xpY2snOiB7XHJcbiAgICAgICAgICAgIGlzRXZlbnQgPSB0cnVlXHJcbiAgICAgICAgICAgIEV2ZW50LmNsaWNrLnB1c2goKGUpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodHlwZW9mICh0aGF0W20udmFsdWVdKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgdGhhdFttLnZhbHVlXShlKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmVtb3ZlTmFtZS5wdXNoKG0ubmFtZSlcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsZW1lbnRzW2ldLmF0dHJpYnV0ZXNbbV0gPSB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBuID0gMDsgbiA8IHJlbW92ZU5hbWUubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICBlbGVtZW50c1tpXS5hdHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbShyZW1vdmVOYW1lW25dKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNFdmVudCkge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBFdmVudCkge1xyXG4gICAgICAgICAgaWYgKEV2ZW50W2tleV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBlbGVtZW50c1tpXS5hZGRFdmVudExpc3RlbmVyKGtleSwgKGUpID0+IHtcclxuICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IEV2ZW50W2tleV0ubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgICAgIEV2ZW50W2tleV1bdF0oZSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRXZlbnRCaW5kaW5nO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFrRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQTlHQTtBQUFBO0FBRUE7QUE2R0E7QUFBQTtBQUFBO0FBQUE7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/eventBinding.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/efflect/Sunshine/index.js":
-/*!**********************************************!*\
- !*** ./src/Global/efflect/Sunshine/index.js ***!
- \**********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Sunshine; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Obj_Element_Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../Obj/Element/Dialog */ \"./src/Obj/Element/Dialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_element */ \"./src/Global/efflect/Sunshine/_element.js\");\n/* harmony import */ var _eventBinding__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./eventBinding */ \"./src/Global/efflect/Sunshine/eventBinding.js\");\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _TimeLine__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./TimeLine */ \"./src/Global/efflect/Sunshine/TimeLine.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\r\n * @description 水面\r\n */\n\n\n\n\n\n\n\nvar Sunshine = /*#__PURE__*/function () {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 光照\r\n * @param options {object} 光照属性\r\n * @param options.time=当前时间 {string} 当前时间\r\n * @param options.speed=1000 {number} 速度倍速\r\n * @param options.darkness=0.3 {number} 阴影不透明度--越大越不透明\r\n * @param options.softShadow=false {boolean} 阴影优化--true/false}\r\n * @param Dialog {object} 弹框对象\r\n * @param Dialog.confirmCallBack {function} 弹框确认时的回调\r\n * */\n function Sunshine(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Sunshine);\n this.viewer = sdk.viewer;\n this.options = _objectSpread({}, options);\n this.sdk = _objectSpread({}, sdk);\n var now = new Date();\n now.setHours(0, 0, 0, 0); // 设置为当天0点\n this.options.time = options.time;\n this.options.hour = options.hour;\n this.options.speed = options.speed || 1000;\n this.options.darkness = options.darkness || 0.4;\n this.options.softShadow = options.softShadow || true;\n this.options.show = options.show === true ? true : false;\n this.Dialog = _Dialog;\n this.timeLine;\n this._EventBinding = new _eventBinding__WEBPACK_IMPORTED_MODULE_7__[\"default\"]();\n this._elms = {};\n Sunshine.start(this);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Sunshine, [{\n key: \"darkness\",\n get: function get() {\n return this.options.darkness;\n },\n set: function set(v) {\n this.options.darkness = v;\n this.viewer.shadowMap.darkness = 1.0 - this.options.darkness;\n this._elms.darkness && this._elms.darkness.forEach(function (item) {\n item.value = v;\n });\n }\n }, {\n key: \"time\",\n get: function get() {\n return this.options.time;\n },\n set: function set(v) {\n this.options.time = v;\n var now = new Date();\n var timeData = now.setHours(0, 0, 0, 0); // 设置为当天0点\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n\n // _that.timeLine.updateTime(timeData)\n }\n }, {\n key: \"timeBar\",\n set: function set(v) {\n var timeData = this.time + \" \" + v;\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n this.viewer.scene.requestRender();\n }\n }, {\n key: \"realTime\",\n set: function set(v) {\n var now = new Date();\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(now);\n }\n }, {\n key: \"speed\",\n get: function get() {\n return this.options.speed;\n },\n set: function set(v) {\n this.options.speed = v;\n this._elms.speed && this._elms.speed.forEach(function (item) {\n item.value = v;\n });\n this.viewer.clock.multiplier = this.options.speed;\n // this.timeLine.setSpeed(v)\n }\n }, {\n key: \"softShadow\",\n get: function get() {\n return this.options.softShadow;\n },\n set: function set(v) {\n this.options.softShadow = v;\n this.viewer.shadowMap.softShadows = this.options.softShadow;\n }\n\n /**\r\n * @description 编辑框\r\n * @param state=false {boolean} 状态: true打开, false关闭\r\n */\n }, {\n key: \"edit\",\n value: (function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee() {\n var state,\n tools,\n _this,\n _that,\n jeDateObject,\n printDateElm,\n text,\n all_elm,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n state = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_9__[\"default\"]();\n this.originalOptions = tools.deepCopyObj(this.options);\n\n // let elms = this.sdk.viewer._container.getElementsByClassName('YJ-custom-base-dialog')\n // for (let i = elms.length - 1; i >= 0; i--) {\n // this.sdk.viewer._container.removeChild(elms[i])\n // }\n\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n if (state) {\n _this = this; // this._DialogObject = await new Dialog(this.sdk, this.originalOptions, {\n // title: '光照属性', left: '180px', top: '100px',\n // // confirmCallBack: (options) => {\n // // this.originalOptions = tools.deepCopyObj(this.options)\n // // this._DialogObject.close()\n // // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.originalOptions)\n // // syncData(this.sdk, this.options.id)\n // // syncSplitData(this.sdk, this.options.id)\n // // this.remove()\n // // },\n // resetCallBack: () => {\n // this.reset()\n // this.Dialog.resetCallBack && this.Dialog.resetCallBack()\n // },\n // // removeCallBack: () => {\n // // this.Dialog.removeCallBack && this.Dialog.removeCallBack()\n // // },\n // closeCallBack: () => {\n // this.reset()\n // _this.remove()\n // // this.entity.style = new Cesium.Cesium3DTileStyle({\n // // color: \"color('rgba(255,255,255,\" + this.newData.transparency + \")')\",\n // // show: true,\n // // });\n // this.Dialog.closeCallBack && this.Dialog.closeCallBack()\n // },\n // showCallBack: (show) => {\n // this.show = show\n // this.Dialog.showCallBack && this.Dialog.showCallBack()\n // }\n // }, true)\n // this._DialogObject._element.body.className = this._DialogObject._element.body.className + ' sun-shine-surface'\n // let contentElm = document.createElement('div');\n // contentElm.innerHTML = html()\n // this._DialogObject.contentAppChild(contentElm)\n //时间轴\n _that = this;\n this.timeLine = new _TimeLine__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this.sdk, this.options.speed);\n // this.timeLine.setSpeed(1000)\n this.timeLine.moveComplay(function (item) {\n var timeData = _that.time + \" \" + item;\n _that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n _that.viewer.scene.requestRender();\n });\n printDateElm = contentElm.getElementsByClassName('sunshine-date')[0];\n jeDateObject = jeDate(printDateElm, {\n format: \"YYYY-MM-DD\",\n isinitVal: true,\n isClear: false,\n donefun: function donefun(obj) {\n this.time = obj.val;\n var now = new Date();\n var timeData = now.setHours(0, 0, 0, 0); // 设置为当天0点\n _that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date(timeData));\n _that.timeLine.updateTime(timeData);\n }\n });\n if (this.time) {\n jeDateObject.setValue(this.time);\n } else {\n jeDateObject.nowBtn && jeDateObject.nowBtn();\n this.time = jeDateObject.getValue();\n }\n all_elm = contentElm.getElementsByTagName(\"*\");\n this._EventBinding.on(this, all_elm);\n this._elms = this._EventBinding.element;\n this._elms.color = [jeDateObject];\n } else {\n // if (this._element_style) {\n // document.getElementsByTagName('head')[0].removeChild(this._element_style)\n // this._element_style = null\n // }\n // if (this._DialogObject && this._DialogObject.remove) {\n // this._DialogObject.remove()\n // this._DialogObject = null\n // }\n }\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function edit() {\n return _edit.apply(this, arguments);\n }\n return edit;\n }())\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.viewer.entities.getById(this.options.id)) {\n return;\n }\n this.time = this.originalOptions.time;\n this.speed = this.originalOptions.speed;\n this.darkness = this.originalOptions.darkness;\n }\n\n /**\r\n * 飞到对应实体\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2() {\n var options,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n options = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }()\n /**\r\n * 删除\r\n */\n )\n }, {\n key: \"remove\",\n value: (function () {\n var _remove = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee3() {\n var lightCamera;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n this.viewer.scene.globe.enableLighting = false;\n this.viewer.shadows = false;\n this.viewer.clock.multiplier = 1.0;\n this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(new Date());\n this.entity = null;\n this.timeLine && this.timeLine.clear();\n this.viewer.shadowMap.cascadesEnabled = false;\n this.viewer.shadowMap.size = 1024;\n this.viewer.shadowMap.numberOfCascades = 3; // 增加级联层数(默认3层)\n lightCamera = this.viewer.shadowMap._lightCamera;\n this.viewer.shadowMap.normalOffset = false; // 避免深度冲突导致的阴影闪烁\n\n if (this._DialogObject && !this._DialogObject.isDestroy) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n // await this.sdk.removeIncetance(this.options.id)\n _context3.next = 14;\n return Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_8__[\"syncData\"])(this.sdk, this.options.id);\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function remove() {\n return _remove.apply(this, arguments);\n }\n return remove;\n }())\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }], [{\n key: \"start\",\n value: function start(that) {\n that.viewer.scene.globe.enableLighting = true;\n that.viewer.shadows = true;\n that.viewer.scene.globe.enableLighting = true;\n that.viewer.terrainShadows = Cesium.ShadowMode.RECEIVE_ONLY;\n that.viewer.shadowMap.darkness = 1.0 - that.options.darkness; //阴影透明度--越大越透明\n\n // const now = new Date();\n // now.setHours(0, 0, 0, 0); // 设置为当天0点\n var date;\n if (that.options.time && that.options.hour) {\n date = new Date(that.options.time + \" \" + that.options.hour);\n } else {\n date = new Date();\n date.setHours(0, 0, 0, 0); // 设置为当天0点\n }\n that.viewer.clock.currentTime = Cesium.JulianDate.fromDate(date);\n that.viewer.clock.multiplier = that.options.speed;\n that.viewer.shadowMap.softShadows = that.options.softShadow;\n that.viewer.shadowMap.cascadesEnabled = true;\n that.viewer.shadowMap.size = 2048;\n that.viewer.shadowMap.numberOfCascades = 4; // 增加级联层数(默认3层)\n that.viewer.shadowMap.maximumDistance = 5000; // 扩大阴影渲染距离\n var lightCamera = that.viewer.shadowMap._lightCamera;\n lightCamera.frustum.near = 0.1; // 缩小近平面距离\n lightCamera.frustum.far = 10000; // 扩大远平面距离\n that.viewer.shadowMap.normalOffset = true; // 避免深度冲突导致的阴影闪烁\n\n // that.edit(true)\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvU3Vuc2hpbmUvaW5kZXguanM/YjAxYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGRlc2NyaXB0aW9uIOawtOmdolxyXG4gKi9cclxuaW1wb3J0IERpYWxvZyBmcm9tICcuLi8uLi8uLi9PYmovRWxlbWVudC9EaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IEV2ZW50QmluZGluZyBmcm9tICcuL2V2ZW50QmluZGluZyc7XHJcbmltcG9ydCB7IHN5bmNEYXRhIH0gZnJvbSAnLi4vLi4vTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCBUb29scyBmcm9tICcuLi8uLi8uLi9Ub29scydcclxuaW1wb3J0IFRpbWVMaW5lIGZyb20gJy4vVGltZUxpbmUnXHJcbmltcG9ydCB7IHNldFNwbGl0RGlyZWN0aW9uLCBzeW5jU3BsaXREYXRhLCBzZXRBY3RpdmVJZCB9IGZyb20gJy4uLy4uL1NwbGl0U2NyZWVuJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3Vuc2hpbmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5YWJ54WnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMge29iamVjdH0g5YWJ54Wn5bGe5oCnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMudGltZT3lvZPliY3ml7bpl7Qge3N0cmluZ30g5b2T5YmN5pe26Ze0XHJcbiAgICogQHBhcmFtIG9wdGlvbnMuc3BlZWQ9MTAwMCB7bnVtYmVyfSDpgJ/luqblgI3pgJ9cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5kYXJrbmVzcz0wLjMge251bWJlcn0g6Zi05b2x5LiN6YCP5piO5bqmLS3otorlpKfotorkuI3pgI/mmI5cclxuICAgKiBAcGFyYW0gb3B0aW9ucy5zb2Z0U2hhZG93PWZhbHNlIHtib29sZWFufSDpmLTlvbHkvJjljJYtLXRydWUvZmFsc2V9XHJcbiAgICogQHBhcmFtIERpYWxvZyB7b2JqZWN0fSDlvLnmoYblr7nosaFcclxuICAgKiBAcGFyYW0gRGlhbG9nLmNvbmZpcm1DYWxsQmFjayB7ZnVuY3Rpb259IOW8ueahhuehruiupOaXtueahOWbnuiwg1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy5zZGsgPSB7IC4uLnNkayB9XHJcblxyXG5cclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBub3cuc2V0SG91cnMoMCwgMCwgMCwgMCk7IC8vIOiuvue9ruS4uuW9k+WkqTDngrlcclxuICAgIHRoaXMub3B0aW9ucy50aW1lID0gb3B0aW9ucy50aW1lXHJcbiAgICB0aGlzLm9wdGlvbnMuaG91ciA9IG9wdGlvbnMuaG91clxyXG4gICAgdGhpcy5vcHRpb25zLnNwZWVkID0gb3B0aW9ucy5zcGVlZCB8fCAxMDAwXHJcbiAgICB0aGlzLm9wdGlvbnMuZGFya25lc3MgPSBvcHRpb25zLmRhcmtuZXNzIHx8IDAuNFxyXG4gICAgdGhpcy5vcHRpb25zLnNvZnRTaGFkb3cgPSBvcHRpb25zLnNvZnRTaGFkb3cgfHwgdHJ1ZVxyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSBvcHRpb25zLnNob3cgPT09IHRydWUgPyB0cnVlIDogZmFsc2VcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy50aW1lTGluZVxyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICB0aGlzLl9lbG1zID0ge307XHJcbiAgICBTdW5zaGluZS5zdGFydCh0aGlzKVxyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBzdGFydCh0aGF0KSB7XHJcbiAgICB0aGF0LnZpZXdlci5zY2VuZS5nbG9iZS5lbmFibGVMaWdodGluZyA9IHRydWVcclxuICAgIHRoYXQudmlld2VyLnNoYWRvd3MgPSB0cnVlXHJcbiAgICB0aGF0LnZpZXdlci5zY2VuZS5nbG9iZS5lbmFibGVMaWdodGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhhdC52aWV3ZXIudGVycmFpblNoYWRvd3MgPSBDZXNpdW0uU2hhZG93TW9kZS5SRUNFSVZFX09OTFlcclxuICAgIHRoYXQudmlld2VyLnNoYWRvd01hcC5kYXJrbmVzcyA9IDEuMCAtIHRoYXQub3B0aW9ucy5kYXJrbmVzcyAvL+mYtOW9semAj+aYjuW6pi0t6LaK5aSn6LaK6YCP5piOXHJcblxyXG4gICAgLy8gY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIC8vIG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTsgLy8g6K6+572u5Li65b2T5aSpMOeCuVxyXG4gICAgbGV0IGRhdGVcclxuICAgIGlmICh0aGF0Lm9wdGlvbnMudGltZSAmJiB0aGF0Lm9wdGlvbnMuaG91cikge1xyXG4gICAgICBkYXRlID0gbmV3IERhdGUodGhhdC5vcHRpb25zLnRpbWUgKyBcIiBcIiArIHRoYXQub3B0aW9ucy5ob3VyKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7IC8vIOiuvue9ruS4uuW9k+WkqTDngrlcclxuICAgIH1cclxuICAgIHRoYXQudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUoZGF0ZSk7XHJcbiAgICB0aGF0LnZpZXdlci5jbG9jay5tdWx0aXBsaWVyID0gdGhhdC5vcHRpb25zLnNwZWVkO1xyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLnNvZnRTaGFkb3dzID0gdGhhdC5vcHRpb25zLnNvZnRTaGFkb3c7XHJcbiAgICB0aGF0LnZpZXdlci5zaGFkb3dNYXAuY2FzY2FkZXNFbmFibGVkID0gdHJ1ZVxyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLnNpemUgPSAyMDQ4O1xyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLm51bWJlck9mQ2FzY2FkZXMgPSA0OyAgIC8vIOWinuWKoOe6p+iBlOWxguaVsO+8iOm7mOiupDPlsYLvvIlcclxuICAgIHRoYXQudmlld2VyLnNoYWRvd01hcC5tYXhpbXVtRGlzdGFuY2UgPSA1MDAwOyAvLyDmianlpKfpmLTlvbHmuLLmn5Pot53nprtcclxuICAgIGNvbnN0IGxpZ2h0Q2FtZXJhID0gdGhhdC52aWV3ZXIuc2hhZG93TWFwLl9saWdodENhbWVyYTtcclxuICAgIGxpZ2h0Q2FtZXJhLmZydXN0dW0ubmVhciA9IDAuMTsgICAgLy8g57yp5bCP6L+R5bmz6Z2i6Led56a7XHJcbiAgICBsaWdodENhbWVyYS5mcnVzdHVtLmZhciA9IDEwMDAwOyAgIC8vIOaJqeWkp+i/nOW5s+mdoui3neemu1xyXG4gICAgdGhhdC52aWV3ZXIuc2hhZG93TWFwLm5vcm1hbE9mZnNldCA9IHRydWU7IC8vIOmBv+WFjea3seW6puWGsueqgeWvvOiHtOeahOmYtOW9semXqueDgVxyXG5cclxuICAgIC8vIHRoYXQuZWRpdCh0cnVlKVxyXG4gIH1cclxuICBnZXQgZGFya25lc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRhcmtuZXNzXHJcbiAgfVxyXG4gIHNldCBkYXJrbmVzcyh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZGFya25lc3MgPSB2XHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAuZGFya25lc3MgPSAxLjAgLSB0aGlzLm9wdGlvbnMuZGFya25lc3NcclxuICAgIHRoaXMuX2VsbXMuZGFya25lc3MgJiZcclxuICAgICAgdGhpcy5fZWxtcy5kYXJrbmVzcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0udmFsdWUgPSB2XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCB0aW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50aW1lXHJcbiAgfVxyXG4gIHNldCB0aW1lKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy50aW1lID0gdlxyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGxldCB0aW1lRGF0YSA9IG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTsgLy8g6K6+572u5Li65b2T5aSpMOeCuVxyXG4gICAgdGhpcy52aWV3ZXIuY2xvY2suY3VycmVudFRpbWUgPSBDZXNpdW0uSnVsaWFuRGF0ZS5mcm9tRGF0ZShuZXcgRGF0ZSh0aW1lRGF0YSkpO1xyXG5cclxuICAgIC8vIF90aGF0LnRpbWVMaW5lLnVwZGF0ZVRpbWUodGltZURhdGEpXHJcbiAgfVxyXG4gIHNldCB0aW1lQmFyKHYpIHtcclxuICAgIGxldCB0aW1lRGF0YSA9IHRoaXMudGltZSArIFwiIFwiICsgdlxyXG4gICAgdGhpcy52aWV3ZXIuY2xvY2suY3VycmVudFRpbWUgPSBDZXNpdW0uSnVsaWFuRGF0ZS5mcm9tRGF0ZShuZXcgRGF0ZSh0aW1lRGF0YSkpO1xyXG4gICAgdGhpcy52aWV3ZXIuc2NlbmUucmVxdWVzdFJlbmRlcigpO1xyXG4gIH1cclxuICBzZXQgcmVhbFRpbWUodikge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUobm93KTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgc3BlZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgfVxyXG4gIHNldCBzcGVlZCh2KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuc3BlZWQgPSB2XHJcbiAgICB0aGlzLl9lbG1zLnNwZWVkICYmXHJcbiAgICAgIHRoaXMuX2VsbXMuc3BlZWQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdlxyXG4gICAgICB9KVxyXG4gICAgdGhpcy52aWV3ZXIuY2xvY2subXVsdGlwbGllciA9IHRoaXMub3B0aW9ucy5zcGVlZDtcclxuICAgIC8vIHRoaXMudGltZUxpbmUuc2V0U3BlZWQodilcclxuICB9XHJcbiAgZ2V0IHNvZnRTaGFkb3coKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNvZnRTaGFkb3dcclxuICB9XHJcbiAgc2V0IHNvZnRTaGFkb3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNvZnRTaGFkb3cgPSB2XHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAuc29mdFNoYWRvd3MgPSB0aGlzLm9wdGlvbnMuc29mdFNoYWRvdztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiDnvJbovpHmoYZcclxuICAgKiBAcGFyYW0gc3RhdGU9ZmFsc2Uge2Jvb2xlYW59IOeKtuaAgTogdHJ1ZeaJk+W8gCwgZmFsc2XlhbPpl61cclxuICAgKi9cclxuICBhc3luYyBlZGl0KHN0YXRlID0gZmFsc2UpIHtcclxuICAgIGxldCB0b29scyA9IG5ldyBUb29scygpXHJcbiAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRvb2xzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuXHJcbiAgICAvLyBsZXQgZWxtcyA9IHRoaXMuc2RrLnZpZXdlci5fY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1iYXNlLWRpYWxvZycpXHJcbiAgICAvLyBmb3IgKGxldCBpID0gZWxtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgLy8gICB0aGlzLnNkay52aWV3ZXIuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChlbG1zW2ldKVxyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgICAvLyB0aGlzLl9EaWFsb2dPYmplY3QgPSBhd2FpdCBuZXcgRGlhbG9nKHRoaXMuc2RrLCB0aGlzLm9yaWdpbmFsT3B0aW9ucywge1xyXG4gICAgICAvLyAgIHRpdGxlOiAn5YWJ54Wn5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAvLyAgIC8vIGNvbmZpcm1DYWxsQmFjazogKG9wdGlvbnMpID0+IHtcclxuICAgICAgLy8gICAvLyAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdG9vbHMuZGVlcENvcHlPYmoodGhpcy5vcHRpb25zKVxyXG4gICAgICAvLyAgIC8vICAgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgLy8gICAvLyAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcmlnaW5hbE9wdGlvbnMpXHJcbiAgICAgIC8vICAgLy8gICBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAvLyAgIC8vICAgc3luY1NwbGl0RGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gICAgICAvLyAgIC8vICAgdGhpcy5yZW1vdmUoKVxyXG4gICAgICAvLyAgIC8vIH0sXHJcbiAgICAgIC8vICAgcmVzZXRDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAvLyAgICAgdGhpcy5yZXNldCgpXHJcbiAgICAgIC8vICAgICB0aGlzLkRpYWxvZy5yZXNldENhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlc2V0Q2FsbEJhY2soKVxyXG4gICAgICAvLyAgIH0sXHJcbiAgICAgIC8vICAgLy8gcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgLy8gICAvLyAgIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrICYmIHRoaXMuRGlhbG9nLnJlbW92ZUNhbGxCYWNrKClcclxuICAgICAgLy8gICAvLyB9LFxyXG4gICAgICAvLyAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAvLyAgICAgX3RoaXMucmVtb3ZlKClcclxuICAgICAgLy8gICAgIC8vIHRoaXMuZW50aXR5LnN0eWxlID0gbmV3IENlc2l1bS5DZXNpdW0zRFRpbGVTdHlsZSh7XHJcbiAgICAgIC8vICAgICAvLyAgIGNvbG9yOiBcImNvbG9yKCdyZ2JhKDI1NSwyNTUsMjU1LFwiICsgdGhpcy5uZXdEYXRhLnRyYW5zcGFyZW5jeSArIFwiKScpXCIsXHJcbiAgICAgIC8vICAgICAvLyAgIHNob3c6IHRydWUsXHJcbiAgICAgIC8vICAgICAvLyB9KTtcclxuICAgICAgLy8gICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgIC8vICAgfSxcclxuICAgICAgLy8gICBzaG93Q2FsbEJhY2s6IChzaG93KSA9PiB7XHJcbiAgICAgIC8vICAgICB0aGlzLnNob3cgPSBzaG93XHJcbiAgICAgIC8vICAgICB0aGlzLkRpYWxvZy5zaG93Q2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuc2hvd0NhbGxCYWNrKClcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0sIHRydWUpXHJcbiAgICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoaXMuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgc3VuLXNoaW5lLXN1cmZhY2UnXHJcbiAgICAgIC8vIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgICAgIC8v5pe26Ze06L20XHJcbiAgICAgIGxldCBfdGhhdCA9IHRoaXNcclxuICAgICAgdGhpcy50aW1lTGluZSA9IG5ldyBUaW1lTGluZSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLnNwZWVkKVxyXG4gICAgICAvLyB0aGlzLnRpbWVMaW5lLnNldFNwZWVkKDEwMDApXHJcbiAgICAgIHRoaXMudGltZUxpbmUubW92ZUNvbXBsYXkoaXRlbSA9PiB7XHJcbiAgICAgICAgbGV0IHRpbWVEYXRhID0gX3RoYXQudGltZSArIFwiIFwiICsgaXRlbVxyXG4gICAgICAgIF90aGF0LnZpZXdlci5jbG9jay5jdXJyZW50VGltZSA9IENlc2l1bS5KdWxpYW5EYXRlLmZyb21EYXRlKG5ldyBEYXRlKHRpbWVEYXRhKSk7XHJcbiAgICAgICAgX3RoYXQudmlld2VyLnNjZW5lLnJlcXVlc3RSZW5kZXIoKTtcclxuICAgICAgfSlcclxuICAgICAgbGV0IGplRGF0ZU9iamVjdFxyXG4gICAgICBsZXQgcHJpbnREYXRlRWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdW5zaGluZS1kYXRlJylbMF1cclxuICAgICAgbGV0IHRleHRcclxuXHJcbiAgICAgIGplRGF0ZU9iamVjdCA9IGplRGF0ZShwcmludERhdGVFbG0sIHtcclxuICAgICAgICBmb3JtYXQ6IFwiWVlZWS1NTS1ERFwiLFxyXG4gICAgICAgIGlzaW5pdFZhbDogdHJ1ZSxcclxuICAgICAgICBpc0NsZWFyOiBmYWxzZSxcclxuICAgICAgICBkb25lZnVuOiBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgICB0aGlzLnRpbWUgPSBvYmoudmFsXHJcblxyXG4gICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgIGxldCB0aW1lRGF0YSA9IG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTsgLy8g6K6+572u5Li65b2T5aSpMOeCuVxyXG4gICAgICAgICAgX3RoYXQudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUobmV3IERhdGUodGltZURhdGEpKTtcclxuXHJcbiAgICAgICAgICBfdGhhdC50aW1lTGluZS51cGRhdGVUaW1lKHRpbWVEYXRhKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh0aGlzLnRpbWUpIHtcclxuICAgICAgICBqZURhdGVPYmplY3Quc2V0VmFsdWUodGhpcy50aW1lKVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGplRGF0ZU9iamVjdC5ub3dCdG4gJiYgamVEYXRlT2JqZWN0Lm5vd0J0bigpXHJcbiAgICAgICAgdGhpcy50aW1lID0gamVEYXRlT2JqZWN0LmdldFZhbHVlKClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGFsbF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKVxyXG4gICAgICB0aGlzLl9FdmVudEJpbmRpbmcub24odGhpcywgYWxsX2VsbSlcclxuICAgICAgdGhpcy5fZWxtcyA9IHRoaXMuX0V2ZW50QmluZGluZy5lbGVtZW50XHJcbiAgICAgIHRoaXMuX2VsbXMuY29sb3IgPSBbamVEYXRlT2JqZWN0XVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWYgKHRoaXMuX2VsZW1lbnRfc3R5bGUpIHtcclxuICAgICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRfc3R5bGUpXHJcbiAgICAgIC8vICAgdGhpcy5fZWxlbWVudF9zdHlsZSA9IG51bGxcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5yZW1vdmUpIHtcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QucmVtb3ZlKClcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgaWYgKCF0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMub3B0aW9ucy5pZCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLnRpbWUgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy50aW1lXHJcbiAgICB0aGlzLnNwZWVkID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuc3BlZWRcclxuICAgIHRoaXMuZGFya25lc3MgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5kYXJrbmVzc1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6aOe5Yiw5a+55bqU5a6e5L2TXHJcbiAgICovXHJcbiAgYXN5bmMgZmx5VG8ob3B0aW9ucyA9IHt9KSB7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIGFzeW5jIHJlbW92ZSgpIHtcclxuXHJcbiAgICB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5lbmFibGVMaWdodGluZyA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dzID0gZmFsc2VcclxuICAgIHRoaXMudmlld2VyLmNsb2NrLm11bHRpcGxpZXIgPSAxLjBcclxuICAgIHRoaXMudmlld2VyLmNsb2NrLmN1cnJlbnRUaW1lID0gQ2VzaXVtLkp1bGlhbkRhdGUuZnJvbURhdGUobmV3IERhdGUoKSk7XHJcbiAgICB0aGlzLmVudGl0eSA9IG51bGxcclxuICAgIHRoaXMudGltZUxpbmUgJiYgdGhpcy50aW1lTGluZS5jbGVhcigpXHJcblxyXG4gICAgdGhpcy52aWV3ZXIuc2hhZG93TWFwLmNhc2NhZGVzRW5hYmxlZCA9IGZhbHNlXHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAuc2l6ZSA9IDEwMjQ7XHJcbiAgICB0aGlzLnZpZXdlci5zaGFkb3dNYXAubnVtYmVyT2ZDYXNjYWRlcyA9IDM7ICAgLy8g5aKe5Yqg57qn6IGU5bGC5pWw77yI6buY6K6kM+Wxgu+8iVxyXG4gICAgY29uc3QgbGlnaHRDYW1lcmEgPSB0aGlzLnZpZXdlci5zaGFkb3dNYXAuX2xpZ2h0Q2FtZXJhO1xyXG4gICAgdGhpcy52aWV3ZXIuc2hhZG93TWFwLm5vcm1hbE9mZnNldCA9IGZhbHNlOyAvLyDpgb/lhY3mt7HluqblhrLnqoHlr7zoh7TnmoTpmLTlvbHpl6rng4FcclxuXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmICF0aGlzLl9EaWFsb2dPYmplY3QuaXNEZXN0cm95KSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIC8vIGF3YWl0IHRoaXMuc2RrLnJlbW92ZUluY2V0YW5jZSh0aGlzLm9wdGlvbnMuaWQpXHJcbiAgICBhd2FpdCBzeW5jRGF0YSh0aGlzLnNkaywgdGhpcy5vcHRpb25zLmlkKVxyXG4gIH1cclxuXHJcbiAgZmxpY2tlcigpIHsgfVxyXG59XHJcblxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQW1DQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBckJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUJBO0FBQUE7QUFBQTtBQXRPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Global/efflect/Sunshine/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/efflect/index.js":
-/*!*************************************!*\
- !*** ./src/Global/efflect/index.js ***!
- \*************************************/
-/*! exports provided: rain, snow, fog, nightVision, skyStarry, illumination */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rain\", function() { return rain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"snow\", function() { return snow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fog\", function() { return fog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nightVision\", function() { return nightVision; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"skyStarry\", function() { return skyStarry; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"illumination\", function() { return illumination; });\n/*全局特效*/\n\nvar rainStages = null;\nvar snowStages = null;\nvar fogStages = null;\nvar nightVisionStages = null;\n\n// 雨\nvar FS_Rain = \"uniform sampler2D colorTexture;//\\u8F93\\u5165\\u7684\\u573A\\u666F\\u6E32\\u67D3\\u7167\\u7247\\n varying vec2 v_textureCoordinates;\\n uniform float tiltAngle;\\n uniform float rainSize;\\n uniform float rainWidth;\\n uniform float rainSpeed;\\n\\n float hash(float x){\\n return fract(sin(x*133.3)*13.13);\\n }\\n void main(void){\\n float time = czm_frameNumber / rainSpeed;\\n vec2 resolution = czm_viewport.zw;\\n vec2 uv=(gl_FragCoord.xy*2.-resolution.xy)/min(resolution.x,resolution.y);\\n vec3 c=vec3(.6,.7,.8);\\n float a= tiltAngle;\\n float si=sin(a),co=cos(a);\\n uv*=mat2(co,-si,si,co);\\n uv*=length(uv+vec2(0,4.9))*rainSize+1.;\\n float v=1.-sin(hash(floor(uv.x*rainWidth))*2.);\\n float b=clamp(abs(sin(20.*time*v+uv.y*(5./(2.+v))))-.95,0.,1.)*20.;\\n c*=v*b; //\\u5C4F\\u5E55\\u4E0A\\u96E8\\u7684\\u989C\\u8272\\n gl_FragColor = mix(texture2D(colorTexture, v_textureCoordinates), vec4(c,1), 0.5); //\\u5C06\\u96E8\\u548C\\u4E09\\u7EF4\\u573A\\u666F\\u878D\\u5408\\n }\";\n\n// 雪\nvar FS_Snow = \"uniform sampler2D colorTexture;\\n varying vec2 v_textureCoordinates;\\n uniform float snowSize;\\n uniform float snowSpeed;\\n \\n float snow(vec2 uv,float scale)\\n {\\n float time = czm_frameNumber / snowSpeed;\\n float w=smoothstep(1.,0.,-uv.y*(scale/10.));if(w<.1)return 0.;\\n uv+=time/scale;uv.y+=time*2./scale;uv.x+=sin(uv.y+time*.5)/scale;\\n uv*=scale;vec2 s=floor(uv),f=fract(uv),p;float k=3.,d;\\n p=.5+.35*sin(11.*fract(sin((s+p+scale)*mat2(7,3,6,5))*5.))-f;d=length(p);k=min(d,k);\\n k=smoothstep(0.,k,sin(f.x+f.y)*0.01*snowSize);\\n return k*w;\\n }\\n void main(void){\\n vec2 resolution = czm_viewport.zw;\\n vec2 uv=(gl_FragCoord.xy*2.-resolution.xy)/min(resolution.x,resolution.y);\\n vec3 finalColor=vec3(0);\\n //float c=smoothstep(1.,0.3,clamp(uv.y*.3+.8,0.,.75));\\n float c = 0.0;\\n c+=snow(uv,30.)*.0;\\n c+=snow(uv,20.)*.0;\\n c+=snow(uv,15.)*.0;\\n c+=snow(uv,10.);\\n c+=snow(uv,8.);\\n c+=snow(uv,6.);\\n c+=snow(uv,5.);\\n finalColor=(vec3(c));\\n gl_FragColor = mix(texture2D(colorTexture, v_textureCoordinates), vec4(finalColor,1), 0.5);\\n }\\n \";\n\n// 雾\nvar FS_Fog = \"\\n uniform sampler2D colorTexture;\\n uniform sampler2D depthTexture;\\n uniform float visibility;\\n uniform vec4 fogColor;\\n varying vec2 v_textureCoordinates;\\n void main(void)\\n {\\n vec4 origcolor = texture2D(colorTexture, v_textureCoordinates);\\n float depth = czm_readDepth(depthTexture, v_textureCoordinates);\\n vec4 depthcolor = texture2D(depthTexture, v_textureCoordinates);\\n float f = visibility * (depthcolor.r - 0.3) / 0.2;\\n if (f < 0.0) f = 0.0;\\n else if (f > 1.0) f = 1.0;\\n gl_FragColor = mix(origcolor, fogColor, f);\\n }\\n \";\n\n/*雨天*/\nfunction rain(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'rain') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n rainStages = new Cesium.PostProcessStage({\n name: \"rain\",\n fragmentShader: FS_Rain,\n uniforms: {\n tiltAngle: -0.4,\n // 倾斜角度\n rainSize: 0.3,\n // 雨大小\n rainWidth: 40,\n //雨长度\n rainSpeed: 100 //雨速\n }\n });\n sdk.viewer.scene.postProcessStages.add(rainStages);\n }\n var _require = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require.getSdk;\n var _require2 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require2.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i = 0; _i < _stages.length; _i++) {\n if (_stages[_i].name && _stages[_i].name === 'rain') {\n sdkD.viewer.scene.postProcessStages.remove(_stages[_i]);\n break;\n }\n }\n if (status) {\n rainStages = new Cesium.PostProcessStage({\n name: \"rain\",\n fragmentShader: FS_Rain,\n uniforms: {\n tiltAngle: -0.4,\n // 倾斜角度\n rainSize: 0.3,\n // 雨大小\n rainWidth: 40,\n //雨长度\n rainSpeed: 100 //雨速\n }\n });\n sdkD.viewer.scene.postProcessStages.add(rainStages);\n }\n }\n}\n\n// 雪\nfunction snow(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'snow') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n snowStages = new Cesium.PostProcessStage({\n name: \"snow\",\n fragmentShader: FS_Snow,\n uniforms: {\n snowSize: 2,\n // 大小\n snowSpeed: 60 //速度\n }\n });\n sdk.viewer.scene.postProcessStages.add(snowStages);\n }\n var _require3 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require3.getSdk;\n var _require4 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require4.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages2 = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i2 = 0; _i2 < _stages2.length; _i2++) {\n if (_stages2[_i2].name && _stages2[_i2].name === 'snow') {\n sdkD.viewer.scene.postProcessStages.remove(_stages2[_i2]);\n break;\n }\n }\n if (status) {\n snowStages = new Cesium.PostProcessStage({\n name: \"snow\",\n fragmentShader: FS_Snow,\n uniforms: {\n snowSize: 2,\n // 大小\n snowSpeed: 60 //速度\n }\n });\n sdkD.viewer.scene.postProcessStages.add(snowStages);\n }\n }\n}\n\n// 雾天\nfunction fog(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'fog') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n fogStages = new Cesium.PostProcessStage({\n name: \"fog\",\n fragmentShader: FS_Fog,\n uniforms: {\n visibility: 0.2,\n //\n fogColor: Cesium.Color.WHITE\n }\n });\n sdk.viewer.scene.postProcessStages.add(fogStages);\n }\n var _require5 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require5.getSdk;\n var _require6 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require6.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages3 = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i3 = 0; _i3 < _stages3.length; _i3++) {\n if (_stages3[_i3].name && _stages3[_i3].name === 'fog') {\n sdkD.viewer.scene.postProcessStages.remove(_stages3[_i3]);\n break;\n }\n }\n if (status) {\n fogStages = new Cesium.PostProcessStage({\n name: \"fog\",\n fragmentShader: FS_Fog,\n uniforms: {\n visibility: 0.2,\n //\n fogColor: Cesium.Color.WHITE\n }\n });\n sdkD.viewer.scene.postProcessStages.add(fogStages);\n }\n }\n}\n\n// 夜视\nfunction nightVision(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var stages = sdk.viewer.scene.postProcessStages._stages;\n for (var i = 0; i < stages.length; i++) {\n if (stages[i].name && stages[i].name === 'czm_night_vision') {\n sdk.viewer.scene.postProcessStages.remove(stages[i]);\n break;\n }\n }\n if (status) {\n nightVisionStages = Cesium.PostProcessStageLibrary.createNightVisionStage();\n sdk.viewer.scene.postProcessStages.add(nightVisionStages);\n }\n var _require7 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require7.getSdk;\n var _require8 = __webpack_require__(/*! ../MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\"),\n getSdk2 = _require8.getSdk;\n var sdkD = getSdk().sdkD;\n if (!sdkD) {\n sdkD = getSdk2().sdkD;\n }\n if (sdkD && sdk !== sdkD) {\n var _stages4 = sdkD.viewer.scene.postProcessStages._stages;\n for (var _i4 = 0; _i4 < _stages4.length; _i4++) {\n if (_stages4[_i4].name && _stages4[_i4].name === 'czm_night_vision') {\n sdkD.viewer.scene.postProcessStages.remove(_stages4[_i4]);\n break;\n }\n }\n if (status) {\n nightVisionStages = Cesium.PostProcessStageLibrary.createNightVisionStage();\n sdkD.viewer.scene.postProcessStages.add(nightVisionStages);\n }\n }\n}\n\n// 星空\nfunction skyStarry(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n sdk.viewer.scene.skyAtmosphere.show = !status;\n var _require9 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require9.getSdk;\n var sdkD = getSdk().sdkD;\n if (sdkD && sdk !== sdkD) {\n sdkD.viewer.scene.skyAtmosphere.show = !status;\n }\n}\n\n// 光照\nfunction illumination(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n sdk.viewer.shadows = status;\n sdk.viewer._shadows = status;\n var _require10 = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\"),\n getSdk = _require10.getSdk;\n var sdkD = getSdk().sdkD;\n if (sdkD && sdk !== sdkD) {\n sdkD.viewer.shadows = status;\n sdkD.viewer._shadows = status;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2VmZmxlY3QvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvR2xvYmFsL2VmZmxlY3QvaW5kZXguanM/ODU4NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKuWFqOWxgOeJueaViCovXHJcblxyXG5sZXQgcmFpblN0YWdlcyA9IG51bGw7XHJcbmxldCBzbm93U3RhZ2VzID0gbnVsbDtcclxubGV0IGZvZ1N0YWdlcyA9IG51bGw7XHJcbmxldCBuaWdodFZpc2lvblN0YWdlcyA9IG51bGw7XHJcblxyXG4vLyDpm6hcclxuY29uc3QgRlNfUmFpbiA9IGB1bmlmb3JtIHNhbXBsZXIyRCBjb2xvclRleHR1cmU7Ly/ovpPlhaXnmoTlnLrmma/muLLmn5PnhafniYdcclxuICB2YXJ5aW5nIHZlYzIgdl90ZXh0dXJlQ29vcmRpbmF0ZXM7XHJcbiAgdW5pZm9ybSBmbG9hdCB0aWx0QW5nbGU7XHJcbiAgdW5pZm9ybSBmbG9hdCByYWluU2l6ZTtcclxuICB1bmlmb3JtIGZsb2F0IHJhaW5XaWR0aDtcclxuICB1bmlmb3JtIGZsb2F0IHJhaW5TcGVlZDtcclxuXHJcbiAgZmxvYXQgaGFzaChmbG9hdCB4KXtcclxuICAgICAgcmV0dXJuIGZyYWN0KHNpbih4KjEzMy4zKSoxMy4xMyk7XHJcbiAgfVxyXG4gIHZvaWQgbWFpbih2b2lkKXtcclxuICAgICAgZmxvYXQgdGltZSA9IGN6bV9mcmFtZU51bWJlciAvIHJhaW5TcGVlZDtcclxuICAgICAgdmVjMiByZXNvbHV0aW9uID0gY3ptX3ZpZXdwb3J0Lnp3O1xyXG4gICAgICB2ZWMyIHV2PShnbF9GcmFnQ29vcmQueHkqMi4tcmVzb2x1dGlvbi54eSkvbWluKHJlc29sdXRpb24ueCxyZXNvbHV0aW9uLnkpO1xyXG4gICAgICB2ZWMzIGM9dmVjMyguNiwuNywuOCk7XHJcbiAgICAgIGZsb2F0IGE9IHRpbHRBbmdsZTtcclxuICAgICAgZmxvYXQgc2k9c2luKGEpLGNvPWNvcyhhKTtcclxuICAgICAgdXYqPW1hdDIoY28sLXNpLHNpLGNvKTtcclxuICAgICAgdXYqPWxlbmd0aCh1dit2ZWMyKDAsNC45KSkqcmFpblNpemUrMS47XHJcbiAgICAgIGZsb2F0IHY9MS4tc2luKGhhc2goZmxvb3IodXYueCpyYWluV2lkdGgpKSoyLik7XHJcbiAgICAgIGZsb2F0IGI9Y2xhbXAoYWJzKHNpbigyMC4qdGltZSp2K3V2LnkqKDUuLygyLit2KSkpKS0uOTUsMC4sMS4pKjIwLjtcclxuICAgICAgYyo9dipiOyAvL+Wxj+W5leS4iumbqOeahOminOiJslxyXG4gICAgICBnbF9GcmFnQ29sb3IgPSBtaXgodGV4dHVyZTJEKGNvbG9yVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpLCB2ZWM0KGMsMSksIDAuNSk7IC8v5bCG6Zuo5ZKM5LiJ57u05Zy65pmv6J6N5ZCIXHJcbiAgfWBcclxuXHJcbi8vIOmbqlxyXG5jb25zdCBGU19Tbm93ID0gYHVuaWZvcm0gc2FtcGxlcjJEIGNvbG9yVGV4dHVyZTtcclxuICB2YXJ5aW5nIHZlYzIgdl90ZXh0dXJlQ29vcmRpbmF0ZXM7XHJcbiAgdW5pZm9ybSBmbG9hdCBzbm93U2l6ZTtcclxuICB1bmlmb3JtIGZsb2F0IHNub3dTcGVlZDtcclxuICBcclxuICBmbG9hdCBzbm93KHZlYzIgdXYsZmxvYXQgc2NhbGUpXHJcbiAge1xyXG4gICAgICBmbG9hdCB0aW1lID0gY3ptX2ZyYW1lTnVtYmVyIC8gc25vd1NwZWVkO1xyXG4gICAgICBmbG9hdCB3PXNtb290aHN0ZXAoMS4sMC4sLXV2LnkqKHNjYWxlLzEwLikpO2lmKHc8LjEpcmV0dXJuIDAuO1xyXG4gICAgICB1dis9dGltZS9zY2FsZTt1di55Kz10aW1lKjIuL3NjYWxlO3V2LngrPXNpbih1di55K3RpbWUqLjUpL3NjYWxlO1xyXG4gICAgICB1dio9c2NhbGU7dmVjMiBzPWZsb29yKHV2KSxmPWZyYWN0KHV2KSxwO2Zsb2F0IGs9My4sZDtcclxuICAgICAgcD0uNSsuMzUqc2luKDExLipmcmFjdChzaW4oKHMrcCtzY2FsZSkqbWF0Mig3LDMsNiw1KSkqNS4pKS1mO2Q9bGVuZ3RoKHApO2s9bWluKGQsayk7XHJcbiAgICAgIGs9c21vb3Roc3RlcCgwLixrLHNpbihmLngrZi55KSowLjAxKnNub3dTaXplKTtcclxuICAgICAgcmV0dXJuIGsqdztcclxuICB9XHJcbiAgdm9pZCBtYWluKHZvaWQpe1xyXG4gICAgICB2ZWMyIHJlc29sdXRpb24gPSBjem1fdmlld3BvcnQuenc7XHJcbiAgICAgIHZlYzIgdXY9KGdsX0ZyYWdDb29yZC54eSoyLi1yZXNvbHV0aW9uLnh5KS9taW4ocmVzb2x1dGlvbi54LHJlc29sdXRpb24ueSk7XHJcbiAgICAgIHZlYzMgZmluYWxDb2xvcj12ZWMzKDApO1xyXG4gICAgICAvL2Zsb2F0IGM9c21vb3Roc3RlcCgxLiwwLjMsY2xhbXAodXYueSouMysuOCwwLiwuNzUpKTtcclxuICAgICAgZmxvYXQgYyA9IDAuMDtcclxuICAgICAgYys9c25vdyh1diwzMC4pKi4wO1xyXG4gICAgICBjKz1zbm93KHV2LDIwLikqLjA7XHJcbiAgICAgIGMrPXNub3codXYsMTUuKSouMDtcclxuICAgICAgYys9c25vdyh1diwxMC4pO1xyXG4gICAgICBjKz1zbm93KHV2LDguKTtcclxuICAgICAgYys9c25vdyh1diw2Lik7XHJcbiAgICAgIGMrPXNub3codXYsNS4pO1xyXG4gICAgICBmaW5hbENvbG9yPSh2ZWMzKGMpKTtcclxuICAgICAgZ2xfRnJhZ0NvbG9yID0gbWl4KHRleHR1cmUyRChjb2xvclRleHR1cmUsIHZfdGV4dHVyZUNvb3JkaW5hdGVzKSwgdmVjNChmaW5hbENvbG9yLDEpLCAwLjUpO1xyXG4gIH1cclxuICBgO1xyXG5cclxuLy8g6Zu+XHJcbmNvbnN0IEZTX0ZvZyA9IGBcclxuICB1bmlmb3JtIHNhbXBsZXIyRCBjb2xvclRleHR1cmU7XHJcbiAgdW5pZm9ybSBzYW1wbGVyMkQgZGVwdGhUZXh0dXJlO1xyXG4gIHVuaWZvcm0gZmxvYXQgdmlzaWJpbGl0eTtcclxuICB1bmlmb3JtIHZlYzQgZm9nQ29sb3I7XHJcbiAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZUNvb3JkaW5hdGVzO1xyXG4gIHZvaWQgbWFpbih2b2lkKVxyXG4gIHtcclxuICAgIHZlYzQgb3JpZ2NvbG9yID0gdGV4dHVyZTJEKGNvbG9yVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpO1xyXG4gICAgZmxvYXQgZGVwdGggPSBjem1fcmVhZERlcHRoKGRlcHRoVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpO1xyXG4gICAgdmVjNCBkZXB0aGNvbG9yID0gdGV4dHVyZTJEKGRlcHRoVGV4dHVyZSwgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpO1xyXG4gICAgZmxvYXQgZiA9IHZpc2liaWxpdHkgKiAoZGVwdGhjb2xvci5yIC0gMC4zKSAvIDAuMjtcclxuICAgIGlmIChmIDwgMC4wKSBmID0gMC4wO1xyXG4gICAgZWxzZSBpZiAoZiA+IDEuMCkgZiA9IDEuMDtcclxuICAgIGdsX0ZyYWdDb2xvciA9IG1peChvcmlnY29sb3IsIGZvZ0NvbG9yLCBmKTtcclxuICB9XHJcbiAgYDtcclxuXHJcblxyXG4vKumbqOWkqSovXHJcbmZ1bmN0aW9uIHJhaW4oc2RrLCBzdGF0dXMgPSBmYWxzZSkge1xyXG4gIGxldCBzdGFnZXMgPSBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLl9zdGFnZXNcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHN0YWdlc1tpXS5uYW1lICYmIHN0YWdlc1tpXS5uYW1lID09PSAncmFpbicpIHtcclxuICAgICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5yZW1vdmUoc3RhZ2VzW2ldKVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICByYWluU3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgbmFtZTogXCJyYWluXCIsXHJcbiAgICAgIGZyYWdtZW50U2hhZGVyOiBGU19SYWluLFxyXG4gICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgIHRpbHRBbmdsZTogLTAuNCwgLy8g5YC+5pac6KeS5bqmXHJcbiAgICAgICAgcmFpblNpemU6IDAuMywgLy8g6Zuo5aSn5bCPXHJcbiAgICAgICAgcmFpbldpZHRoOiA0MCwgLy/pm6jplb/luqZcclxuICAgICAgICByYWluU3BlZWQ6IDEwMCwgLy/pm6jpgJ9cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5hZGQocmFpblN0YWdlcyk7XHJcbiAgfVxyXG5cclxuICBsZXQgeyBnZXRTZGsgfSA9IHJlcXVpcmUoJy4uL1NwbGl0U2NyZWVuJylcclxuICBsZXQgeyBnZXRTZGs6IGdldFNkazIgfSA9IHJlcXVpcmUoJy4uL011bHRpVmlld3BvcnRNb2RlJylcclxuICBsZXQgc2RrRCA9IGdldFNkaygpLnNka0RcclxuICBpZighc2RrRCkge1xyXG4gICAgc2RrRCA9IGdldFNkazIoKS5zZGtEXHJcbiAgfVxyXG4gIGlmKHNka0QgJiYgc2RrICE9PSBzZGtEKSB7XHJcbiAgICBsZXQgc3RhZ2VzID0gc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuX3N0YWdlc1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHN0YWdlc1tpXS5uYW1lICYmIHN0YWdlc1tpXS5uYW1lID09PSAncmFpbicpIHtcclxuICAgICAgICBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5yZW1vdmUoc3RhZ2VzW2ldKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgcmFpblN0YWdlcyA9IG5ldyBDZXNpdW0uUG9zdFByb2Nlc3NTdGFnZSh7XHJcbiAgICAgICAgbmFtZTogXCJyYWluXCIsXHJcbiAgICAgICAgZnJhZ21lbnRTaGFkZXI6IEZTX1JhaW4sXHJcbiAgICAgICAgdW5pZm9ybXM6IHtcclxuICAgICAgICAgIHRpbHRBbmdsZTogLTAuNCwgLy8g5YC+5pac6KeS5bqmXHJcbiAgICAgICAgICByYWluU2l6ZTogMC4zLCAvLyDpm6jlpKflsI9cclxuICAgICAgICAgIHJhaW5XaWR0aDogNDAsIC8v6Zuo6ZW/5bqmXHJcbiAgICAgICAgICByYWluU3BlZWQ6IDEwMCwgLy/pm6jpgJ9cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuYWRkKHJhaW5TdGFnZXMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8g6ZuqXHJcbmZ1bmN0aW9uIHNub3coc2RrLCBzdGF0dXMgPSBmYWxzZSkge1xyXG4gIGxldCBzdGFnZXMgPSBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLl9zdGFnZXNcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHN0YWdlc1tpXS5uYW1lICYmIHN0YWdlc1tpXS5uYW1lID09PSAnc25vdycpIHtcclxuICAgICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5yZW1vdmUoc3RhZ2VzW2ldKVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzbm93U3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgbmFtZTogXCJzbm93XCIsXHJcbiAgICAgIGZyYWdtZW50U2hhZGVyOiBGU19Tbm93LFxyXG4gICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgIHNub3dTaXplOiAyLCAvLyDlpKflsI9cclxuICAgICAgICBzbm93U3BlZWQ6IDYwLCAvL+mAn+W6plxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLmFkZChzbm93U3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCB7IGdldFNkazogZ2V0U2RrMiB9ID0gcmVxdWlyZSgnLi4vTXVsdGlWaWV3cG9ydE1vZGUnKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U2RrMigpLnNka0RcclxuICB9XHJcbiAgaWYoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIGxldCBzdGFnZXMgPSBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdzbm93Jykge1xyXG4gICAgICAgIHNka0Qudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLnJlbW92ZShzdGFnZXNbaV0pXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBzbm93U3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgICBuYW1lOiBcInNub3dcIixcclxuICAgICAgICBmcmFnbWVudFNoYWRlcjogRlNfU25vdyxcclxuICAgICAgICB1bmlmb3Jtczoge1xyXG4gICAgICAgICAgc25vd1NpemU6IDIsIC8vIOWkp+Wwj1xyXG4gICAgICAgICAgc25vd1NwZWVkOiA2MCwgLy/pgJ/luqZcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuYWRkKHNub3dTdGFnZXMpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8g6Zu+5aSpXHJcbmZ1bmN0aW9uIGZvZyhzZGssIHN0YXR1cyA9IGZhbHNlKSB7XHJcbiAgbGV0IHN0YWdlcyA9IHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuX3N0YWdlc1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdmb2cnKSB7XHJcbiAgICAgIHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMucmVtb3ZlKHN0YWdlc1tpXSlcclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKHN0YXR1cykge1xyXG4gICAgZm9nU3RhZ2VzID0gbmV3IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlKHtcclxuICAgICAgbmFtZTogXCJmb2dcIixcclxuICAgICAgZnJhZ21lbnRTaGFkZXI6IEZTX0ZvZyxcclxuICAgICAgdW5pZm9ybXM6IHtcclxuICAgICAgICB2aXNpYmlsaXR5OiAwLjIsIC8vXHJcbiAgICAgICAgZm9nQ29sb3I6IENlc2l1bS5Db2xvci5XSElURSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5hZGQoZm9nU3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCB7IGdldFNkazogZ2V0U2RrMiB9ID0gcmVxdWlyZSgnLi4vTXVsdGlWaWV3cG9ydE1vZGUnKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U2RrMigpLnNka0RcclxuICB9XHJcbiAgaWYoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIGxldCBzdGFnZXMgPSBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdmb2cnKSB7XHJcbiAgICAgICAgc2RrRC52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMucmVtb3ZlKHN0YWdlc1tpXSlcclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIGZvZ1N0YWdlcyA9IG5ldyBDZXNpdW0uUG9zdFByb2Nlc3NTdGFnZSh7XHJcbiAgICAgICAgbmFtZTogXCJmb2dcIixcclxuICAgICAgICBmcmFnbWVudFNoYWRlcjogRlNfRm9nLFxyXG4gICAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgICB2aXNpYmlsaXR5OiAwLjIsIC8vXHJcbiAgICAgICAgICBmb2dDb2xvcjogQ2VzaXVtLkNvbG9yLldISVRFLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5hZGQoZm9nU3RhZ2VzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIOWknOinhlxyXG5mdW5jdGlvbiBuaWdodFZpc2lvbihzZGssIHN0YXR1cyA9IGZhbHNlKSB7XHJcbiAgbGV0IHN0YWdlcyA9IHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuX3N0YWdlc1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdjem1fbmlnaHRfdmlzaW9uJykge1xyXG4gICAgICBzZGsudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLnJlbW92ZShzdGFnZXNbaV0pXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChzdGF0dXMpIHtcclxuICAgIG5pZ2h0VmlzaW9uU3RhZ2VzID0gQ2VzaXVtLlBvc3RQcm9jZXNzU3RhZ2VMaWJyYXJ5LmNyZWF0ZU5pZ2h0VmlzaW9uU3RhZ2UoKTtcclxuICAgIHNkay52aWV3ZXIuc2NlbmUucG9zdFByb2Nlc3NTdGFnZXMuYWRkKG5pZ2h0VmlzaW9uU3RhZ2VzKTtcclxuICB9XHJcblxyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCB7IGdldFNkazogZ2V0U2RrMiB9ID0gcmVxdWlyZSgnLi4vTXVsdGlWaWV3cG9ydE1vZGUnKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKCFzZGtEKSB7XHJcbiAgICBzZGtEID0gZ2V0U2RrMigpLnNka0RcclxuICB9XHJcbiAgaWYoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIGxldCBzdGFnZXMgPSBzZGtELnZpZXdlci5zY2VuZS5wb3N0UHJvY2Vzc1N0YWdlcy5fc3RhZ2VzXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoc3RhZ2VzW2ldLm5hbWUgJiYgc3RhZ2VzW2ldLm5hbWUgPT09ICdjem1fbmlnaHRfdmlzaW9uJykge1xyXG4gICAgICAgIHNka0Qudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLnJlbW92ZShzdGFnZXNbaV0pXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBuaWdodFZpc2lvblN0YWdlcyA9IENlc2l1bS5Qb3N0UHJvY2Vzc1N0YWdlTGlicmFyeS5jcmVhdGVOaWdodFZpc2lvblN0YWdlKCk7XHJcbiAgICAgIHNka0Qudmlld2VyLnNjZW5lLnBvc3RQcm9jZXNzU3RhZ2VzLmFkZChuaWdodFZpc2lvblN0YWdlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyDmmJ/nqbpcclxuZnVuY3Rpb24gc2t5U3RhcnJ5KHNkaywgc3RhdHVzID0gZmFsc2UpIHtcclxuICBzZGsudmlld2VyLnNjZW5lLnNreUF0bW9zcGhlcmUuc2hvdyA9ICFzdGF0dXNcclxuICBsZXQgeyBnZXRTZGsgfSA9IHJlcXVpcmUoJy4uL1NwbGl0U2NyZWVuJylcclxuICBsZXQgc2RrRCA9IGdldFNkaygpLnNka0RcclxuICBpZihzZGtEICYmIHNkayAhPT0gc2RrRCkge1xyXG4gICAgc2RrRC52aWV3ZXIuc2NlbmUuc2t5QXRtb3NwaGVyZS5zaG93ID0gIXN0YXR1c1xyXG4gIH1cclxufVxyXG5cclxuLy8g5YWJ54WnXHJcbmZ1bmN0aW9uIGlsbHVtaW5hdGlvbihzZGssIHN0YXR1cyA9IGZhbHNlKSB7XHJcbiAgc2RrLnZpZXdlci5zaGFkb3dzID0gc3RhdHVzXHJcbiAgc2RrLnZpZXdlci5fc2hhZG93cyA9IHN0YXR1c1xyXG4gIGxldCB7IGdldFNkayB9ID0gcmVxdWlyZSgnLi4vU3BsaXRTY3JlZW4nKVxyXG4gIGxldCBzZGtEID0gZ2V0U2RrKCkuc2RrRFxyXG4gIGlmKHNka0QgJiYgc2RrICE9PSBzZGtEKSB7XHJcbiAgICBzZGtELnZpZXdlci5zaGFkb3dzID0gc3RhdHVzXHJcbiAgICBzZGtELnZpZXdlci5fc2hhZG93cyA9IHN0YXR1c1xyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCB7IHJhaW4sIHNub3csIGZvZywgbmlnaHRWaXNpb24sIHNreVN0YXJyeSwgaWxsdW1pbmF0aW9uIH1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBd0JBO0FBQ0E7QUFDQTtBQWdDQTtBQUNBO0FBQ0E7QUFrQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/efflect/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/global.js":
-/*!******************************!*\
- !*** ./src/Global/global.js ***!
- \******************************/
-/*! exports provided: getCurrentView, setDefaultView, flyTo, CameraController, CesiumContainer, setBillboardDefaultUrl, getBillboardDefaultUrl, setGroundCover, getGroundCover, getBimPickStatus, setBimPickStatus, rotateAround, closeRotateAround, closeViewFollow, FlwStatusSwitch, JwwStatusSwitch, getFlwStatus, getJwwStatus, getCoordinateSystem, setCoordinateSystem, getDMS, setDMS, cameraChanged, setMaximumRequestsPerServer, setKeyboardEventActive, getTheme, setTheme, getCesiumIndexedDBMaxSize, setCesiumIndexedDBMaxSize, getCesiumManageIndexexDBState, setCesiumManageIndexexDBState, getCesiumIndexedDBCurrentSize, setActiveViewer, enablePerspective */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentView\", function() { return getCurrentView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDefaultView\", function() { return setDefaultView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flyTo\", function() { return flyTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CameraController\", function() { return CameraController; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CesiumContainer\", function() { return CesiumContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setBillboardDefaultUrl\", function() { return setBillboardDefaultUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBillboardDefaultUrl\", function() { return getBillboardDefaultUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setGroundCover\", function() { return setGroundCover; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getGroundCover\", function() { return getGroundCover; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBimPickStatus\", function() { return getBimPickStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setBimPickStatus\", function() { return setBimPickStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotateAround\", function() { return rotateAround; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeRotateAround\", function() { return closeRotateAround; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeViewFollow\", function() { return closeViewFollow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FlwStatusSwitch\", function() { return FlwStatusSwitch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"JwwStatusSwitch\", function() { return JwwStatusSwitch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFlwStatus\", function() { return getFlwStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getJwwStatus\", function() { return getJwwStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCoordinateSystem\", function() { return getCoordinateSystem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCoordinateSystem\", function() { return setCoordinateSystem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDMS\", function() { return getDMS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDMS\", function() { return setDMS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cameraChanged\", function() { return cameraChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumRequestsPerServer\", function() { return setMaximumRequestsPerServer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setKeyboardEventActive\", function() { return setKeyboardEventActive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCesiumIndexedDBMaxSize\", function() { return getCesiumIndexedDBMaxSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCesiumIndexedDBMaxSize\", function() { return setCesiumIndexedDBMaxSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCesiumManageIndexexDBState\", function() { return getCesiumManageIndexexDBState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCesiumManageIndexexDBState\", function() { return setCesiumManageIndexexDBState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCesiumIndexedDBCurrentSize\", function() { return getCesiumIndexedDBCurrentSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveViewer\", function() { return setActiveViewer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enablePerspective\", function() { return enablePerspective; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Tools_proj__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Tools/proj */ \"./src/Tools/proj.js\");\n/* harmony import */ var _Obj_Element_theme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Obj/Element/theme */ \"./src/Obj/Element/theme.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTheme\", function() { return _Obj_Element_theme__WEBPACK_IMPORTED_MODULE_6__[\"getTheme\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setTheme\", function() { return _Obj_Element_theme__WEBPACK_IMPORTED_MODULE_6__[\"setTheme\"]; });\n\n/* harmony import */ var _MultiViewportMode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./MultiViewportMode */ \"./src/Global/MultiViewportMode/index.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* harmony import */ var _cluster_cluster__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./cluster/cluster */ \"./src/Global/cluster/cluster.js\");\n/* harmony import */ var _on__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../on */ \"./src/on/index.js\");\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n/**\r\n * @name: global\r\n * @author: Administrator\r\n * @date: 2023-12-01 14:15\r\n * @description:global\r\n * @update: 2023-12-01 14:15\r\n */\n\n/*获取当前视角*/\n\n\n\n\n\n\n\n\nvar coordinateSystem = 'EPSG:4326';\nvar positionType = '度';\nvar _cartesian;\nvar GroundCover = true;\nvar bimPickObject = {};\nvar containerObject = {};\nvar rotateAroundObject = {};\nfunction getCurrentView(sdk) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n var viewer = sdk.viewer;\n return JSON.parse(JSON.stringify({\n // heading: viewer.camera.heading,\n // pitch: viewer.camera.pitch,\n // roll: viewer.camera.roll,\n position: tools.cartesian3Towgs84(viewer.camera.position, viewer),\n orientation: {\n heading: Cesium.Math.toDegrees(viewer.camera.heading),\n pitch: Cesium.Math.toDegrees(viewer.camera.pitch),\n roll: Cesium.Math.toDegrees(viewer.camera.roll)\n }\n }));\n}\n\n/*设置默认视角*/\nfunction setDefaultView(sdk, options) {\n var viewer = sdk.viewer;\n if (options) {\n viewer.CAMERA_DEFAULT_VIEW_RECTANGLE = {\n destination: options.destination || {},\n orientation: options.orientation || {}\n };\n } else {\n viewer.CAMERA_DEFAULT_VIEW_RECTANGLE = undefined;\n //设置cesium的默认视角\n Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(\n //西边的经度\n 89.5,\n //南边的纬度\n 10.4,\n //东边的经度\n 110.4,\n //北边的维度\n 61.2);\n }\n}\n\n/*定位到指定视角*/\nfunction flyTo(_x, _x2) {\n return _flyTo.apply(this, arguments);\n}\n/*相机锁定*/\nfunction _flyTo() {\n _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee3(sdk, options) {\n var duration,\n tools,\n destination,\n orientation,\n h,\n bbox,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n duration = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : 3;\n tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"](sdk);\n orientation = options.orientation;\n if (!options.position) {\n _context3.next = 13;\n break;\n }\n if (!(options.position.alt !== 0 && !options.position.alt)) {\n _context3.next = 8;\n break;\n }\n _context3.next = 7;\n return tools.getClampToHeight(options.position);\n case 7:\n options.position.alt = _context3.sent;\n case 8:\n h = 0;\n if (!orientation) {\n h = 500;\n }\n destination = Cesium.Cartesian3.fromDegrees(options.position.lng, options.position.lat, options.position.alt + h);\n _context3.next = 15;\n break;\n case 13:\n bbox = tools.cal_envelope(options.positions);\n destination = new Cesium.Rectangle(Cesium.Math.toRadians(bbox[3][0]), Cesium.Math.toRadians(bbox[3][1]), Cesium.Math.toRadians(bbox[1][0]), Cesium.Math.toRadians(bbox[1][1]));\n case 15:\n closeRotateAround(sdk);\n sdk.viewer.camera.flyTo({\n destination: destination,\n duration: duration,\n orientation: orientation,\n complete: options.complete\n });\n case 17:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _flyTo.apply(this, arguments);\n}\nfunction CameraController(sdk) {\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (!sdk || !sdk.viewer) {\n return;\n }\n var viewer = sdk.viewer;\n viewer.scene.screenSpaceCameraController.enableRotate = status;\n viewer.scene.screenSpaceCameraController.enableTranslate = status;\n viewer.scene.screenSpaceCameraController.enableZoom = status;\n viewer.scene.screenSpaceCameraController.enableTilt = status;\n viewer.scene.screenSpaceCameraController.enableLook = status;\n}\n\n/*控件显隐*/\nfunction CesiumContainer(sdk, options) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n containerObject[sdk.viewer._element.className] || (containerObject[sdk.viewer._element.className] = {});\n containerObject[sdk.viewer._element.className].event && containerObject[sdk.viewer._element.className].event.destroy();\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"](sdk);\n var element = sdk.viewer._element;\n var proj = sdk.proj;\n var _loop = function _loop() {\n switch (key) {\n case 'compass':\n var compass = element.getElementsByClassName('compass')[0];\n var navigation = element.getElementsByClassName('navigation-controls')[0];\n if (options[key]) {\n compass && (compass.style.display = 'block');\n navigation && (navigation.style.display = 'flex');\n } else {\n compass && (compass.style.display = 'none');\n navigation && (navigation.style.display = 'none');\n }\n break;\n case 'legend':\n var distanceLegend = element.getElementsByClassName('distance-legend')[0];\n if (options[key]) {\n distanceLegend && (distanceLegend.parentNode.style.display = 'block');\n } else {\n distanceLegend && (distanceLegend.parentNode.style.display = 'none');\n }\n break;\n case 'info':\n var infoElm = element.getElementsByClassName('cesium-info')[0];\n if (options[key]) {\n var update = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var position, result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (_cartesian) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\");\n case 2:\n // let pos = sdk.viewer.scene.clampToHeight(_cartesian)\n position = tools.cartesian3Towgs84(_cartesian, sdk.viewer); // position.alt = height\n if (!(coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490')) {\n _context.next = 16;\n break;\n }\n _context.t0 = positionType || '度';\n _context.next = _context.t0 === '度' ? 7 : _context.t0 === '度分' ? 9 : _context.t0 === '度分秒' ? 11 : 13;\n break;\n case 7:\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(Number(position.lng.toFixed(8)), \"\\xB0
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(Number(position.lat.toFixed(8)), \"\\xB0
\\n \\u9AD8\\u7A0B\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n return _context.abrupt(\"break\", 14);\n case 9:\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, true), \"
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, true), \"
\\n \\u9AD8\\u7A0B\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n return _context.abrupt(\"break\", 14);\n case 11:\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, false), \"
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, false), \"
\\n \\u9AD8\\u7A0B\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n return _context.abrupt(\"break\", 14);\n case 13:\n return _context.abrupt(\"break\", 14);\n case 14:\n _context.next = 18;\n break;\n case 16:\n // let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem)\n result = proj.convert([{\n x: position.lng,\n y: position.lat,\n z: position.alt\n }], 'EPSG:4326', posiToCoordinate(coordinateSystem, position));\n if (result.points.length) {\n infoElm.innerHTML = \"\\n x\\uFF1A\".concat(Number(result.points[0].x.toFixed(2)), \"
\\n y\\uFF1A\").concat(Number(result.points[0].y.toFixed(2)), \"
\\n z\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)), \"
\\n \");\n }\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function update() {\n return _ref.apply(this, arguments);\n };\n }();\n if (infoElm) {\n update();\n infoElm.style.display = 'block';\n } else {\n infoElm = document.createElement('div');\n infoElm.className = \"cesium-info\";\n infoElm.style.position = 'absolute';\n infoElm.style.bottom = '32px';\n infoElm.style.right = '240px';\n infoElm.style['font-size'] = '14px';\n infoElm.style['background-color'] = 'rgba(47,53,60,.8)';\n infoElm.style.color = '#fff';\n infoElm.style.padding = '4px 10px';\n infoElm.style['border-radius'] = '18px';\n infoElm.style.display = 'flex';\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A-
\\n \\u7EAC\\u5EA6\\uFF1A-
\\n \\u9AD8\\u7A0B\\uFF1A-
\\n \";\n } else {\n infoElm.innerHTML = \"\\n x\\uFF1A-
\\n y\\uFF1A-
\\n z\\uFF1A-
\\n \";\n }\n sdk.viewer._element.appendChild(infoElm);\n }\n var event = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n containerObject[sdk.viewer._element.className].event = event;\n var lastPickTime = 0;\n var timeoutEvent;\n event.mouse_move(function (movement, cartesian) {\n _cartesian = cartesian;\n // const now = Date.now();\n // if (now - lastPickTime < 500) {\n // clearTimeout(timeoutEvent)\n // timeoutEvent = setTimeout(() => {\n // update()\n // }, 500);\n // return\n // }\n // lastPickTime = now;\n update();\n });\n } else {\n infoElm && (infoElm.style.display = 'none');\n }\n break;\n case 'frame':\n if (options[key]) {\n sdk.viewer.scene.debugShowFramesPerSecond = true;\n setTimeout(function () {\n var cesiumWidgetContainerElm = sdk.viewer._element.getElementsByClassName('cesium-viewer-cesiumWidgetContainer')[0];\n var defaultContainer = cesiumWidgetContainerElm.getElementsByClassName('cesium-performanceDisplay-defaultContainer')[0];\n if (defaultContainer) {\n cesiumWidgetContainerElm.appendChild(defaultContainer);\n }\n }, 50);\n } else {\n sdk.viewer.scene.debugShowFramesPerSecond = false;\n }\n break;\n }\n };\n for (var key in options) {\n _loop();\n }\n // let compass = element.getElementsByClassName('compass')[0]\n // let navigation = element.getElementsByClassName('navigation-controls')[0]\n // let distanceLegend = element.getElementsByClassName('distance-legend')[0]\n // if(status) {\n // compass && (compass.style.display = 'block')\n // navigation && (navigation.style.display = 'block')\n // distanceLegend && (distanceLegend.style.display = 'block')\n // }\n // else {\n // compass && (compass.style.display = 'none')\n // navigation && (navigation.style.display = 'none')\n // distanceLegend && (distanceLegend.style.display = 'none')\n // viewer.cesiumNavigation.distanceLegendViewModel.destroy()\n // }\n}\n\n/*设置广告牌默认图标*/\nfunction setBillboardDefaultUrl(url, name) {\n if (name) {\n name = 'billboard_default_url_' + name;\n } else {\n name = 'billboard_default_url';\n }\n var host = Object(_on__WEBPACK_IMPORTED_MODULE_10__[\"getHost\"])();\n if (!url.startsWith(\"http\")) {\n //说明是本地的json,在磁盘中存在的\n if (!url.includes(\":\")) {\n if (host) {\n var o = new URL(url, host);\n url = o.href;\n }\n }\n }\n localStorage.setItem(name, url);\n}\n/*获取广告牌默认图标*/\nfunction getBillboardDefaultUrl(name) {\n if (name) {\n name = 'billboard_default_url_' + name;\n } else {\n name = 'billboard_default_url';\n }\n return localStorage.getItem(name);\n}\n\n/*设置高度参考*/\nfunction setGroundCover(sdk, status) {\n GroundCover = status ? true : false;\n Object(_cluster_cluster__WEBPACK_IMPORTED_MODULE_9__[\"updateCluster\"])(sdk.viewer);\n}\n\n/*获取高度参考*/\nfunction getGroundCover() {\n return GroundCover;\n}\nfunction setBimPickStatus(sdk, status) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n bimPickObject[sdk.viewer._element.className] || (bimPickObject[sdk.viewer._element.className] = {});\n bimPickObject[sdk.viewer._element.className].status = status;\n if (bimPickObject[sdk.viewer._element.className].MoveHandler) {\n bimPickObject[sdk.viewer._element.className].MoveHandler.destroy();\n }\n if (!status) {\n return;\n }\n bimPickObject[sdk.viewer._element.className].MoveHandler = new Cesium.ScreenSpaceEventHandler(sdk.viewer.canvas);\n bimPickObject[sdk.viewer._element.className].MoveHandler.setInputAction(function (movement) {\n var pick = sdk.viewer.scene.pick(movement.endPosition);\n var selectedId = bimPickObject[sdk.viewer._element.className].selectedId;\n var that = sdk.entityMap.get(bimPickObject[sdk.viewer._element.className].id);\n // if (selectedFeatureId) {\n // let color = '#fff'\n // let state = selectedFeature.getProperty('state')\n // switch (state) {\n // case '0':\n // color = '#fff'\n // break;\n // case '1':\n // color = '#f00'\n // break;\n // case '2':\n // color = '#0f0'\n // break;\n // case '3':\n // color = '#00f'\n // break;\n // default:\n // }\n // selectedFeature.color = Cesium.Color.fromCssColorString(color).withAlpha(selectedFeature.tileset.transparency)\n // }\n if (that) {\n if (that.features.has(selectedId)) {\n var features = that.features.get(selectedId).features;\n for (var key in features) {\n if (features[key].content._model) {\n var color = features[key].customColor || Cesium.Color.fromCssColorString('#fff');\n features[key].color = Cesium.Color.fromCssColorString(\"rgba(\".concat(Cesium.Color.floatToByte(color.red), \",\").concat(Cesium.Color.floatToByte(color.green), \",\").concat(Cesium.Color.floatToByte(color.blue), \",\").concat(color.alpha * (features[key].customAlpha || features[key].customAlpha === 0 ? features[key].customAlpha : 1), \")\"));\n }\n }\n }\n }\n if (pick && pick.content) {\n var obj = sdk.getIncetance(pick.content.tileset.id);\n if (obj.type === 'bim') {\n if (pick.primitive && pick.primitive.id) {\n var _that = sdk.entityMap.get(pick.primitive.id);\n selectedId = pick.getProperty('id');\n if (_that.features.has(selectedId)) {\n var _features = _that.features.get(selectedId).features;\n for (var _key in _features) {\n if (_features[_key].content._model) {\n _features[_key].color = Cesium.Color.fromCssColorString('#ffeb3b');\n }\n }\n }\n bimPickObject[sdk.viewer._element.className].id = pick.primitive.id;\n bimPickObject[sdk.viewer._element.className].selectedId = selectedId;\n }\n } else {\n pick.primitive.id = null;\n }\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n}\nfunction getBimPickStatus(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n return bimPickObject[sdk.viewer._element.className] ? bimPickObject[sdk.viewer._element.className].status : false;\n}\n\n/* 围绕坐标旋转 */\nfunction rotateAround(sdk, position) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n setActiveViewer(0);\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n // 关闭Controller\n sdk.entityMap.forEach(function (item) {\n item.editObj && item.editObj.destroy();\n item.ControllerObject && item.ControllerObject.destroy();\n });\n rotateAroundObject[sdk.viewer._element.className] || (rotateAroundObject[sdk.viewer._element.className] = {});\n rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy();\n if (!position) {\n CameraController(sdk, true);\n return;\n }\n var point = Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.alt);\n var angle = Cesium.Math.toDegrees(sdk.viewer.camera.heading);\n var range = Cesium.Cartesian3.distance(sdk.viewer.camera.position, point);\n CameraController(sdk, false);\n var pitch = sdk.viewer.camera.pitch;\n var degrees = Cesium.Math.toDegrees(pitch);\n if (degrees < -89.99) {\n pitch = Cesium.Math.toRadians(-89.99);\n }\n rotateAroundObject[sdk.viewer._element.className].animate = new TWEEN.Tween({\n angle: angle\n }).to({\n angle: angle - 360\n }, 30000).easing(TWEEN.Easing.Linear.None).repeat(Infinity).onUpdate(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(r, a) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (sdk.viewer) {\n _context2.next = 3;\n break;\n }\n TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n return _context2.abrupt(\"return\");\n case 3:\n sdk.viewer.camera.lookAt(point, new Cesium.HeadingPitchRange(Cesium.Math.toRadians(r.angle), pitch, range));\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }()).start();\n var event = new _Event_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sdk);\n rotateAroundObject[sdk.viewer._element.className].event = event;\n event.mouse_left_down(function () {\n rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy();\n CameraController(sdk, true);\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n });\n}\n\n/* 关闭围绕坐标旋转 */\nfunction closeRotateAround(sdk) {\n if (!sdk || !sdk.viewer) {\n return;\n }\n if (rotateAroundObject[sdk.viewer._element.className]) {\n rotateAroundObject[sdk.viewer._element.className].animate && TWEEN.remove(rotateAroundObject[sdk.viewer._element.className].animate);\n rotateAroundObject[sdk.viewer._element.className].event && rotateAroundObject[sdk.viewer._element.className].event.destroy();\n CameraController(sdk, true);\n sdk.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);\n }\n}\nfunction closeViewFollow(sdk) {\n if (sdk && sdk.entityMap) {\n var entityMap = sdk.entityMap;\n var _iterator = _createForOfIteratorHelper(entityMap),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n if (value.type === 'TrajectoryMotion' && value.viewFollow) {\n value.viewFollow = false;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n}\n\n/* 方里网状态开关 */\nfunction FlwStatusSwitch(sdk, status) {\n if (!sdk) {\n return;\n }\n var layer;\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"getSdk\"])().sdkD;\n if (sdkD && sdk !== sdkD) {\n FlwStatusSwitch(sdkD, status);\n }\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw') {\n layer = sdk.viewer.imageryLayers._layers[i];\n break;\n }\n }\n if (layer) {\n sdk.viewer.imageryLayers.remove(layer);\n }\n if (status) {\n sdk.viewer.imageryLayers.addImageryProvider(new Cesium.TileCoordinatesImageryProviderFlw({\n tileWidth: 128,\n tileHeight: 128\n }));\n }\n}\nfunction getFlwStatus(sdk) {\n var status = false;\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'flw') {\n status = true;\n break;\n }\n }\n return status;\n}\n\n/* 经纬网状态开关 */\nfunction JwwStatusSwitch(sdk, status) {\n if (!sdk) {\n return;\n }\n var layer;\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"getSdk\"])().sdkD;\n if (sdkD && sdk !== sdkD) {\n JwwStatusSwitch(sdkD, status);\n }\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww') {\n layer = sdk.viewer.imageryLayers._layers[i];\n break;\n }\n }\n if (layer) {\n sdk.viewer.imageryLayers.remove(layer);\n }\n if (status) {\n sdk.viewer.imageryLayers.addImageryProvider(new Cesium.TileCoordinatesImageryProviderJww());\n }\n}\nfunction getJwwStatus(sdk) {\n var status = false;\n for (var i = 0; i < sdk.viewer.imageryLayers._layers.length; i++) {\n if (sdk.viewer.imageryLayers._layers[i]._imageryProvider && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type && sdk.viewer.imageryLayers._layers[i]._imageryProvider._type === 'jww') {\n status = true;\n break;\n }\n }\n return status;\n}\nfunction splitScreen2(sdk, status) {\n var sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n var leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdk.viewer._element.removeChild(sliderElm);\n sdk.viewer._element.removeChild(leftElm);\n sdk.viewer._element.removeChild(rightElm);\n }\n if (status) {\n var mousemove = function mousemove(a, b) {\n if (sdk.viewer._element.getElementsByTagName('canvas')[0] === a.target) {\n sliderElm.style.left = a.offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n sdk.viewer.scene.splitPosition = a.offsetX / sdk.viewer._element.scrollWidth;\n }\n };\n sliderElm = document.createElement('div');\n sliderElm.className = 'YJ-custom-slider';\n sliderElm.style.position = 'absolute';\n sliderElm.style.left = '50%';\n sliderElm.style.top = '0px';\n leftElm = document.createElement('input');\n leftElm.className = 'YJ-custom-checkbox-left';\n leftElm.type = 'checkbox';\n leftElm.style.position = 'absolute';\n leftElm.style.left = 'calc(50% - 50px)';\n rightElm = document.createElement('input');\n rightElm.className = 'YJ-custom-checkbox-right';\n rightElm.type = 'checkbox';\n rightElm.style.position = 'absolute';\n rightElm.style.right = 'calc(50% - 50px)';\n sdk.viewer._element.appendChild(leftElm);\n sdk.viewer._element.appendChild(rightElm);\n leftElm.checked = true;\n leftElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!rightElm.checked) {\n rightElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n rightElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!leftElm.checked) {\n leftElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n sliderElm.addEventListener('mousedown', function () {\n document.body.addEventListener('mousemove', mousemove);\n sliderElm.addEventListener('mouseup', function () {\n document.body.removeEventListener('mousemove', mousemove);\n });\n });\n sdk.viewer._element.appendChild(sliderElm);\n sdk.viewer.scene.splitStatus = status;\n sdk.viewer.scene.splitPosition = 0.5;\n changeEntitySplitStatus();\n } else {\n sdk.viewer.scene.splitPosition = 0;\n changeEntitySplitStatus(0);\n sdk.viewer.scene.splitStatus = status;\n }\n function changeEntitySplitStatus(v) {\n var value;\n if (v === undefined || v === null) {\n if (leftElm.checked && rightElm.checked) {\n value = 0;\n } else {\n if (leftElm.checked) {\n value = -1;\n }\n if (rightElm.checked) {\n value = 1;\n }\n }\n } else {\n value = v;\n }\n sdk.entityMap.forEach(function (item, key) {\n if (sdk.viewer.scene.splitStatus) {\n if (item.entity.billboard) {\n item.entity.billboard.splitDirection = value;\n } else {\n item.entity && (item.entity.splitDirection = value);\n }\n }\n });\n }\n}\nfunction splitScreen(sdk, status) {\n var sliderElm = sdk.viewer._element.getElementsByClassName('YJ-custom-slider')[0];\n var leftElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-left')[0];\n var rightElm = sdk.viewer._element.getElementsByClassName('YJ-custom-checkbox-right')[0];\n if (sliderElm) {\n sdk.viewer._element.removeChild(sliderElm);\n sdk.viewer._element.removeChild(leftElm);\n sdk.viewer._element.removeChild(rightElm);\n }\n if (status) {\n var mousemove = function mousemove(a, b) {\n if (sdk.viewer._element.getElementsByTagName('canvas')[0] === a.target) {\n sliderElm.style.left = a.offsetX / sdk.viewer._element.scrollWidth * 100 + '%';\n sdk.viewer.scene.splitPosition = a.offsetX / sdk.viewer._element.scrollWidth;\n }\n };\n sliderElm = document.createElement('div');\n sliderElm.className = 'YJ-custom-slider';\n sliderElm.style.position = 'absolute';\n sliderElm.style.left = '50%';\n sliderElm.style.top = '0px';\n leftElm = document.createElement('input');\n leftElm.className = 'YJ-custom-checkbox-left';\n leftElm.type = 'checkbox';\n leftElm.style.position = 'absolute';\n leftElm.style.left = 'calc(50% - 50px)';\n rightElm = document.createElement('input');\n rightElm.className = 'YJ-custom-checkbox-right';\n rightElm.type = 'checkbox';\n rightElm.style.position = 'absolute';\n rightElm.style.right = 'calc(50% - 50px)';\n sdk.viewer._element.appendChild(leftElm);\n sdk.viewer._element.appendChild(rightElm);\n leftElm.checked = true;\n leftElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!rightElm.checked) {\n rightElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n rightElm.addEventListener('change', function (e) {\n if (!e.target.checked) {\n if (!leftElm.checked) {\n leftElm.checked = true;\n }\n }\n changeEntitySplitStatus();\n });\n sliderElm.addEventListener('mousedown', function () {\n document.body.addEventListener('mousemove', mousemove);\n sliderElm.addEventListener('mouseup', function () {\n document.body.removeEventListener('mousemove', mousemove);\n });\n });\n sdk.viewer._element.appendChild(sliderElm);\n sdk.viewer.scene.splitStatus = status;\n sdk.viewer.scene.splitPosition = 0.5;\n changeEntitySplitStatus();\n } else {\n sdk.viewer.scene.splitPosition = 0;\n changeEntitySplitStatus(0);\n sdk.viewer.scene.splitStatus = status;\n }\n function changeEntitySplitStatus(v) {\n var value;\n if (v === undefined || v === null) {\n if (leftElm.checked && rightElm.checked) {\n value = 0;\n } else {\n if (leftElm.checked) {\n value = -1;\n }\n if (rightElm.checked) {\n value = 1;\n }\n }\n } else {\n value = v;\n }\n sdk.entityMap.forEach(function (item, key) {\n if (sdk.viewer.scene.splitStatus) {\n if (item.entity.billboard) {\n item.entity.billboard.splitDirection = value;\n } else {\n item.entity && (item.entity.splitDirection = value);\n }\n }\n });\n }\n}\nfunction getCoordinateSystem() {\n return coordinateSystem;\n}\nfunction setCoordinateSystem(sdk, epsg) {\n coordinateSystem = epsg || 'EPSG:4326';\n if (!sdk || !sdk.viewer || !sdk.viewer._element) {\n return;\n }\n var infoElm = sdk.viewer._element.getElementsByClassName('cesium-info')[0];\n if (!_cartesian || !infoElm) {\n return;\n }\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n var proj = sdk.proj;\n var position = tools.cartesian3Towgs84(_cartesian, sdk.viewer);\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n // infoElm.innerHTML = `\n // 经度:${Number(position.lng.toFixed(6))}° \n // 纬度:${Number(position.lat.toFixed(6))}° \n // 海拔高度:${Number(position.alt.toFixed(2))}米\n // `\n switch (positionType || '度') {\n case '度':\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(Number(position.lng.toFixed(8)), \"\\xB0
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(Number(position.lat.toFixed(8)), \"\\xB0
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分':\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, true), \"
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, true), \"
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分秒':\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, false), \"
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, false), \"
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n default:\n break;\n }\n } else {\n // let result = proj.convert([{ x: position.lng, y: position.lat, z: position.alt }], 'EPSG:4326', coordinateSystem)\n var result = proj.convert([{\n x: position.lng,\n y: position.lat,\n z: position.alt\n }], 'EPSG:4326', posiToCoordinate(coordinateSystem, position));\n infoElm.innerHTML = \"\\n x\\uFF1A\".concat(Number(result.points[0].x.toFixed(2)), \"
\\n y\\uFF1A\").concat(Number(result.points[0].y.toFixed(2)), \"
\\n z\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)), \"
\\n \");\n }\n}\nfunction posiToCoordinate(coordinateSystem, position) {\n var type;\n switch (coordinateSystem) {\n case 'EPSG:32601':\n //WGS84 通用横轴墨卡托投影\n //带号 = ⌊(经度 + 180)/6⌋ + 1\n var dh = Math.floor((position.lng + 180) / 6 + 1);\n if (position.lat > 0) {\n //北纬\n type = 32600 + dh;\n type = 'EPSG:' + type;\n } else {\n //南纬\n type = 32700 + dh;\n type = 'EPSG:' + type;\n }\n break;\n case 'EPSG:4534':\n //2000 坐标 3 度不带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4534\n\n var dh3y = Math.round(position.lng / 3);\n type = dh3y - 25 + 4534;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4513':\n //2000 坐标 3 度带代号\n //N = round(经度/3)\n //EPSG = N - 25 + 4513\n var dh3w = Math.round(position.lng / 3);\n type = dh3w - 25 + 4513;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4502':\n //2000 坐标 6 度不带代号\n var zoneNumber = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (zoneNumber < 13) zoneNumber = 13;\n if (zoneNumber > 23) zoneNumber = 23;\n type = zoneNumber - 13 + 4502;\n type = 'EPSG:' + type;\n break;\n case 'EPSG:4491':\n //2000 坐标 6 度带代号\n //N = floor(longitude/6) + 31\n var dh6 = Math.floor(position.lng / 6) + 31;\n // 中国区域6度带带号范围为13-23\n if (dh6 < 13) dh6 = 13;\n if (dh6 > 23) dh6 = 23;\n type = dh6 - 13 + 4491;\n type = 'EPSG:' + type;\n break;\n default:\n break;\n }\n return type;\n}\nfunction getDMS() {\n return positionType;\n}\nfunction setDMS(sdk, type) {\n if (coordinateSystem !== 'EPSG:4326' && coordinateSystem !== 'EPSG:4490') {\n return;\n }\n positionType = type;\n if (!sdk || !sdk.viewer || !sdk.viewer._element) {\n return;\n }\n var infoElm = sdk.viewer._element.getElementsByClassName('cesium-info')[0];\n if (!_cartesian || !infoElm) {\n return;\n }\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n var proj = sdk.proj;\n var position = tools.cartesian3Towgs84(_cartesian, sdk.viewer);\n switch (type) {\n case '度':\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(Number(position.lng.toFixed(6)), \"\\xB0
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(Number(position.lat.toFixed(6)), \"\\xB0
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分':\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, true), \"
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, true), \"
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n case '度分秒':\n infoElm.innerHTML = \"\\n \\u7ECF\\u5EA6\\uFF1A\".concat(proj.degreesToDMS(position.lng, false), \"
\\n \\u7EAC\\u5EA6\\uFF1A\").concat(proj.degreesToDMS(position.lat, false), \"
\\n \\u6D77\\u62D4\\u9AD8\\u5EA6\\uFF1A\").concat(Number(position.alt.toFixed(2)), \"\\u7C73
\\n \");\n break;\n default:\n break;\n }\n proj.degreesToDMS(position.lng, true);\n}\nfunction cameraChanged(sdk, cb) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_4__[\"default\"]();\n //设置相机变化的监听事件\n var removeChanged = sdk.viewer.camera.changed.addEventListener(function (percentage) {\n cb({\n position: tools.cartesian3Towgs84(sdk.viewer.camera.position, sdk.viewer),\n orientation: {\n heading: sdk.viewer.camera.heading,\n pitch: sdk.viewer.camera.pitch,\n roll: sdk.viewer.camera.roll\n }\n });\n });\n return removeChanged;\n}\nfunction setMaximumRequestsPerServer(v) {\n if (typeof v == 'number') Cesium.RequestScheduler.maximumRequestsPerServer = v;\n}\n\n/* 键盘事件 */\nfunction setKeyboardEventActive(sdk, status) {\n if (!sdk) {\n return;\n }\n if (status) {\n sdk.viewer._disableKeyboardEvent = false;\n } else {\n sdk.viewer._disableKeyboardEvent = true;\n }\n}\nfunction getCesiumIndexedDBMaxSize() {\n var baseUnit = 1024 * 1024 * 1024;\n var size = Number(Number(localStorage.getItem('IndexedDBMaxSize')).toFixed(0));\n if (isNaN(size) || size < baseUnit) {\n size = baseUnit;\n }\n return size;\n}\nfunction setCesiumIndexedDBMaxSize(v) {\n var baseUnit = 1024 * 1024 * 1024;\n var maxSize = Number(Number(v).toFixed(0));\n if (isNaN(maxSize) || maxSize < baseUnit) {\n maxSize = baseUnit;\n }\n Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.SetIndexedDBMaxSize(maxSize);\n localStorage.setItem('IndexedDBMaxSize', maxSize);\n}\nfunction getCesiumManageIndexexDBState() {\n var state = localStorage.getItem('ManageIndexexDBState');\n if (state === 'false') {\n return false;\n }\n return Boolean(state);\n}\nfunction setCesiumManageIndexexDBState(v) {\n if (typeof v === \"boolean\") {\n Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.SetManageIndexexDBState(v);\n localStorage.setItem('ManageIndexexDBState', v);\n } else {\n console.error(\"参数必须为boolean\");\n }\n}\nfunction getCesiumIndexedDBCurrentSize() {\n return Cesium.ManageIndexedDB && Cesium.ManageIndexedDB.GetIndexedDBCurrentSize();\n}\nfunction setActiveViewer(v) {\n Object(_MultiViewportMode__WEBPACK_IMPORTED_MODULE_7__[\"setActiveViewer\"])(v);\n Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_8__[\"setActiveViewer\"])(v);\n}\n\n// 设置地球透明度\nfunction enablePerspective(sdk) {\n var alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n if (!alpha && alpha != 0) {\n alpha = 1;\n }\n sdk.viewer.scene.globe.translucency.frontFaceAlpha = alpha;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9HbG9iYWwvZ2xvYmFsLmpzPzI2ZTMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBnbG9iYWxcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMy0xMi0wMSAxNDoxNVxyXG4gKiBAZGVzY3JpcHRpb27vvJpnbG9iYWxcclxuICogQHVwZGF0ZTogMjAyMy0xMi0wMSAxNDoxNVxyXG4gKi9cclxuXHJcbi8q6I635Y+W5b2T5YmN6KeG6KeSKi9cclxuaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSAnLi4vRXZlbnQvaW5kZXgnXHJcbmltcG9ydCBUb29scyBmcm9tIFwiLi4vVG9vbHNcIjtcclxuaW1wb3J0IHsgUHJvaiB9IGZyb20gXCIuLi9Ub29scy9wcm9qXCI7XHJcbmltcG9ydCB7IGdldFRoZW1lLCBzZXRUaGVtZSB9IGZyb20gXCIuLi9PYmovRWxlbWVudC90aGVtZVwiO1xyXG5pbXBvcnQgeyBzZXRBY3RpdmVWaWV3ZXIgYXMgc2V0TXVsdGlWaWV3cG9ydEFjdGl2ZVZpZXdlciB9IGZyb20gJy4vTXVsdGlWaWV3cG9ydE1vZGUnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciBhcyBzZXRTcGxpdEFjdGl2ZVZpZXdlciwgZ2V0U2RrIH0gZnJvbSAnLi9TcGxpdFNjcmVlbidcclxuaW1wb3J0IHsgdXBkYXRlQ2x1c3RlciB9IGZyb20gJy4vY2x1c3Rlci9jbHVzdGVyJ1xyXG5pbXBvcnQgeyBnZXRIb3N0IH0gZnJvbSBcIi4uL29uXCI7XHJcblxyXG5sZXQgY29vcmRpbmF0ZVN5c3RlbSA9ICdFUFNHOjQzMjYnXHJcbmxldCBwb3NpdGlvblR5cGUgPSAn5bqmJ1xyXG5sZXQgX2NhcnRlc2lhblxyXG5sZXQgR3JvdW5kQ292ZXIgPSB0cnVlXHJcbmxldCBiaW1QaWNrT2JqZWN0ID0ge31cclxubGV0IGNvbnRhaW5lck9iamVjdCA9IHt9XHJcbmxldCByb3RhdGVBcm91bmRPYmplY3QgPSB7fVxyXG5mdW5jdGlvbiBnZXRDdXJyZW50VmlldyhzZGspIHtcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgLy8gaGVhZGluZzogdmlld2VyLmNhbWVyYS5oZWFkaW5nLFxyXG4gICAgLy8gcGl0Y2g6IHZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAvLyByb2xsOiB2aWV3ZXIuY2FtZXJhLnJvbGwsXHJcbiAgICBwb3NpdGlvbjogdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQodmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgdmlld2VyKSxcclxuICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgIGhlYWRpbmc6IENlc2l1bS5NYXRoLnRvRGVncmVlcyh2aWV3ZXIuY2FtZXJhLmhlYWRpbmcpLFxyXG4gICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHZpZXdlci5jYW1lcmEucGl0Y2gpLFxyXG4gICAgICByb2xsOiBDZXNpdW0uTWF0aC50b0RlZ3JlZXModmlld2VyLmNhbWVyYS5yb2xsKVxyXG4gICAgfVxyXG4gIH0pKVxyXG59XHJcblxyXG4vKuiuvue9rum7mOiupOinhuinkiovXHJcbmZ1bmN0aW9uIHNldERlZmF1bHRWaWV3KHNkaywgb3B0aW9ucykge1xyXG4gIGxldCB2aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgaWYgKG9wdGlvbnMpIHtcclxuICAgIHZpZXdlci5DQU1FUkFfREVGQVVMVF9WSUVXX1JFQ1RBTkdMRSA9IHtcclxuICAgICAgZGVzdGluYXRpb246IG9wdGlvbnMuZGVzdGluYXRpb24gfHwge30sXHJcbiAgICAgIG9yaWVudGF0aW9uOiBvcHRpb25zLm9yaWVudGF0aW9uIHx8IHt9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgdmlld2VyLkNBTUVSQV9ERUZBVUxUX1ZJRVdfUkVDVEFOR0xFID0gdW5kZWZpbmVkXHJcbiAgICAvL+iuvue9rmNlc2l1beeahOm7mOiupOinhuinklxyXG4gICAgQ2VzaXVtLkNhbWVyYS5ERUZBVUxUX1ZJRVdfUkVDVEFOR0xFID0gQ2VzaXVtLlJlY3RhbmdsZS5mcm9tRGVncmVlcyhcclxuICAgICAgLy/opb/ovrnnmoTnu4/luqZcclxuICAgICAgODkuNSxcclxuICAgICAgLy/ljZfovrnnmoTnuqzluqZcclxuICAgICAgMTAuNCxcclxuICAgICAgLy/kuJzovrnnmoTnu4/luqZcclxuICAgICAgMTEwLjQsXHJcbiAgICAgIC8v5YyX6L6555qE57u05bqmXHJcbiAgICAgIDYxLjJcclxuICAgIClcclxuICB9XHJcbn1cclxuXHJcbi8q5a6a5L2N5Yiw5oyH5a6a6KeG6KeSKi9cclxuYXN5bmMgZnVuY3Rpb24gZmx5VG8oc2RrLCBvcHRpb25zLCBkdXJhdGlvbiA9IDMpIHtcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoc2RrKVxyXG4gIGxldCBkZXN0aW5hdGlvblxyXG4gIGxldCBvcmllbnRhdGlvbiA9IG9wdGlvbnMub3JpZW50YXRpb25cclxuICBpZiAob3B0aW9ucy5wb3NpdGlvbikge1xyXG4gICAgaWYgKG9wdGlvbnMucG9zaXRpb24uYWx0ICE9PSAwICYmICFvcHRpb25zLnBvc2l0aW9uLmFsdCkge1xyXG4gICAgICBvcHRpb25zLnBvc2l0aW9uLmFsdCA9IGF3YWl0IHRvb2xzLmdldENsYW1wVG9IZWlnaHQob3B0aW9ucy5wb3NpdGlvbilcclxuICAgIH1cclxuICAgIGxldCBoID0gMFxyXG4gICAgaWYgKCFvcmllbnRhdGlvbikge1xyXG4gICAgICBoID0gNTAwXHJcbiAgICB9XHJcbiAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKG9wdGlvbnMucG9zaXRpb24ubG5nLCBvcHRpb25zLnBvc2l0aW9uLmxhdCwgb3B0aW9ucy5wb3NpdGlvbi5hbHQgKyBoKVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGxldCBiYm94ID0gdG9vbHMuY2FsX2VudmVsb3BlKG9wdGlvbnMucG9zaXRpb25zKVxyXG4gICAgZGVzdGluYXRpb24gPSBuZXcgQ2VzaXVtLlJlY3RhbmdsZShcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGJib3hbM11bMF0pLFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoYmJveFszXVsxXSksXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhiYm94WzFdWzBdKSxcclxuICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKGJib3hbMV1bMV0pXHJcbiAgICApXHJcbiAgfVxyXG4gIGNsb3NlUm90YXRlQXJvdW5kKHNkaylcclxuICBzZGsudmlld2VyLmNhbWVyYS5mbHlUbyh7IGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgb3JpZW50YXRpb24sIGNvbXBsZXRlOiBvcHRpb25zLmNvbXBsZXRlLCB9KVxyXG59XHJcblxyXG4vKuebuOacuumUgeWumiovXHJcbmZ1bmN0aW9uIENhbWVyYUNvbnRyb2xsZXIoc2RrLCBzdGF0dXMgPSB0cnVlKSB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgdmlld2VyID0gc2RrLnZpZXdlclxyXG4gIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlUm90YXRlID0gc3RhdHVzO1xyXG4gIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVHJhbnNsYXRlID0gc3RhdHVzO1xyXG4gIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlWm9vbSA9IHN0YXR1cztcclxuICB2aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVRpbHQgPSBzdGF0dXM7XHJcbiAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rID0gc3RhdHVzO1xyXG59XHJcblxyXG4vKuaOp+S7tuaYvumakCovXHJcbmZ1bmN0aW9uIENlc2l1bUNvbnRhaW5lcihzZGssIG9wdGlvbnMpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0gfHwgKGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0gPSB7fSlcclxuICBjb250YWluZXJPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmV2ZW50ICYmIGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQuZGVzdHJveSgpXHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICBsZXQgZWxlbWVudCA9IHNkay52aWV3ZXIuX2VsZW1lbnRcclxuICBsZXQgcHJvaiA9IHNkay5wcm9qXHJcbiAgZm9yIChsZXQga2V5IGluIG9wdGlvbnMpIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgJ2NvbXBhc3MnOlxyXG4gICAgICAgIGxldCBjb21wYXNzID0gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wYXNzJylbMF1cclxuICAgICAgICBsZXQgbmF2aWdhdGlvbiA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbmF2aWdhdGlvbi1jb250cm9scycpWzBdXHJcbiAgICAgICAgaWYgKG9wdGlvbnNba2V5XSkge1xyXG4gICAgICAgICAgY29tcGFzcyAmJiAoY29tcGFzcy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJylcclxuICAgICAgICAgIG5hdmlnYXRpb24gJiYgKG5hdmlnYXRpb24uc3R5bGUuZGlzcGxheSA9ICdmbGV4JylcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb21wYXNzICYmIChjb21wYXNzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgICBuYXZpZ2F0aW9uICYmIChuYXZpZ2F0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdsZWdlbmQnOlxyXG4gICAgICAgIGxldCBkaXN0YW5jZUxlZ2VuZCA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZGlzdGFuY2UtbGVnZW5kJylbMF1cclxuICAgICAgICBpZiAob3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICBkaXN0YW5jZUxlZ2VuZCAmJiAoZGlzdGFuY2VMZWdlbmQucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJylcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBkaXN0YW5jZUxlZ2VuZCAmJiAoZGlzdGFuY2VMZWdlbmQucGFyZW50Tm9kZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaW5mbyc6XHJcbiAgICAgICAgbGV0IGluZm9FbG0gPSBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS1pbmZvJylbMF1cclxuICAgICAgICBpZiAob3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICBpZiAoaW5mb0VsbSkge1xyXG4gICAgICAgICAgICB1cGRhdGUoKVxyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaW5mb0VsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICBpbmZvRWxtLmNsYXNzTmFtZSA9IFwiY2VzaXVtLWluZm9cIlxyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZS5ib3R0b20gPSAnMzJweCc7XHJcbiAgICAgICAgICAgIGluZm9FbG0uc3R5bGUucmlnaHQgPSAnMjQwcHgnO1xyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlWydmb250LXNpemUnXSA9ICcxNHB4JztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gJ3JnYmEoNDcsNTMsNjAsLjgpJztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZS5jb2xvciA9ICcjZmZmJztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZS5wYWRkaW5nID0gJzRweCAxMHB4JztcclxuICAgICAgICAgICAgaW5mb0VsbS5zdHlsZVsnYm9yZGVyLXJhZGl1cyddID0gJzE4cHgnO1xyXG4gICAgICAgICAgICBpbmZvRWxtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XHJcblxyXG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgICAgICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPi08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4tPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7pq5jnqIvvvJo8L3NwYW4+PHNwYW4+LTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICBgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPnjvvJo8L3NwYW4+PHNwYW4+LTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+ee+8mjwvc3Bhbj48c3Bhbj4tPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3Bhbj5677yaPC9zcGFuPjxzcGFuPi08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoaW5mb0VsbSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KHNkaylcclxuICAgICAgICAgIGNvbnRhaW5lck9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgPSBldmVudFxyXG4gICAgICAgICAgbGV0IGxhc3RQaWNrVGltZSA9IDA7XHJcbiAgICAgICAgICBsZXQgdGltZW91dEV2ZW50XHJcbiAgICAgICAgICBldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgICAgIF9jYXJ0ZXNpYW4gPSBjYXJ0ZXNpYW5cclxuICAgICAgICAgICAgLy8gY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgLy8gaWYgKG5vdyAtIGxhc3RQaWNrVGltZSA8IDUwMCkge1xyXG4gICAgICAgICAgICAvLyAgIGNsZWFyVGltZW91dCh0aW1lb3V0RXZlbnQpXHJcbiAgICAgICAgICAgIC8vICAgdGltZW91dEV2ZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICB1cGRhdGUoKVxyXG4gICAgICAgICAgICAvLyAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIC8vICAgcmV0dXJuXHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gbGFzdFBpY2tUaW1lID0gbm93O1xyXG4gICAgICAgICAgICB1cGRhdGUoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcclxuICAgICAgICAgICAgaWYgKCFfY2FydGVzaWFuKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbGV0IHBvcyA9IHNkay52aWV3ZXIuc2NlbmUuY2xhbXBUb0hlaWdodChfY2FydGVzaWFuKVxyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb24gPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChfY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gICAgICAgICAgICAvLyBwb3NpdGlvbi5hbHQgPSBoZWlnaHRcclxuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQzMjYnIHx8IGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICAgICAgICAgICAgLy8gaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgLy8gICAgIDxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5sbmcudG9GaXhlZCg2KSl9wrAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIC8vICAgICA8c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubGF0LnRvRml4ZWQoNikpfcKwIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAvLyAgICAgPHNwYW4+5rW35ouU6auY5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgLy8gICBgXHJcbiAgICAgICAgICAgICAgc3dpdGNoIChwb3NpdGlvblR5cGUgfHwgJ+W6picpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ+W6pic6XHJcbiAgICAgICAgICAgICAgICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5sbmcudG9GaXhlZCg4KSl9wrAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5sYXQudG9GaXhlZCg4KSl9wrAgPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPumrmOeoi++8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ+W6puWIhic6XHJcbiAgICAgICAgICAgICAgICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxuZywgdHJ1ZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxhdCwgdHJ1ZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPumrmOeoi++8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ+W6puWIhuenkic6XHJcbiAgICAgICAgICAgICAgICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue7j+W6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxuZywgZmFsc2UpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sYXQsIGZhbHNlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+6auY56iL77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIGxldCByZXN1bHQgPSBwcm9qLmNvbnZlcnQoW3sgeDogcG9zaXRpb24ubG5nLCB5OiBwb3NpdGlvbi5sYXQsIHo6IHBvc2l0aW9uLmFsdCB9XSwgJ0VQU0c6NDMyNicsIGNvb3JkaW5hdGVTeXN0ZW0pXHJcbiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHByb2ouY29udmVydChbeyB4OiBwb3NpdGlvbi5sbmcsIHk6IHBvc2l0aW9uLmxhdCwgejogcG9zaXRpb24uYWx0IH1dLCAnRVBTRzo0MzI2JywgcG9zaVRvQ29vcmRpbmF0ZShjb29yZGluYXRlU3lzdGVtLCBwb3NpdGlvbikpXHJcblxyXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQucG9pbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+eO+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihyZXN1bHQucG9pbnRzWzBdLngudG9GaXhlZCgyKSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPnnvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS55LnRvRml4ZWQoMikpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj5677yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0uei50b0ZpeGVkKDIpKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGluZm9FbG0gJiYgKGluZm9FbG0uc3R5bGUuZGlzcGxheSA9ICdub25lJylcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2ZyYW1lJzpcclxuICAgICAgICBpZiAob3B0aW9uc1trZXldKSB7XHJcbiAgICAgICAgICBzZGsudmlld2VyLnNjZW5lLmRlYnVnU2hvd0ZyYW1lc1BlclNlY29uZCA9IHRydWU7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNlc2l1bVdpZGdldENvbnRhaW5lckVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlci1jZXNpdW1XaWRnZXRDb250YWluZXInKVswXVxyXG4gICAgICAgICAgICBsZXQgZGVmYXVsdENvbnRhaW5lciA9IGNlc2l1bVdpZGdldENvbnRhaW5lckVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0tcGVyZm9ybWFuY2VEaXNwbGF5LWRlZmF1bHRDb250YWluZXInKVswXVxyXG4gICAgICAgICAgICBpZiAoZGVmYXVsdENvbnRhaW5lcikge1xyXG4gICAgICAgICAgICAgIGNlc2l1bVdpZGdldENvbnRhaW5lckVsbS5hcHBlbmRDaGlsZChkZWZhdWx0Q29udGFpbmVyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCA1MCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgc2RrLnZpZXdlci5zY2VuZS5kZWJ1Z1Nob3dGcmFtZXNQZXJTZWNvbmQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIGxldCBjb21wYXNzID0gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21wYXNzJylbMF1cclxuICAvLyBsZXQgbmF2aWdhdGlvbiA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbmF2aWdhdGlvbi1jb250cm9scycpWzBdXHJcbiAgLy8gbGV0IGRpc3RhbmNlTGVnZW5kID0gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdkaXN0YW5jZS1sZWdlbmQnKVswXVxyXG4gIC8vIGlmKHN0YXR1cykge1xyXG4gIC8vICAgY29tcGFzcyAmJiAoY29tcGFzcy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJylcclxuICAvLyAgIG5hdmlnYXRpb24gJiYgKG5hdmlnYXRpb24uc3R5bGUuZGlzcGxheSA9ICdibG9jaycpXHJcbiAgLy8gICBkaXN0YW5jZUxlZ2VuZCAmJiAoZGlzdGFuY2VMZWdlbmQuc3R5bGUuZGlzcGxheSA9ICdibG9jaycpXHJcbiAgLy8gfVxyXG4gIC8vIGVsc2Uge1xyXG4gIC8vICAgY29tcGFzcyAmJiAoY29tcGFzcy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gIC8vICAgbmF2aWdhdGlvbiAmJiAobmF2aWdhdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKVxyXG4gIC8vICAgZGlzdGFuY2VMZWdlbmQgJiYgKGRpc3RhbmNlTGVnZW5kLnN0eWxlLmRpc3BsYXkgPSAnbm9uZScpXHJcbiAgLy8gICB2aWV3ZXIuY2VzaXVtTmF2aWdhdGlvbi5kaXN0YW5jZUxlZ2VuZFZpZXdNb2RlbC5kZXN0cm95KClcclxuICAvLyB9XHJcbn1cclxuXHJcbi8q6K6+572u5bm/5ZGK54mM6buY6K6k5Zu+5qCHKi9cclxuZnVuY3Rpb24gc2V0QmlsbGJvYXJkRGVmYXVsdFVybCh1cmwsIG5hbWUpIHtcclxuICBpZiAobmFtZSkge1xyXG4gICAgbmFtZSA9ICdiaWxsYm9hcmRfZGVmYXVsdF91cmxfJyArIG5hbWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBuYW1lID0gJ2JpbGxib2FyZF9kZWZhdWx0X3VybCdcclxuICB9XHJcbiAgbGV0IGhvc3QgPSBnZXRIb3N0KClcclxuICBpZiAoIXVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgLy/or7TmmI7mmK/mnKzlnLDnmoRqc29u77yM5Zyo56OB55uY5Lit5a2Y5Zyo55qEXHJcbiAgICBpZiAoIXVybC5pbmNsdWRlcyhcIjpcIikpIHtcclxuICAgICAgaWYgKGhvc3QpIHtcclxuICAgICAgICBsZXQgbyA9IG5ldyBVUkwodXJsLCBob3N0KVxyXG4gICAgICAgIHVybCA9IG8uaHJlZlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIHVybCk7XHJcbn1cclxuLyrojrflj5blub/lkYrniYzpu5jorqTlm77moIcqL1xyXG5mdW5jdGlvbiBnZXRCaWxsYm9hcmREZWZhdWx0VXJsKG5hbWUpIHtcclxuICBpZiAobmFtZSkge1xyXG4gICAgbmFtZSA9ICdiaWxsYm9hcmRfZGVmYXVsdF91cmxfJyArIG5hbWVcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBuYW1lID0gJ2JpbGxib2FyZF9kZWZhdWx0X3VybCdcclxuICB9XHJcbiAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xyXG59XHJcblxyXG4vKuiuvue9rumrmOW6puWPguiAgyovXHJcbmZ1bmN0aW9uIHNldEdyb3VuZENvdmVyKHNkaywgc3RhdHVzKSB7XHJcbiAgR3JvdW5kQ292ZXIgPSBzdGF0dXMgPyB0cnVlIDogZmFsc2VcclxuICB1cGRhdGVDbHVzdGVyKHNkay52aWV3ZXIpXHJcbn1cclxuXHJcbi8q6I635Y+W6auY5bqm5Y+C6ICDKi9cclxuZnVuY3Rpb24gZ2V0R3JvdW5kQ292ZXIoKSB7XHJcbiAgcmV0dXJuIEdyb3VuZENvdmVyXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEJpbVBpY2tTdGF0dXMoc2RrLCBzdGF0dXMpIHtcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlcikge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdIHx8IChiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSA9IHt9KVxyXG4gIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLnN0YXR1cyA9IHN0YXR1c1xyXG4gIGlmIChiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5Nb3ZlSGFuZGxlcikge1xyXG4gICAgYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uTW92ZUhhbmRsZXIuZGVzdHJveSgpXHJcbiAgfVxyXG4gIGlmICghc3RhdHVzKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uTW92ZUhhbmRsZXIgPSBuZXcgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRIYW5kbGVyKHNkay52aWV3ZXIuY2FudmFzKVxyXG4gIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLk1vdmVIYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uIChtb3ZlbWVudCkge1xyXG4gICAgY29uc3QgcGljayA9IHNkay52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5lbmRQb3NpdGlvbik7XHJcbiAgICBsZXQgc2VsZWN0ZWRJZCA9IGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLnNlbGVjdGVkSWRcclxuICAgIGxldCB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQoYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uaWQpXHJcbiAgICAvLyBpZiAoc2VsZWN0ZWRGZWF0dXJlSWQpIHtcclxuICAgIC8vICAgbGV0IGNvbG9yID0gJyNmZmYnXHJcbiAgICAvLyAgIGxldCBzdGF0ZSA9IHNlbGVjdGVkRmVhdHVyZS5nZXRQcm9wZXJ0eSgnc3RhdGUnKVxyXG4gICAgLy8gICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnMCc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZmZmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMSc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjZjAwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMic6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMGYwJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgY2FzZSAnMyc6XHJcbiAgICAvLyAgICAgICBjb2xvciA9ICcjMDBmJ1xyXG4gICAgLy8gICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBzZWxlY3RlZEZlYXR1cmUuY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGNvbG9yKS53aXRoQWxwaGEoc2VsZWN0ZWRGZWF0dXJlLnRpbGVzZXQudHJhbnNwYXJlbmN5KVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoYXQpIHtcclxuICAgICAgaWYgKHRoYXQuZmVhdHVyZXMuaGFzKHNlbGVjdGVkSWQpKSB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gdGhhdC5mZWF0dXJlcy5nZXQoc2VsZWN0ZWRJZCkuZmVhdHVyZXNcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZmVhdHVyZXMpIHtcclxuICAgICAgICAgIGlmIChmZWF0dXJlc1trZXldLmNvbnRlbnQuX21vZGVsKSB7XHJcbiAgICAgICAgICAgIGxldCBjb2xvciA9IGZlYXR1cmVzW2tleV0uY3VzdG9tQ29sb3IgfHwgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZicpXHJcbiAgICAgICAgICAgIGZlYXR1cmVzW2tleV0uY29sb3IgPSBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLnJlZCl9LCR7Q2VzaXVtLkNvbG9yLmZsb2F0VG9CeXRlKGNvbG9yLmdyZWVuKX0sJHtDZXNpdW0uQ29sb3IuZmxvYXRUb0J5dGUoY29sb3IuYmx1ZSl9LCR7Y29sb3IuYWxwaGEgKiAoKGZlYXR1cmVzW2tleV0uY3VzdG9tQWxwaGEgfHwgZmVhdHVyZXNba2V5XS5jdXN0b21BbHBoYSA9PT0gMCkgPyBmZWF0dXJlc1trZXldLmN1c3RvbUFscGhhIDogMSl9KWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocGljayAmJiBwaWNrLmNvbnRlbnQpIHtcclxuICAgICAgbGV0IG9iaiA9IHNkay5nZXRJbmNldGFuY2UocGljay5jb250ZW50LnRpbGVzZXQuaWQpXHJcbiAgICAgIGlmIChvYmoudHlwZSA9PT0gJ2JpbScpIHtcclxuICAgICAgICBpZiAocGljay5wcmltaXRpdmUgJiYgcGljay5wcmltaXRpdmUuaWQpIHtcclxuICAgICAgICAgIGxldCB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQocGljay5wcmltaXRpdmUuaWQpXHJcbiAgICAgICAgICBzZWxlY3RlZElkID0gcGljay5nZXRQcm9wZXJ0eSgnaWQnKVxyXG4gICAgICAgICAgaWYgKHRoYXQuZmVhdHVyZXMuaGFzKHNlbGVjdGVkSWQpKSB7XHJcbiAgICAgICAgICAgIGxldCBmZWF0dXJlcyA9IHRoYXQuZmVhdHVyZXMuZ2V0KHNlbGVjdGVkSWQpLmZlYXR1cmVzXHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICAgIGlmIChmZWF0dXJlc1trZXldLmNvbnRlbnQuX21vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlc1trZXldLmNvbG9yID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZWIzYicpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5pZCA9IHBpY2sucHJpbWl0aXZlLmlkXHJcbiAgICAgICAgICBiaW1QaWNrT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5zZWxlY3RlZElkID0gc2VsZWN0ZWRJZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBwaWNrLnByaW1pdGl2ZS5pZCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5NT1VTRV9NT1ZFKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRCaW1QaWNrU3RhdHVzKHNkaykge1xyXG4gIGlmICghc2RrIHx8ICFzZGsudmlld2VyKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgcmV0dXJuIGJpbVBpY2tPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdID8gYmltUGlja09iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uc3RhdHVzIDogZmFsc2VcclxufVxyXG5cclxuLyog5Zu057uV5Z2Q5qCH5peL6L2sICovXHJcbmZ1bmN0aW9uIHJvdGF0ZUFyb3VuZChzZGssIHBvc2l0aW9uKSB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICBzZGsudmlld2VyLmNhbWVyYS5sb29rQXRUcmFuc2Zvcm0oQ2VzaXVtLk1hdHJpeDQuSURFTlRJVFkpO1xyXG4gIC8vIOWFs+mXrUNvbnRyb2xsZXJcclxuICBzZGsuZW50aXR5TWFwLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgIGl0ZW0uZWRpdE9iaiAmJiBpdGVtLmVkaXRPYmouZGVzdHJveSgpXHJcbiAgICBpdGVtLkNvbnRyb2xsZXJPYmplY3QgJiYgaXRlbS5Db250cm9sbGVyT2JqZWN0LmRlc3Ryb3koKVxyXG4gIH0pXHJcbiAgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSB8fCAocm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSA9IHt9KVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uYW5pbWF0ZSAmJiBUV0VFTi5yZW1vdmUocm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5hbmltYXRlKVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgJiYgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5ldmVudC5kZXN0cm95KClcclxuICBpZiAoIXBvc2l0aW9uKSB7XHJcbiAgICBDYW1lcmFDb250cm9sbGVyKHNkaywgdHJ1ZSlcclxuICAgIHJldHVyblxyXG4gIH1cclxuXHJcbiAgbGV0IHBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocG9zaXRpb24ubG5nLCBwb3NpdGlvbi5sYXQsIHBvc2l0aW9uLmFsdClcclxuICBsZXQgYW5nbGUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZylcclxuICBsZXQgcmFuZ2UgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgcG9pbnQpO1xyXG4gIENhbWVyYUNvbnRyb2xsZXIoc2RrLCBmYWxzZSlcclxuICBsZXQgcGl0Y2ggPSBzZGsudmlld2VyLmNhbWVyYS5waXRjaFxyXG4gIGxldCBkZWdyZWVzID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBpdGNoKVxyXG4gIGlmIChkZWdyZWVzIDwgLTg5Ljk5KSB7XHJcbiAgICBwaXRjaCA9IENlc2l1bS5NYXRoLnRvUmFkaWFucygtODkuOTkpXHJcbiAgfVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uYW5pbWF0ZSA9IG5ldyBUV0VFTi5Ud2Vlbih7IGFuZ2xlOiBhbmdsZSB9KS50byh7IGFuZ2xlOiBhbmdsZSAtIDM2MCB9LCAzMDAwMCkuZWFzaW5nKFRXRUVOLkVhc2luZy5MaW5lYXIuTm9uZSkucmVwZWF0KEluZmluaXR5KS5vblVwZGF0ZShhc3luYyAociwgYSkgPT4ge1xyXG4gICAgaWYgKCFzZGsudmlld2VyKSB7XHJcbiAgICAgIFRXRUVOLnJlbW92ZShyb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmFuaW1hdGUpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgc2RrLnZpZXdlci5jYW1lcmEubG9va0F0KFxyXG4gICAgICBwb2ludCxcclxuICAgICAgbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSYW5nZShDZXNpdW0uTWF0aC50b1JhZGlhbnMoci5hbmdsZSksIHBpdGNoLCByYW5nZSlcclxuICAgIClcclxuXHJcbiAgICBzZGsudmlld2VyLmNhbWVyYS5sb29rQXRUcmFuc2Zvcm0oQ2VzaXVtLk1hdHJpeDQuSURFTlRJVFkpO1xyXG4gIH0pLnN0YXJ0KClcclxuXHJcbiAgbGV0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoc2RrKVxyXG4gIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgPSBldmVudFxyXG4gIGV2ZW50Lm1vdXNlX2xlZnRfZG93bigoKSA9PiB7XHJcbiAgICByb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmFuaW1hdGUgJiYgVFdFRU4ucmVtb3ZlKHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uYW5pbWF0ZSlcclxuICAgIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQgJiYgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5ldmVudC5kZXN0cm95KClcclxuICAgIENhbWVyYUNvbnRyb2xsZXIoc2RrLCB0cnVlKVxyXG4gICAgc2RrLnZpZXdlci5jYW1lcmEubG9va0F0VHJhbnNmb3JtKENlc2l1bS5NYXRyaXg0LklERU5USVRZKTtcclxuICB9KVxyXG59XHJcblxyXG4vKiDlhbPpl63lm7Tnu5XlnZDmoIfml4vovawgKi9cclxuZnVuY3Rpb24gY2xvc2VSb3RhdGVBcm91bmQoc2RrKSB7XHJcbiAgaWYgKCFzZGsgfHwgIXNkay52aWV3ZXIpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAocm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXSkge1xyXG4gICAgcm90YXRlQXJvdW5kT2JqZWN0W3Nkay52aWV3ZXIuX2VsZW1lbnQuY2xhc3NOYW1lXS5hbmltYXRlICYmIFRXRUVOLnJlbW92ZShyb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmFuaW1hdGUpXHJcbiAgICByb3RhdGVBcm91bmRPYmplY3Rbc2RrLnZpZXdlci5fZWxlbWVudC5jbGFzc05hbWVdLmV2ZW50ICYmIHJvdGF0ZUFyb3VuZE9iamVjdFtzZGsudmlld2VyLl9lbGVtZW50LmNsYXNzTmFtZV0uZXZlbnQuZGVzdHJveSgpXHJcbiAgICBDYW1lcmFDb250cm9sbGVyKHNkaywgdHJ1ZSlcclxuICAgIHNkay52aWV3ZXIuY2FtZXJhLmxvb2tBdFRyYW5zZm9ybShDZXNpdW0uTWF0cml4NC5JREVOVElUWSk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9zZVZpZXdGb2xsb3coc2RrKSB7XHJcbiAgaWYgKHNkayAmJiBzZGsuZW50aXR5TWFwKSB7XHJcbiAgICBsZXQgZW50aXR5TWFwID0gc2RrLmVudGl0eU1hcFxyXG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGVudGl0eU1hcCkge1xyXG4gICAgICBpZiAodmFsdWUudHlwZSA9PT0gJ1RyYWplY3RvcnlNb3Rpb24nICYmIHZhbHVlLnZpZXdGb2xsb3cpIHtcclxuICAgICAgICB2YWx1ZS52aWV3Rm9sbG93ID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyog5pa56YeM572R54q25oCB5byA5YWzICovXHJcbmZ1bmN0aW9uIEZsd1N0YXR1c1N3aXRjaChzZGssIHN0YXR1cykge1xyXG4gIGlmICghc2RrKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IGxheWVyXHJcbiAgbGV0IHNka0QgPSBnZXRTZGsoKS5zZGtEXHJcbiAgaWYgKHNka0QgJiYgc2RrICE9PSBzZGtEKSB7XHJcbiAgICBGbHdTdGF0dXNTd2l0Y2goc2RrRCwgc3RhdHVzKVxyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlciAmJiBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlICYmIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdmbHcnKSB7XHJcbiAgICAgIGxheWVyID0gc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV1cclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKGxheWVyKSB7XHJcbiAgICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMucmVtb3ZlKGxheWVyKVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuYWRkSW1hZ2VyeVByb3ZpZGVyKG5ldyBDZXNpdW0uVGlsZUNvb3JkaW5hdGVzSW1hZ2VyeVByb3ZpZGVyRmx3KFxyXG4gICAgICB7XHJcbiAgICAgICAgdGlsZVdpZHRoOiAxMjgsXHJcbiAgICAgICAgdGlsZUhlaWdodDogMTI4LFxyXG4gICAgICB9XHJcbiAgICApKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEZsd1N0YXR1cyhzZGspIHtcclxuICBsZXQgc3RhdHVzID0gZmFsc2VcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAoc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlciAmJiBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlICYmIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgPT09ICdmbHcnKSB7XHJcbiAgICAgIHN0YXR1cyA9IHRydWVcclxuICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHN0YXR1c1xyXG59XHJcblxyXG4vKiDnu4/nuqznvZHnirbmgIHlvIDlhbMgKi9cclxuZnVuY3Rpb24gSnd3U3RhdHVzU3dpdGNoKHNkaywgc3RhdHVzKSB7XHJcbiAgaWYgKCFzZGspIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgbGF5ZXJcclxuICBsZXQgc2RrRCA9IGdldFNkaygpLnNka0RcclxuICBpZiAoc2RrRCAmJiBzZGsgIT09IHNka0QpIHtcclxuICAgIEp3d1N0YXR1c1N3aXRjaChzZGtELCBzdGF0dXMpXHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyICYmIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIuX3R5cGUgJiYgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSA9PT0gJ2p3dycpIHtcclxuICAgICAgbGF5ZXIgPSBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXVxyXG4gICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICBpZiAobGF5ZXIpIHtcclxuICAgIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5yZW1vdmUobGF5ZXIpXHJcbiAgfVxyXG4gIGlmIChzdGF0dXMpIHtcclxuICAgIHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5hZGRJbWFnZXJ5UHJvdmlkZXIobmV3IENlc2l1bS5UaWxlQ29vcmRpbmF0ZXNJbWFnZXJ5UHJvdmlkZXJKd3coKSk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRKd3dTdGF0dXMoc2RrKSB7XHJcbiAgbGV0IHN0YXR1cyA9IGZhbHNlXHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHNkay52aWV3ZXIuaW1hZ2VyeUxheWVycy5fbGF5ZXJzW2ldLl9pbWFnZXJ5UHJvdmlkZXIgJiYgc2RrLnZpZXdlci5pbWFnZXJ5TGF5ZXJzLl9sYXllcnNbaV0uX2ltYWdlcnlQcm92aWRlci5fdHlwZSAmJiBzZGsudmlld2VyLmltYWdlcnlMYXllcnMuX2xheWVyc1tpXS5faW1hZ2VyeVByb3ZpZGVyLl90eXBlID09PSAnand3Jykge1xyXG4gICAgICBzdGF0dXMgPSB0cnVlXHJcbiAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBzdGF0dXNcclxufVxyXG5cclxuZnVuY3Rpb24gc3BsaXRTY3JlZW4yKHNkaywgc3RhdHVzKSB7XHJcbiAgbGV0IHNsaWRlckVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLXNsaWRlcicpWzBdXHJcbiAgbGV0IGxlZnRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICBsZXQgcmlnaHRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCcpWzBdXHJcbiAgaWYgKHNsaWRlckVsbSkge1xyXG4gICAgc2RrLnZpZXdlci5fZWxlbWVudC5yZW1vdmVDaGlsZChzbGlkZXJFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKGxlZnRFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHJpZ2h0RWxtKVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzbGlkZXJFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHNsaWRlckVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLXNsaWRlcidcclxuICAgIHNsaWRlckVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS5sZWZ0ID0gJzUwJSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS50b3AgPSAnMHB4J1xyXG5cclxuICAgIGxlZnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgbGVmdEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnXHJcbiAgICBsZWZ0RWxtLnR5cGUgPSAnY2hlY2tib3gnXHJcbiAgICBsZWZ0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgbGVmdEVsbS5zdHlsZS5sZWZ0ID0gJ2NhbGMoNTAlIC0gNTBweCknXHJcbiAgICByaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICByaWdodEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0J1xyXG4gICAgcmlnaHRFbG0udHlwZSA9ICdjaGVja2JveCdcclxuICAgIHJpZ2h0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgcmlnaHRFbG0uc3R5bGUucmlnaHQgPSAnY2FsYyg1MCUgLSA1MHB4KSdcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobGVmdEVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRFbG0pXHJcblxyXG4gICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgbGVmdEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIXJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKClcclxuICAgIH0pXHJcbiAgICByaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIWxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgICB9KVxyXG5cclxuICAgIHNsaWRlckVsbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2Vtb3ZlKVxyXG4gICAgICBzbGlkZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBmdW5jdGlvbiBtb3VzZW1vdmUoYSwgYikge1xyXG4gICAgICBpZiAoc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0gPT09IGEudGFyZ2V0KSB7XHJcbiAgICAgICAgc2xpZGVyRWxtLnN0eWxlLmxlZnQgPSAoYS5vZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCAqIDEwMCkgKyAnJSdcclxuICAgICAgICBzZGsudmlld2VyLnNjZW5lLnNwbGl0UG9zaXRpb24gPSBhLm9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoc2xpZGVyRWxtKVxyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFN0YXR1cyA9IHN0YXR1c1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMC41XHJcbiAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMFxyXG4gICAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoMClcclxuICAgIHNkay52aWV3ZXIuc2NlbmUuc3BsaXRTdGF0dXMgPSBzdGF0dXNcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKHYpIHtcclxuICAgIGxldCB2YWx1ZVxyXG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSB7XHJcbiAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgIHZhbHVlID0gMFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gLTFcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gMVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhbHVlID0gdlxyXG4gICAgfVxyXG5cclxuICAgIHNkay5lbnRpdHlNYXAuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XHJcbiAgICAgIGlmIChzZGsudmlld2VyLnNjZW5lLnNwbGl0U3RhdHVzKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgICAgaXRlbS5lbnRpdHkuYmlsbGJvYXJkLnNwbGl0RGlyZWN0aW9uID0gdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpdGVtLmVudGl0eSAmJiAoaXRlbS5lbnRpdHkuc3BsaXREaXJlY3Rpb24gPSB2YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbmZ1bmN0aW9uIHNwbGl0U2NyZWVuKHNkaywgc3RhdHVzKSB7XHJcbiAgbGV0IHNsaWRlckVsbSA9IHNkay52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnWUotY3VzdG9tLXNsaWRlcicpWzBdXHJcbiAgbGV0IGxlZnRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1sZWZ0JylbMF1cclxuICBsZXQgcmlnaHRFbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ1lKLWN1c3RvbS1jaGVja2JveC1yaWdodCcpWzBdXHJcbiAgaWYgKHNsaWRlckVsbSkge1xyXG4gICAgc2RrLnZpZXdlci5fZWxlbWVudC5yZW1vdmVDaGlsZChzbGlkZXJFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKGxlZnRFbG0pXHJcbiAgICBzZGsudmlld2VyLl9lbGVtZW50LnJlbW92ZUNoaWxkKHJpZ2h0RWxtKVxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzbGlkZXJFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHNsaWRlckVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLXNsaWRlcidcclxuICAgIHNsaWRlckVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS5sZWZ0ID0gJzUwJSdcclxuICAgIHNsaWRlckVsbS5zdHlsZS50b3AgPSAnMHB4J1xyXG5cclxuICAgIGxlZnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgbGVmdEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LWxlZnQnXHJcbiAgICBsZWZ0RWxtLnR5cGUgPSAnY2hlY2tib3gnXHJcbiAgICBsZWZ0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgbGVmdEVsbS5zdHlsZS5sZWZ0ID0gJ2NhbGMoNTAlIC0gNTBweCknXHJcbiAgICByaWdodEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICByaWdodEVsbS5jbGFzc05hbWUgPSAnWUotY3VzdG9tLWNoZWNrYm94LXJpZ2h0J1xyXG4gICAgcmlnaHRFbG0udHlwZSA9ICdjaGVja2JveCdcclxuICAgIHJpZ2h0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgcmlnaHRFbG0uc3R5bGUucmlnaHQgPSAnY2FsYyg1MCUgLSA1MHB4KSdcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobGVmdEVsbSlcclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRFbG0pXHJcblxyXG4gICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgbGVmdEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIXJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJpZ2h0RWxtLmNoZWNrZWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKClcclxuICAgIH0pXHJcbiAgICByaWdodEVsbS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICBpZiAoIWUudGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICBpZiAoIWxlZnRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgbGVmdEVsbS5jaGVja2VkID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgICB9KVxyXG5cclxuICAgIHNsaWRlckVsbS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2Vtb3ZlKVxyXG4gICAgICBzbGlkZXJFbG0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsICgpID0+IHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlbW92ZSlcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgICBmdW5jdGlvbiBtb3VzZW1vdmUoYSwgYikge1xyXG4gICAgICBpZiAoc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0gPT09IGEudGFyZ2V0KSB7XHJcbiAgICAgICAgc2xpZGVyRWxtLnN0eWxlLmxlZnQgPSAoYS5vZmZzZXRYIC8gc2RrLnZpZXdlci5fZWxlbWVudC5zY3JvbGxXaWR0aCAqIDEwMCkgKyAnJSdcclxuICAgICAgICBzZGsudmlld2VyLnNjZW5lLnNwbGl0UG9zaXRpb24gPSBhLm9mZnNldFggLyBzZGsudmlld2VyLl9lbGVtZW50LnNjcm9sbFdpZHRoXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHNkay52aWV3ZXIuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoc2xpZGVyRWxtKVxyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFN0YXR1cyA9IHN0YXR1c1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMC41XHJcbiAgICBjaGFuZ2VFbnRpdHlTcGxpdFN0YXR1cygpXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgc2RrLnZpZXdlci5zY2VuZS5zcGxpdFBvc2l0aW9uID0gMFxyXG4gICAgY2hhbmdlRW50aXR5U3BsaXRTdGF0dXMoMClcclxuICAgIHNkay52aWV3ZXIuc2NlbmUuc3BsaXRTdGF0dXMgPSBzdGF0dXNcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGNoYW5nZUVudGl0eVNwbGl0U3RhdHVzKHYpIHtcclxuICAgIGxldCB2YWx1ZVxyXG4gICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSB7XHJcbiAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQgJiYgcmlnaHRFbG0uY2hlY2tlZCkge1xyXG4gICAgICAgIHZhbHVlID0gMFxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsZWZ0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gLTFcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJpZ2h0RWxtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHZhbHVlID0gMVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhbHVlID0gdlxyXG4gICAgfVxyXG5cclxuICAgIHNkay5lbnRpdHlNYXAuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XHJcbiAgICAgIGlmIChzZGsudmlld2VyLnNjZW5lLnNwbGl0U3RhdHVzKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZW50aXR5LmJpbGxib2FyZCkge1xyXG4gICAgICAgICAgaXRlbS5lbnRpdHkuYmlsbGJvYXJkLnNwbGl0RGlyZWN0aW9uID0gdmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpdGVtLmVudGl0eSAmJiAoaXRlbS5lbnRpdHkuc3BsaXREaXJlY3Rpb24gPSB2YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDb29yZGluYXRlU3lzdGVtKCkge1xyXG4gIHJldHVybiBjb29yZGluYXRlU3lzdGVtXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldENvb3JkaW5hdGVTeXN0ZW0oc2RrLCBlcHNnKSB7XHJcbiAgY29vcmRpbmF0ZVN5c3RlbSA9IGVwc2cgfHwgJ0VQU0c6NDMyNidcclxuICBpZiAoIXNkayB8fCAhc2RrLnZpZXdlciB8fCAhc2RrLnZpZXdlci5fZWxlbWVudCkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGxldCBpbmZvRWxtID0gc2RrLnZpZXdlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZXNpdW0taW5mbycpWzBdXHJcbiAgaWYgKCFfY2FydGVzaWFuIHx8ICFpbmZvRWxtKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuICBsZXQgcHJvaiA9IHNkay5wcm9qXHJcbiAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoX2NhcnRlc2lhbiwgc2RrLnZpZXdlcilcclxuICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgIC8vIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgLy8gICAgICAgICAgICAgICA8c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubG5nLnRvRml4ZWQoNikpfcKwIDwvc3Bhbj5cclxuICAgIC8vICAgICAgICAgICAgICAgPHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmxhdC50b0ZpeGVkKDYpKX3CsCA8L3NwYW4+XHJcbiAgICAvLyAgICAgICAgICAgICAgIDxzcGFuPua1t+aLlOmrmOW6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPlxyXG4gICAgLy8gICAgICAgICAgICAgYFxyXG4gICAgc3dpdGNoIChwb3NpdGlvblR5cGUgfHwgJ+W6picpIHtcclxuICAgICAgY2FzZSAn5bqmJzpcclxuICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubG5nLnRvRml4ZWQoOCkpfcKwIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24ubGF0LnRvRml4ZWQoOCkpfcKwIDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7mtbfmi5Tpq5jluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24uYWx0LnRvRml4ZWQoMikpfeexszwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIGBcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAn5bqm5YiGJzpcclxuICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sbmcsIHRydWUpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nuqzluqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sYXQsIHRydWUpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7mtbfmi5Tpq5jluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24uYWx0LnRvRml4ZWQoMikpfeexszwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIGBcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAn5bqm5YiG56eSJzpcclxuICAgICAgICBpbmZvRWxtLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7nu4/luqbvvJo8L3NwYW4+PHNwYW4+JHtwcm9qLmRlZ3JlZXNUb0RNUyhwb3NpdGlvbi5sbmcsIGZhbHNlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubGF0LCBmYWxzZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPua1t+aLlOmrmOW6pu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihwb3NpdGlvbi5hbHQudG9GaXhlZCgyKSl957GzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIC8vIGxldCByZXN1bHQgPSBwcm9qLmNvbnZlcnQoW3sgeDogcG9zaXRpb24ubG5nLCB5OiBwb3NpdGlvbi5sYXQsIHo6IHBvc2l0aW9uLmFsdCB9XSwgJ0VQU0c6NDMyNicsIGNvb3JkaW5hdGVTeXN0ZW0pXHJcbiAgICBsZXQgcmVzdWx0ID0gcHJvai5jb252ZXJ0KFt7IHg6IHBvc2l0aW9uLmxuZywgeTogcG9zaXRpb24ubGF0LCB6OiBwb3NpdGlvbi5hbHQgfV0sICdFUFNHOjQzMjYnLCBwb3NpVG9Db29yZGluYXRlKGNvb3JkaW5hdGVTeXN0ZW0sIHBvc2l0aW9uKSlcclxuICAgIGluZm9FbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPnjvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS54LnRvRml4ZWQoMikpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj5577yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0ueS50b0ZpeGVkKDIpKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+eu+8mjwvc3Bhbj48c3Bhbj4ke051bWJlcihyZXN1bHQucG9pbnRzWzBdLnoudG9GaXhlZCgyKSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgYFxyXG4gIH1cclxufVxyXG5mdW5jdGlvbiBwb3NpVG9Db29yZGluYXRlKGNvb3JkaW5hdGVTeXN0ZW0sIHBvc2l0aW9uKSB7XHJcbiAgbGV0IHR5cGVcclxuICBzd2l0Y2ggKGNvb3JkaW5hdGVTeXN0ZW0pIHtcclxuICAgIGNhc2UgJ0VQU0c6MzI2MDEnOi8vV0dTODQg6YCa55So5qiq6L205aKo5Y2h5omY5oqV5b2xXHJcbiAgICAgIC8v5bim5Y+3ID0g4oyKKOe7j+W6piArIDE4MCkvNuKMiyArIDFcclxuICAgICAgdmFyIGRoID0gTWF0aC5mbG9vcigocG9zaXRpb24ubG5nICsgMTgwKSAvIDYgKyAxKVxyXG5cclxuICAgICAgaWYgKHBvc2l0aW9uLmxhdCA+IDApIHsvL+WMl+e6rFxyXG4gICAgICAgIHR5cGUgPSAzMjYwMCArIGRoXHJcbiAgICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgIH0gZWxzZSB7Ly/ljZfnuqxcclxuICAgICAgICB0eXBlID0gMzI3MDAgKyBkaFxyXG4gICAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnRVBTRzo0NTM0JzovLzIwMDAg5Z2Q5qCHIDMg5bqm5LiN5bim5Luj5Y+3XHJcbiAgICAgIC8vTiA9IHJvdW5kKOe7j+W6pi8zKVxyXG4gICAgICAvL0VQU0cgPSBOIC0gMjUgKyA0NTM0XHJcblxyXG4gICAgICB2YXIgZGgzeSA9IE1hdGgucm91bmQocG9zaXRpb24ubG5nIC8gMylcclxuICAgICAgdHlwZSA9IGRoM3kgLSAyNSArIDQ1MzRcclxuICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnRVBTRzo0NTEzJzovLzIwMDAg5Z2Q5qCHIDMg5bqm5bim5Luj5Y+3XHJcbiAgICAgIC8vTiA9IHJvdW5kKOe7j+W6pi8zKVxyXG4gICAgICAvL0VQU0cgPSBOIC0gMjUgKyA0NTEzXHJcbiAgICAgIHZhciBkaDN3ID0gTWF0aC5yb3VuZChwb3NpdGlvbi5sbmcgLyAzKVxyXG4gICAgICB0eXBlID0gZGgzdyAtIDI1ICsgNDUxM1xyXG4gICAgICB0eXBlID0gJ0VQU0c6JyArIHR5cGVcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdFUFNHOjQ1MDInOi8vMjAwMCDlnZDmoIcgNiDluqbkuI3luKbku6Plj7dcclxuICAgICAgbGV0IHpvbmVOdW1iZXIgPSBNYXRoLmZsb29yKHBvc2l0aW9uLmxuZyAvIDYpICsgMzFcclxuICAgICAgLy8g5Lit5Zu95Yy65Z+fNuW6puW4puW4puWPt+iMg+WbtOS4ujEzLTIzXHJcbiAgICAgIGlmICh6b25lTnVtYmVyIDwgMTMpIHpvbmVOdW1iZXIgPSAxMztcclxuICAgICAgaWYgKHpvbmVOdW1iZXIgPiAyMykgem9uZU51bWJlciA9IDIzO1xyXG4gICAgICB0eXBlID0gKHpvbmVOdW1iZXIgLSAxMykgKyA0NTAyXHJcbiAgICAgIHR5cGUgPSAnRVBTRzonICsgdHlwZVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ0VQU0c6NDQ5MSc6Ly8yMDAwIOWdkOaghyA2IOW6puW4puS7o+WPt1xyXG4gICAgICAvL04gPSBmbG9vcihsb25naXR1ZGUvNikgKyAzMVxyXG4gICAgICB2YXIgZGg2ID0gTWF0aC5mbG9vcihwb3NpdGlvbi5sbmcgLyA2KSArIDMxXHJcbiAgICAgIC8vIOS4reWbveWMuuWfnzbluqbluKbluKblj7fojIPlm7TkuLoxMy0yM1xyXG4gICAgICBpZiAoZGg2IDwgMTMpIGRoNiA9IDEzO1xyXG4gICAgICBpZiAoZGg2ID4gMjMpIGRoNiA9IDIzO1xyXG4gICAgICB0eXBlID0gKGRoNiAtIDEzKSArIDQ0OTFcclxuICAgICAgdHlwZSA9ICdFUFNHOicgKyB0eXBlXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG4gIHJldHVybiB0eXBlXHJcbn1cclxuZnVuY3Rpb24gZ2V0RE1TKCkge1xyXG4gIHJldHVybiBwb3NpdGlvblR5cGVcclxufVxyXG5mdW5jdGlvbiBzZXRETVMoc2RrLCB0eXBlKSB7XHJcbiAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gIT09ICdFUFNHOjQzMjYnICYmIGNvb3JkaW5hdGVTeXN0ZW0gIT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgcG9zaXRpb25UeXBlID0gdHlwZVxyXG4gIGlmICghc2RrIHx8ICFzZGsudmlld2VyIHx8ICFzZGsudmlld2VyLl9lbGVtZW50KSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IGluZm9FbG0gPSBzZGsudmlld2VyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nlc2l1bS1pbmZvJylbMF1cclxuICBpZiAoIV9jYXJ0ZXNpYW4gfHwgIWluZm9FbG0pIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIGxldCBwcm9qID0gc2RrLnByb2pcclxuICBsZXQgcG9zaXRpb24gPSB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChfY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSAn5bqmJzpcclxuICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmxuZy50b0ZpeGVkKDYpKX3CsCA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmxhdC50b0ZpeGVkKDYpKX3CsCA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+5rW35ouU6auY5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAn5bqm5YiGJzpcclxuICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubG5nLCB0cnVlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57qs5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubGF0LCB0cnVlKX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+5rW35ouU6auY5bqm77yaPC9zcGFuPjxzcGFuPiR7TnVtYmVyKHBvc2l0aW9uLmFsdC50b0ZpeGVkKDIpKX3nsbM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBgXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAn5bqm5YiG56eSJzpcclxuICAgICAgaW5mb0VsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4+57uP5bqm77yaPC9zcGFuPjxzcGFuPiR7cHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubG5nLCBmYWxzZSl9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPue6rOW6pu+8mjwvc3Bhbj48c3Bhbj4ke3Byb2ouZGVncmVlc1RvRE1TKHBvc2l0aW9uLmxhdCwgZmFsc2UpfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj48c3Bhbj7mtbfmi5Tpq5jluqbvvJo8L3NwYW4+PHNwYW4+JHtOdW1iZXIocG9zaXRpb24uYWx0LnRvRml4ZWQoMikpfeexszwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIGBcclxuICAgICAgYnJlYWs7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgcHJvai5kZWdyZWVzVG9ETVMocG9zaXRpb24ubG5nLCB0cnVlKVxyXG59XHJcblxyXG5mdW5jdGlvbiBjYW1lcmFDaGFuZ2VkKHNkaywgY2IpIHtcclxuICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gIC8v6K6+572u55u45py65Y+Y5YyW55qE55uR5ZCs5LqL5Lu2XHJcbiAgbGV0IHJlbW92ZUNoYW5nZWQgPSBzZGsudmlld2VyLmNhbWVyYS5jaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIocGVyY2VudGFnZSA9PiB7XHJcbiAgICBjYih7XHJcbiAgICAgIHBvc2l0aW9uOiB0b29scy5jYXJ0ZXNpYW4zVG93Z3M4NChzZGsudmlld2VyLmNhbWVyYS5wb3NpdGlvbiwgc2RrLnZpZXdlciksXHJcbiAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgaGVhZGluZzogc2RrLnZpZXdlci5jYW1lcmEuaGVhZGluZyxcclxuICAgICAgICBwaXRjaDogc2RrLnZpZXdlci5jYW1lcmEucGl0Y2gsXHJcbiAgICAgICAgcm9sbDogc2RrLnZpZXdlci5jYW1lcmEucm9sbFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH0pXHJcbiAgcmV0dXJuIHJlbW92ZUNoYW5nZWRcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0TWF4aW11bVJlcXVlc3RzUGVyU2VydmVyKHYpIHtcclxuICBpZiAodHlwZW9mIHYgPT0gJ251bWJlcicpXHJcbiAgICBDZXNpdW0uUmVxdWVzdFNjaGVkdWxlci5tYXhpbXVtUmVxdWVzdHNQZXJTZXJ2ZXIgPSB2XHJcbn1cclxuXHJcbi8qIOmUruebmOS6i+S7tiAqL1xyXG5mdW5jdGlvbiBzZXRLZXlib2FyZEV2ZW50QWN0aXZlKHNkaywgc3RhdHVzKSB7XHJcbiAgaWYgKCFzZGspIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBzZGsudmlld2VyLl9kaXNhYmxlS2V5Ym9hcmRFdmVudCA9IGZhbHNlXHJcbiAgfVxyXG4gIGVsc2Uge1xyXG4gICAgc2RrLnZpZXdlci5fZGlzYWJsZUtleWJvYXJkRXZlbnQgPSB0cnVlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDZXNpdW1JbmRleGVkREJNYXhTaXplKCkge1xyXG4gIGNvbnN0IGJhc2VVbml0ID0gMTAyNCAqIDEwMjQgKiAxMDI0XHJcbiAgbGV0IHNpemUgPSBOdW1iZXIoTnVtYmVyKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdJbmRleGVkREJNYXhTaXplJykpLnRvRml4ZWQoMCkpXHJcbiAgaWYgKGlzTmFOKHNpemUpIHx8IHNpemUgPCBiYXNlVW5pdCkge1xyXG4gICAgc2l6ZSA9IGJhc2VVbml0XHJcbiAgfVxyXG4gIHJldHVybiBzaXplXHJcbn1cclxuZnVuY3Rpb24gc2V0Q2VzaXVtSW5kZXhlZERCTWF4U2l6ZSh2KSB7XHJcbiAgY29uc3QgYmFzZVVuaXQgPSAxMDI0ICogMTAyNCAqIDEwMjRcclxuICBsZXQgbWF4U2l6ZSA9IE51bWJlcihOdW1iZXIodikudG9GaXhlZCgwKSlcclxuICBpZiAoaXNOYU4obWF4U2l6ZSkgfHwgbWF4U2l6ZSA8IGJhc2VVbml0KSB7XHJcbiAgICBtYXhTaXplID0gYmFzZVVuaXRcclxuICB9XHJcbiAgQ2VzaXVtLk1hbmFnZUluZGV4ZWREQiAmJiBDZXNpdW0uTWFuYWdlSW5kZXhlZERCLlNldEluZGV4ZWREQk1heFNpemUobWF4U2l6ZSlcclxuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnSW5kZXhlZERCTWF4U2l6ZScsIG1heFNpemUpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENlc2l1bU1hbmFnZUluZGV4ZXhEQlN0YXRlKCkge1xyXG4gIGxldCBzdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdNYW5hZ2VJbmRleGV4REJTdGF0ZScpXHJcbiAgaWYgKHN0YXRlID09PSAnZmFsc2UnKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgcmV0dXJuIEJvb2xlYW4oc3RhdGUpXHJcbn1cclxuZnVuY3Rpb24gc2V0Q2VzaXVtTWFuYWdlSW5kZXhleERCU3RhdGUodikge1xyXG4gIGlmICh0eXBlb2YgdiA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgIENlc2l1bS5NYW5hZ2VJbmRleGVkREIgJiYgQ2VzaXVtLk1hbmFnZUluZGV4ZWREQi5TZXRNYW5hZ2VJbmRleGV4REJTdGF0ZSh2KVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ01hbmFnZUluZGV4ZXhEQlN0YXRlJywgdilcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5lcnJvcihcIuWPguaVsOW/hemhu+S4umJvb2xlYW5cIilcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENlc2l1bUluZGV4ZWREQkN1cnJlbnRTaXplKCkge1xyXG4gIHJldHVybiBDZXNpdW0uTWFuYWdlSW5kZXhlZERCICYmIENlc2l1bS5NYW5hZ2VJbmRleGVkREIuR2V0SW5kZXhlZERCQ3VycmVudFNpemUoKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRBY3RpdmVWaWV3ZXIodikge1xyXG4gIHNldE11bHRpVmlld3BvcnRBY3RpdmVWaWV3ZXIodilcclxuICBzZXRTcGxpdEFjdGl2ZVZpZXdlcih2KVxyXG59XHJcblxyXG4vLyDorr7nva7lnLDnkIPpgI/mmI7luqZcclxuZnVuY3Rpb24gZW5hYmxlUGVyc3BlY3RpdmUoc2RrLCBhbHBoYSA9IDEpIHtcclxuICBpZiAoIWFscGhhICYmIGFscGhhICE9IDApIHtcclxuICAgIGFscGhhID0gMVxyXG4gIH1cclxuICBzZGsudmlld2VyLnNjZW5lLmdsb2JlLnRyYW5zbHVjZW5jeS5mcm9udEZhY2VBbHBoYSA9IGFscGhhXHJcbn1cclxuXHJcbmV4cG9ydCB7IGdldEN1cnJlbnRWaWV3LCBzZXREZWZhdWx0VmlldywgZmx5VG8sIENhbWVyYUNvbnRyb2xsZXIsIENlc2l1bUNvbnRhaW5lciwgc2V0QmlsbGJvYXJkRGVmYXVsdFVybCwgZ2V0QmlsbGJvYXJkRGVmYXVsdFVybCwgc2V0R3JvdW5kQ292ZXIsIGdldEdyb3VuZENvdmVyLCBnZXRCaW1QaWNrU3RhdHVzLCBzZXRCaW1QaWNrU3RhdHVzLCByb3RhdGVBcm91bmQsIGNsb3NlUm90YXRlQXJvdW5kLCBjbG9zZVZpZXdGb2xsb3csIEZsd1N0YXR1c1N3aXRjaCwgSnd3U3RhdHVzU3dpdGNoLCBnZXRGbHdTdGF0dXMsIGdldEp3d1N0YXR1cywgZ2V0Q29vcmRpbmF0ZVN5c3RlbSwgc2V0Q29vcmRpbmF0ZVN5c3RlbSwgZ2V0RE1TLCBzZXRETVMsIGNhbWVyYUNoYW5nZWQsIHNldE1heGltdW1SZXF1ZXN0c1BlclNlcnZlciwgc2V0S2V5Ym9hcmRFdmVudEFjdGl2ZSwgZ2V0VGhlbWUsIHNldFRoZW1lLCBnZXRDZXNpdW1JbmRleGVkREJNYXhTaXplLCBzZXRDZXNpdW1JbmRleGVkREJNYXhTaXplLCBnZXRDZXNpdW1NYW5hZ2VJbmRleGV4REJTdGF0ZSwgc2V0Q2VzaXVtTWFuYWdlSW5kZXhleERCU3RhdGUsIGdldENlc2l1bUluZGV4ZWREQkN1cnJlbnRTaXplLCBzZXRBY3RpdmVWaWV3ZXIsIGVuYWJsZVBlcnNwZWN0aXZlIH1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQTJCQTtBQUFBO0FBQUE7QUEzQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFtREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFlQTtBQUFBO0FBYkE7QUFJQTtBQUFBO0FBR0E7QUFJQTtBQUFBO0FBR0E7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBcERBO0FBQUE7QUFBQTtBQWxEQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFzREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRKQTtBQUFBO0FBQUE7QUF1SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Global/global.js\n");
-
-/***/ }),
-
-/***/ "./src/Global/mouseRightMenu/index.js":
-/*!********************************************!*\
- !*** ./src/Global/mouseRightMenu/index.js ***!
- \********************************************/
-/*! exports provided: MouseRightMenu, getMouseRightMenuStatus */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MouseRightMenu\", function() { return MouseRightMenu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMouseRightMenuStatus\", function() { return getMouseRightMenuStatus; });\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n/* harmony import */ var _SplitScreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../SplitScreen */ \"./src/Global/SplitScreen/index.js\");\n/* 右键点击菜单 */\n\n\n\n\nvar eventListener = {};\nfunction MouseRightMenu(sdk, status, callBack) {\n if (!sdk || !sdk.div_id) {\n return;\n }\n var sdkD = Object(_SplitScreen__WEBPACK_IMPORTED_MODULE_3__[\"getSdk\"])().sdkD;\n var _element = document.getElementById(sdk.div_id).getElementsByClassName('cesium-viewer')[0];\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n if (!eventListener[sdk.div_id]) {\n eventListener[sdk.div_id] = {};\n }\n if (eventListener[sdk.div_id].mousedown) {\n document.removeEventListener('mousedown', eventListener[sdk.div_id].mousedown);\n }\n if (eventListener[sdk.div_id].click) {\n document.removeEventListener('click', eventListener[sdk.div_id].click);\n }\n if (!eventListener[sdk.div_id].callBack) {\n eventListener[sdk.div_id].callBack = callBack;\n }\n if (sdk !== sdkD) {\n eventListener[sdk.div_id].mouseRightMenuEvent && eventListener[sdk.div_id].mouseRightMenuEvent.destroy();\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n eventListener[sdk.div_id].status = status;\n if (status) {\n eventListener[sdk.div_id].mousedown = function (e) {\n if (e.target.parentNode && e.target.parentNode.id == 'custom-menu' || e.target.parentNode && e.target.parentNode.parentNode && e.target.parentNode.parentNode.id == 'custom-menu') {\n return;\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n };\n document.addEventListener('mousedown', eventListener[sdk.div_id].mousedown);\n eventListener[sdk.div_id].click = function (e) {\n if (e.target.parentNode && e.target.parentNode.id == 'custom-menu' || e.target.parentNode && e.target.parentNode.parentNode && e.target.parentNode.parentNode.id == 'custom-menu') {\n return;\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n };\n document.addEventListener('click', eventListener[sdk.div_id].click);\n eventListener[sdk.div_id].mouseRightMenuEvent = new _Event_index__WEBPACK_IMPORTED_MODULE_0__[\"default\"](sdk);\n eventListener[sdk.div_id].mouseRightMenuEvent.mouse_right(function (movement, cartesian) {\n if (YJ.Measure.GetMeasureStatus() || sdk.viewer.trackedEntity) {\n return;\n }\n var entity = sdk.viewer.entities.getById('svg-control-points_0');\n if (entity && entity.show) {\n return;\n }\n var menuElm = document.getElementById('custom-menu');\n if (menuElm) {\n _element.removeChild(menuElm);\n }\n var entityId = getEntityId(movement);\n var targetId;\n if (Object.prototype.toString.call(entityId) === '[object Object]') {\n targetId = entityId.id;\n entityId = entityId.parentId;\n }\n var addedMenu = '';\n var that = sdk.entityMap.get(entityId);\n if (!that && entityId) {\n var array = entityId.split('-');\n array.splice(array.length - 1, 1);\n entityId = array.join('-');\n that = sdk.entityMap.get(entityId);\n }\n if (that && that.picking) {\n addedMenu = \"\\n \\n \\n \";\n }\n var position = tools.cartesian3Towgs84(cartesian, sdk.viewer);\n menuElm = document.createElement('div');\n menuElm.id = 'custom-menu';\n menuElm.style.position = 'absolute';\n menuElm.style.width = '110px';\n menuElm.style.backgroundColor = '#00000085';\n menuElm.style.color = '#ffffff';\n menuElm.style.padding = '6px 0';\n menuElm.style.boxShadow = '4px 4px 4px 0px rgba(0, 0, 0, 0.8)';\n menuElm.innerHTML = \"\\n \\n - \\u7ED5\\u9F20\\u6807\\u70B9\\u65CB\\u8F6C
\\n
\\n \\n - \\u6587\\u672C\\u6846
\\n
\\n \".concat(addedMenu, \"\\n \");\n _element.appendChild(menuElm);\n var left = movement.position.x;\n var top = movement.position.y;\n if (movement.position.x + menuElm.offsetWidth > _element.offsetWidth) {\n left = movement.position.x - menuElm.offsetWidth;\n }\n if (movement.position.y + menuElm.offsetHeight > _element.offsetHeight) {\n top = movement.position.y - menuElm.offsetHeight;\n }\n menuElm.style.left = left + 'px';\n menuElm.style.top = top + 'px';\n menuElm.addEventListener('contextmenu', function (event) {\n event.preventDefault();\n });\n var liElms = menuElm.getElementsByTagName('li');\n var object = {};\n var _loop = function _loop(i) {\n liElms[i].addEventListener('mouseover', function () {\n liElms[i].style.backgroundColor = '#5e5e5e';\n });\n liElms[i].addEventListener('mouseout', function () {\n liElms[i].style.backgroundColor = 'unset';\n });\n liElms[i].addEventListener('click', function () {\n var key = '';\n switch (liElms[i].innerHTML) {\n case '绕鼠标点旋转':\n object.position = position;\n key = 'rotateAround';\n // this.rotateAround(position)\n break;\n case '属性':\n if (targetId) {\n object.id = targetId;\n object.parentId = that.options.id;\n } else {\n object.id = that.options.id;\n }\n key = 'attribute';\n // that.edit(true)\n // this.attribute(entityId)\n break;\n case '文本框':\n object.position = position;\n key = 'textBox';\n break;\n }\n eventListener[sdk.div_id].callBack(key, object);\n _element.removeChild(menuElm);\n });\n };\n for (var i = 0; i < liElms.length; i++) {\n _loop(i);\n }\n });\n }\n function getEntityId(movement) {\n var pick = sdk.viewer.scene.pick(movement.position);\n if (pick) {\n if (pick.id) {\n if (pick.id.type && pick.id.type === 'vector' && pick.id.parentId) {\n return {\n parentId: pick.id.parentId,\n id: pick.id.id\n };\n } else if (pick.id.id) {\n return pick.id.id;\n } else if (typeof pick.id == 'string') {\n return pick.id;\n }\n } else {\n if (pick.primitive && pick.primitive.id) {\n return pick.primitive.id;\n }\n }\n }\n }\n}\nfunction getMouseRightMenuStatus(sdk) {\n if (!sdk || !sdk.div_id || !eventListener[sdk.div_id]) {\n return;\n } else {\n return eventListener[sdk.div_id].status;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvR2xvYmFsL21vdXNlUmlnaHRNZW51L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL0dsb2JhbC9tb3VzZVJpZ2h0TWVudS9pbmRleC5qcz9hODFkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIOWPs+mUrueCueWHu+iPnOWNlSAqL1xyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tICcuLi8uLi9FdmVudC9pbmRleCdcclxuaW1wb3J0IFRvb2xzIGZyb20gJy4uLy4uL1Rvb2xzJ1xyXG5pbXBvcnQgeyByb3RhdGVBcm91bmQgfSBmcm9tICcuLi8uLi9HbG9iYWwvZ2xvYmFsJ1xyXG5pbXBvcnQgeyBnZXRTZGsgfSBmcm9tICcuLi9TcGxpdFNjcmVlbidcclxuXHJcbmxldCBldmVudExpc3RlbmVyID0ge31cclxuXHJcbmZ1bmN0aW9uIE1vdXNlUmlnaHRNZW51KHNkaywgc3RhdHVzLCBjYWxsQmFjaykge1xyXG4gIGlmICghc2RrIHx8ICFzZGsuZGl2X2lkKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IHNka0QgPSBnZXRTZGsoKS5zZGtEXHJcbiAgbGV0IF9lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2RrLmRpdl9pZCkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXZpZXdlcicpWzBdXHJcbiAgbGV0IHRvb2xzID0gbmV3IFRvb2xzKClcclxuICBpZiAoIWV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0pIHtcclxuICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0gPSB7fVxyXG4gIH1cclxuICBpZiAoZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZWRvd24pIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICdtb3VzZWRvd24nLFxyXG4gICAgICBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLm1vdXNlZG93blxyXG4gICAgKVxyXG4gIH1cclxuICBpZiAoZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5jbGljaykge1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLmNsaWNrKVxyXG4gIH1cclxuICBpZiAoIWV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2FsbEJhY2spIHtcclxuICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2FsbEJhY2sgPSBjYWxsQmFja1xyXG4gIH1cclxuXHJcbiAgaWYgKHNkayAhPT0gc2RrRCkge1xyXG4gICAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZVJpZ2h0TWVudUV2ZW50ICYmXHJcbiAgICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0ubW91c2VSaWdodE1lbnVFdmVudC5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIGxldCBtZW51RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1tZW51JylcclxuICBpZiAobWVudUVsbSkge1xyXG4gICAgX2VsZW1lbnQucmVtb3ZlQ2hpbGQobWVudUVsbSlcclxuICB9XHJcbiAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5zdGF0dXMgPSBzdGF0dXNcclxuICBpZiAoc3RhdHVzKSB7XHJcbiAgICBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLm1vdXNlZG93biA9IGUgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgKGUudGFyZ2V0LnBhcmVudE5vZGUgJiYgZS50YXJnZXQucGFyZW50Tm9kZS5pZCA9PSAnY3VzdG9tLW1lbnUnKSB8fFxyXG4gICAgICAgIChlLnRhcmdldC5wYXJlbnROb2RlICYmXHJcbiAgICAgICAgICBlLnRhcmdldC5wYXJlbnROb2RlLnBhcmVudE5vZGUgJiZcclxuICAgICAgICAgIGUudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5pZCA9PSAnY3VzdG9tLW1lbnUnKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgbWVudUVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXN0b20tbWVudScpXHJcbiAgICAgIGlmIChtZW51RWxtKSB7XHJcbiAgICAgICAgX2VsZW1lbnQucmVtb3ZlQ2hpbGQobWVudUVsbSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZWRvd24pXHJcbiAgICBldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdLmNsaWNrID0gZSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAoZS50YXJnZXQucGFyZW50Tm9kZSAmJiBlLnRhcmdldC5wYXJlbnROb2RlLmlkID09ICdjdXN0b20tbWVudScpIHx8XHJcbiAgICAgICAgKGUudGFyZ2V0LnBhcmVudE5vZGUgJiZcclxuICAgICAgICAgIGUudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZSAmJlxyXG4gICAgICAgICAgZS50YXJnZXQucGFyZW50Tm9kZS5wYXJlbnROb2RlLmlkID09ICdjdXN0b20tbWVudScpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBtZW51RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1tZW51JylcclxuICAgICAgaWYgKG1lbnVFbG0pIHtcclxuICAgICAgICBfZWxlbWVudC5yZW1vdmVDaGlsZChtZW51RWxtKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2xpY2spXHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZVJpZ2h0TWVudUV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoc2RrKVxyXG4gICAgZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5tb3VzZVJpZ2h0TWVudUV2ZW50Lm1vdXNlX3JpZ2h0KFxyXG4gICAgICAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGlmIChZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSB8fCBzZGsudmlld2VyLnRyYWNrZWRFbnRpdHkpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZW50aXR5ID0gc2RrLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKCdzdmctY29udHJvbC1wb2ludHNfMCcpXHJcbiAgICAgICAgaWYgKGVudGl0eSAmJiBlbnRpdHkuc2hvdykge1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtZW51RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N1c3RvbS1tZW51JylcclxuICAgICAgICBpZiAobWVudUVsbSkge1xyXG4gICAgICAgICAgX2VsZW1lbnQucmVtb3ZlQ2hpbGQobWVudUVsbSlcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGVudGl0eUlkID0gZ2V0RW50aXR5SWQobW92ZW1lbnQpXHJcbiAgICAgICAgbGV0IHRhcmdldElkXHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlbnRpdHlJZCkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XHJcbiAgICAgICAgICB0YXJnZXRJZCA9IGVudGl0eUlkLmlkXHJcbiAgICAgICAgICBlbnRpdHlJZCA9IGVudGl0eUlkLnBhcmVudElkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhZGRlZE1lbnUgPSAnJ1xyXG4gICAgICAgIGxldCB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgaWYgKCF0aGF0ICYmIGVudGl0eUlkKSB7XHJcbiAgICAgICAgICBsZXQgYXJyYXkgPSBlbnRpdHlJZC5zcGxpdCgnLScpXHJcbiAgICAgICAgICBhcnJheS5zcGxpY2UoYXJyYXkubGVuZ3RoIC0gMSwgMSlcclxuICAgICAgICAgIGVudGl0eUlkID0gYXJyYXkuam9pbignLScpXHJcbiAgICAgICAgICB0aGF0ID0gc2RrLmVudGl0eU1hcC5nZXQoZW50aXR5SWQpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhhdCAmJiB0aGF0LnBpY2tpbmcpIHtcclxuICAgICAgICAgIGFkZGVkTWVudSA9IGBcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO2JvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO21hcmdpbjogNXB4O1wiPjwvc3Bhbj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJhZGRlZFwiIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTtwYWRkaW5nOiAwO21hcmdpbjogMDtmb250LXNpemU6IDEycHg7XCI+XHJcbiAgICAgICAgICA8bGkgc3R5bGU9XCJwYWRkaW5nOiAzcHggMTBweDtjdXJzb3I6IHBvaW50ZXI7XCI+5bGe5oCnPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIGBcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCBzZGsudmlld2VyKVxyXG4gICAgICAgIG1lbnVFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gICAgICAgIG1lbnVFbG0uaWQgPSAnY3VzdG9tLW1lbnUnXHJcbiAgICAgICAgbWVudUVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgICAgICBtZW51RWxtLnN0eWxlLndpZHRoID0gJzExMHB4J1xyXG4gICAgICAgIG1lbnVFbG0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyMwMDAwMDA4NSdcclxuICAgICAgICBtZW51RWxtLnN0eWxlLmNvbG9yID0gJyNmZmZmZmYnXHJcbiAgICAgICAgbWVudUVsbS5zdHlsZS5wYWRkaW5nID0gJzZweCAwJ1xyXG4gICAgICAgIG1lbnVFbG0uc3R5bGUuYm94U2hhZG93ID0gJzRweCA0cHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuOCknXHJcbiAgICAgICAgbWVudUVsbS5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgPHVsIGNsYXNzPVwiYmFzZVwiIHN0eWxlPVwibGlzdC1zdHlsZTogbm9uZTtwYWRkaW5nOiAwO21hcmdpbjogMDtmb250LXNpemU6IDEycHg7XCI+XHJcbiAgICAgICAgICA8bGkgc3R5bGU9XCJwYWRkaW5nOiAzcHggMTBweDtjdXJzb3I6IHBvaW50ZXI7XCI+57uV6byg5qCH54K55peL6L2sPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImJhc2VcIiBzdHlsZT1cImxpc3Qtc3R5bGU6IG5vbmU7cGFkZGluZzogMDttYXJnaW46IDA7Zm9udC1zaXplOiAxMnB4O1wiPlxyXG4gICAgICAgICAgPGxpIHN0eWxlPVwicGFkZGluZzogM3B4IDEwcHg7Y3Vyc29yOiBwb2ludGVyO1wiPuaWh+acrOahhjwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICAke2FkZGVkTWVudX1cclxuICAgICAgYFxyXG4gICAgICAgIF9lbGVtZW50LmFwcGVuZENoaWxkKG1lbnVFbG0pXHJcbiAgICAgICAgbGV0IGxlZnQgPSBtb3ZlbWVudC5wb3NpdGlvbi54XHJcbiAgICAgICAgbGV0IHRvcCA9IG1vdmVtZW50LnBvc2l0aW9uLnlcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBtb3ZlbWVudC5wb3NpdGlvbi54ICsgbWVudUVsbS5vZmZzZXRXaWR0aCA+XHJcbiAgICAgICAgICBfZWxlbWVudC5vZmZzZXRXaWR0aFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbGVmdCA9IG1vdmVtZW50LnBvc2l0aW9uLnggLSBtZW51RWxtLm9mZnNldFdpZHRoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIG1vdmVtZW50LnBvc2l0aW9uLnkgKyBtZW51RWxtLm9mZnNldEhlaWdodCA+XHJcbiAgICAgICAgICBfZWxlbWVudC5vZmZzZXRIZWlnaHRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRvcCA9IG1vdmVtZW50LnBvc2l0aW9uLnkgLSBtZW51RWxtLm9mZnNldEhlaWdodFxyXG4gICAgICAgIH1cclxuICAgICAgICBtZW51RWxtLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4J1xyXG4gICAgICAgIG1lbnVFbG0uc3R5bGUudG9wID0gdG9wICsgJ3B4J1xyXG5cclxuICAgICAgICBtZW51RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBsZXQgbGlFbG1zID0gbWVudUVsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGknKVxyXG4gICAgICAgIGxldCBvYmplY3QgPSB7fVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlFbG1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsaUVsbXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsaUVsbXNbaV0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM1ZTVlNWUnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGlFbG1zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBsaUVsbXNbaV0uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3Vuc2V0J1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxpRWxtc1tpXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGtleSA9ICcnXHJcbiAgICAgICAgICAgIHN3aXRjaCAobGlFbG1zW2ldLmlubmVySFRNTCkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ+e7lem8oOagh+eCueaXi+i9rCc6XHJcbiAgICAgICAgICAgICAgICBvYmplY3QucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAga2V5ID0gJ3JvdGF0ZUFyb3VuZCdcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMucm90YXRlQXJvdW5kKHBvc2l0aW9uKVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICBjYXNlICflsZ7mgKcnOlxyXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldElkKSB7XHJcbiAgICAgICAgICAgICAgICAgIG9iamVjdC5pZCA9IHRhcmdldElkXHJcbiAgICAgICAgICAgICAgICAgIG9iamVjdC5wYXJlbnRJZCA9IHRoYXQub3B0aW9ucy5pZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG9iamVjdC5pZCA9IHRoYXQub3B0aW9ucy5pZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAga2V5ID0gJ2F0dHJpYnV0ZSdcclxuICAgICAgICAgICAgICAgIC8vIHRoYXQuZWRpdCh0cnVlKVxyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5hdHRyaWJ1dGUoZW50aXR5SWQpXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgIGNhc2UgJ+aWh+acrOahhic6XHJcbiAgICAgICAgICAgICAgICBvYmplY3QucG9zaXRpb24gPSBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAga2V5ID0gJ3RleHRCb3gnXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJbc2RrLmRpdl9pZF0uY2FsbEJhY2soa2V5LCBvYmplY3QpXHJcbiAgICAgICAgICAgIF9lbGVtZW50LnJlbW92ZUNoaWxkKG1lbnVFbG0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gZ2V0RW50aXR5SWQobW92ZW1lbnQpIHtcclxuICAgIGxldCBwaWNrID0gc2RrLnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgaWYgKHBpY2spIHtcclxuICAgICAgaWYgKHBpY2suaWQpIHtcclxuICAgICAgICBpZiAocGljay5pZC50eXBlICYmIHBpY2suaWQudHlwZSA9PT0gJ3ZlY3RvcicgJiYgcGljay5pZC5wYXJlbnRJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcGFyZW50SWQ6IHBpY2suaWQucGFyZW50SWQsXHJcbiAgICAgICAgICAgIGlkOiBwaWNrLmlkLmlkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHBpY2suaWQuaWQpIHtcclxuICAgICAgICAgIHJldHVybiBwaWNrLmlkLmlkXHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcGljay5pZCA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgcmV0dXJuIHBpY2suaWRcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHBpY2sucHJpbWl0aXZlICYmIHBpY2sucHJpbWl0aXZlLmlkKSB7XHJcbiAgICAgICAgICByZXR1cm4gcGljay5wcmltaXRpdmUuaWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE1vdXNlUmlnaHRNZW51U3RhdHVzKHNkaykge1xyXG4gIGlmICghc2RrIHx8ICFzZGsuZGl2X2lkIHx8ICFldmVudExpc3RlbmVyW3Nkay5kaXZfaWRdKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICByZXR1cm4gZXZlbnRMaXN0ZW5lcltzZGsuZGl2X2lkXS5zdGF0dXNcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IE1vdXNlUmlnaHRNZW51LCBnZXRNb3VzZVJpZ2h0TWVudVN0YXR1cyB9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5DQTtBQUFBO0FBQUE7QUFvQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Global/mouseRightMenu/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureAngle/index.js":
-/*!*******************************************!*\
- !*** ./src/Measure/MeasureAngle/index.js ***!
- \*******************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2023-12-29 10:11\r\n * @description:index\r\n * @update: 2023-12-29 10:11\r\n */\n\nvar MeasureAngle = /*#__PURE__*/function (_Measure) {\n function MeasureAngle(sdk) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeasureAngle);\n _this = _callSuper(this, MeasureAngle, [sdk, {\n text: \"左键单击确定起点位置,右键单击取消夹角测量!\"\n }]);\n _this.cachePositions = [];\n _this.positions = [];\n _this.arcPositions = [];\n _this.line_id = \"\";\n _this.label_id = \"\";\n _this.arc_id = \"\";\n _this.bearing = 0;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(MeasureAngle, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MeasureAngle, [{\n key: \"createPolyline\",\n value: function createPolyline() {\n var that = this;\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureAngle, \"end\", this, 3)([]);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n _superPropGet(MeasureAngle, \"destroy\", this, 3)([]);\n var arr = [this.line_id, this.label_id, this.arc_id];\n arr.forEach(function (id) {\n if (id) _this2.remove_entity(id);\n });\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this.end();\n this.destroy();\n }\n }, {\n key: \"caculateAngle\",\n value: function caculateAngle() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var p1 = this.cartesian3Towgs84(points[0], this.viewer);\n var p2 = this.cartesian3Towgs84(points[1], this.viewer);\n var p3 = this.cartesian3Towgs84(points[2], this.viewer);\n var point1 = turf.point([p1.lng, p1.lat]);\n var point2 = turf.point([p2.lng, p2.lat]);\n var point3 = turf.point([p3.lng, p3.lat]);\n var options = {\n units: 'kilometers'\n };\n var distance1 = turf.rhumbDistance(point1, point2, options);\n var distance2 = turf.rhumbDistance(point3, point2, options);\n var distance = distance1;\n if (distance1 > distance2) {\n distance = distance2;\n }\n var bearing1 = turf.rhumbBearing(point1, point2);\n var bearing2 = turf.rhumbBearing(point3, point2);\n var bearing = Math.abs((bearing1 - bearing2 + 360) % 360);\n if (bearing > 180) {\n this.bearing = 360 - bearing;\n } else {\n this.bearing = bearing;\n }\n this.bearing = this.bearing.toFixed(2);\n var b1 = bearing1 - 180;\n var b2 = bearing2 - 180;\n var arc = turf.lineArc(point2, distance / 3, b2, b1);\n if (bearing > 180) {\n arc = turf.lineArc(point2, distance / 3, b1, b2);\n }\n var arcPos = [];\n for (var i = 0; i < arc.geometry.coordinates.length; i++) {\n arcPos.push(Cesium.Cartesian3.fromDegrees(arc.geometry.coordinates[i][0], arc.geometry.coordinates[i][1]));\n }\n this.arcPositions = arcPos;\n\n // if (bearing1 > 0 && bearing2 > 0) {\n // this.bearing = Math.abs(bearing1 - bearing2).toFixed(1)\n // } else if (bearing1 < 0 && bearing2 < 0) {\n // this.bearing = Math.abs(bearing1 - bearing2).toFixed(1)\n // } else if (bearing1 > 0 && bearing2 < 0) {\n // this.bearing = Math.abs(360 - Math.abs(bearing2) - bearing1).toFixed(1)\n // } else {\n // this.bearing = Math.abs(360 - Math.abs(bearing1) - bearing2).toFixed(1)\n // }\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this3 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureAngle, \"start\", this, 3)([]);\n var leftEvent = function leftEvent(movement, car) {\n if (_this3.ids.length === 0) {\n //需要创建一个线\n _this3.line_id = _this3.createPolyline();\n _this3.tip.set_text('左键单击确定角点位置,右键单击取消夹角测量!');\n }\n _this3.ids.push(_this3.create_point(car));\n _this3.tip.setPosition(car, movement.position.x, movement.position.y);\n _this3.cachePositions.push(car);\n if (_this3.cachePositions.length) {\n _this3.positions = _this3.cachePositions.concat(car);\n }\n if (_this3.ids.length === 2) {\n _this3.tip.set_text('左键单击确定终点位置,完成夹角测量!');\n _this3.label_id = Cesium.createGuid();\n _this3.arc_id = Cesium.createGuid();\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n _this3.sampleHeightMostDetailed([p]).then(function (res) {\n var arc = _this3.viewer.entities.add({\n id: _this3.arc_id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return _this3.arcPositions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(_this3.options.color || _this3.defaultColor),\n zIndex: 99999999\n }\n });\n var label = _this3.viewer.entities.add({\n id: _this3.label_id,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, (res[0].height || 0) + 0.1),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return \"夹角:\" + _this3.bearing + \"°\";\n }, false),\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n }\n });\n });\n }\n if (_this3.ids.length === 3) {\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1], _this3.positions[2]]);\n //需要停止绘制\n _this3.end();\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this3.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n if (_this3.cachePositions.length) {\n _this3.positions = _this3.cachePositions.concat(car);\n }\n if (_this3.positions.length > 2) {\n //需要开始计算夹角\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1], _this3.positions[2]]);\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this3.cancel();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.cancel();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureAngle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlQW5nbGUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlQW5nbGUvaW5kZXguanM/NGFlZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjMtMTItMjkgMTA6MTFcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMy0xMi0yOSAxMDoxMVxyXG4gKi9cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcblxyXG5jbGFzcyBNZWFzdXJlQW5nbGUgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICBjb25zdHJ1Y3RvcihzZGspIHtcclxuICAgIHN1cGVyKHNkaywgeyB0ZXh0OiBcIuW3pumUruWNleWHu+ehruWumui1t+eCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOWkueinkua1i+mHj++8gVwiIH0pO1xyXG4gICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmFyY1Bvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmxpbmVfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmxhYmVsX2lkID0gXCJcIlxyXG4gICAgdGhpcy5hcmNfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmJlYXJpbmcgPSAwXHJcbiAgfVxyXG5cclxuICBjcmVhdGVQb2x5bGluZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IDUsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvciB8fCB0aGF0LmRlZmF1bHRDb2xvciksXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KSlcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgZW5kKCkge1xyXG4gICAgc3VwZXIuZW5kKCk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgc3VwZXIuZGVzdHJveSgpO1xyXG4gICAgbGV0IGFyciA9IFt0aGlzLmxpbmVfaWQsIHRoaXMubGFiZWxfaWQsIHRoaXMuYXJjX2lkXVxyXG4gICAgYXJyLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBpZiAoaWQpXHJcbiAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KGlkKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMuZW5kKClcclxuICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgfVxyXG5cclxuICBjYWN1bGF0ZUFuZ2xlKHBvaW50cyA9IFtdKSB7XHJcbiAgICBsZXQgcDEgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvaW50c1swXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgcDIgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvaW50c1sxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgcDMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHBvaW50c1syXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgcG9pbnQxID0gdHVyZi5wb2ludChbcDEubG5nLCBwMS5sYXRdKTtcclxuICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFtwMi5sbmcsIHAyLmxhdF0pO1xyXG4gICAgbGV0IHBvaW50MyA9IHR1cmYucG9pbnQoW3AzLmxuZywgcDMubGF0XSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9O1xyXG4gICAgbGV0IGRpc3RhbmNlMSA9IHR1cmYucmh1bWJEaXN0YW5jZShwb2ludDEsIHBvaW50Miwgb3B0aW9ucyk7XHJcbiAgICBsZXQgZGlzdGFuY2UyID0gdHVyZi5yaHVtYkRpc3RhbmNlKHBvaW50MywgcG9pbnQyLCBvcHRpb25zKTtcclxuICAgIGxldCBkaXN0YW5jZSA9IGRpc3RhbmNlMVxyXG4gICAgaWYgKGRpc3RhbmNlMSA+IGRpc3RhbmNlMikge1xyXG4gICAgICBkaXN0YW5jZSA9IGRpc3RhbmNlMlxyXG4gICAgfVxyXG5cclxuICAgIGxldCBiZWFyaW5nMSA9IHR1cmYucmh1bWJCZWFyaW5nKHBvaW50MSwgcG9pbnQyKVxyXG4gICAgbGV0IGJlYXJpbmcyID0gdHVyZi5yaHVtYkJlYXJpbmcocG9pbnQzLCBwb2ludDIpXHJcblxyXG4gICAgbGV0IGJlYXJpbmcgPSBNYXRoLmFicygoKGJlYXJpbmcxIC0gYmVhcmluZzIpICsgMzYwKSAlIDM2MClcclxuICAgIGlmIChiZWFyaW5nID4gMTgwKSB7XHJcbiAgICAgIHRoaXMuYmVhcmluZyA9IDM2MCAtIGJlYXJpbmdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVhcmluZyA9IGJlYXJpbmdcclxuICAgIH1cclxuICAgIHRoaXMuYmVhcmluZyA9IHRoaXMuYmVhcmluZy50b0ZpeGVkKDIpXHJcblxyXG4gICAgbGV0IGIxID0gKGJlYXJpbmcxIC0gMTgwKVxyXG4gICAgbGV0IGIyID0gKGJlYXJpbmcyIC0gMTgwKVxyXG4gICAgbGV0IGFyYyA9IHR1cmYubGluZUFyYyhwb2ludDIsIChkaXN0YW5jZSAvIDMpLCBiMiwgYjEpO1xyXG4gICAgaWYgKGJlYXJpbmcgPiAxODApIHtcclxuICAgICAgYXJjID0gdHVyZi5saW5lQXJjKHBvaW50MiwgKGRpc3RhbmNlIC8gMyksIGIxLCBiMik7XHJcbiAgICB9XHJcbiAgICBsZXQgYXJjUG9zID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJjLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGFyY1Bvcy5wdXNoKENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGFyYy5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVswXSwgYXJjLmdlb21ldHJ5LmNvb3JkaW5hdGVzW2ldWzFdKSlcclxuICAgIH1cclxuICAgIHRoaXMuYXJjUG9zaXRpb25zID0gYXJjUG9zXHJcblxyXG4gICAgLy8gaWYgKGJlYXJpbmcxID4gMCAmJiBiZWFyaW5nMiA+IDApIHtcclxuICAgIC8vICAgdGhpcy5iZWFyaW5nID0gTWF0aC5hYnMoYmVhcmluZzEgLSBiZWFyaW5nMikudG9GaXhlZCgxKVxyXG4gICAgLy8gfSBlbHNlIGlmIChiZWFyaW5nMSA8IDAgJiYgYmVhcmluZzIgPCAwKSB7XHJcbiAgICAvLyAgIHRoaXMuYmVhcmluZyA9IE1hdGguYWJzKGJlYXJpbmcxIC0gYmVhcmluZzIpLnRvRml4ZWQoMSlcclxuICAgIC8vIH0gZWxzZSBpZiAoYmVhcmluZzEgPiAwICYmIGJlYXJpbmcyIDwgMCkge1xyXG4gICAgLy8gICB0aGlzLmJlYXJpbmcgPSBNYXRoLmFicygzNjAgLSBNYXRoLmFicyhiZWFyaW5nMikgLSBiZWFyaW5nMSkudG9GaXhlZCgxKVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5iZWFyaW5nID0gTWF0aC5hYnMoMzYwIC0gTWF0aC5hYnMoYmVhcmluZzEpIC0gYmVhcmluZzIpLnRvRml4ZWQoMSlcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG5cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKTtcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIC8v6ZyA6KaB5Yib5bu65LiA5Liq57q/XHJcbiAgICAgICAgICB0aGlzLmxpbmVfaWQgPSB0aGlzLmNyZWF0ZVBvbHlsaW5lKClcclxuICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprop5LngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojlpLnop5LmtYvph4/vvIEnKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXIpKVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQucG9zaXRpb24ueCwgbW92ZW1lbnQucG9zaXRpb24ueSlcclxuICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdChjYXIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprnu4jngrnkvY3nva7vvIzlrozmiJDlpLnop5LmtYvph4/vvIEnKVxyXG4gICAgICAgICAgdGhpcy5sYWJlbF9pZCA9IENlc2l1bS5jcmVhdGVHdWlkKClcclxuICAgICAgICAgIHRoaXMuYXJjX2lkID0gQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLnNhbXBsZUhlaWdodE1vc3REZXRhaWxlZChbcF0pLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgYXJjID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgICBpZDogdGhpcy5hcmNfaWQsXHJcbiAgICAgICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXJjUG9zaXRpb25zXHJcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDUsXHJcbiAgICAgICAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yIHx8IHRoaXMuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMubGFiZWxfaWQsXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgKHJlc1swXS5oZWlnaHQgfHwgMCkgKyAwLjEpLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCLlpLnop5LvvJpcIiArIHRoaXMuYmVhcmluZyArIFwiwrBcIlxyXG4gICAgICAgICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2YxZTYwNScpLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkUsXHJcbiAgICAgICAgICAgICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAgICAgICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuICAgICAgICAgICAgICAgIHNjYWxlOiAxLFxyXG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMykge1xyXG4gICAgICAgICAgdGhpcy5jYWN1bGF0ZUFuZ2xlKFt0aGlzLnBvc2l0aW9uc1swXSwgdGhpcy5wb3NpdGlvbnNbMV0sIHRoaXMucG9zaXRpb25zWzJdXSlcclxuICAgICAgICAgIC8v6ZyA6KaB5YGc5q2i57uY5Yi2XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIC8v6ZyA6KaB5byA5aeL6K6h566X5aS56KeSXHJcbiAgICAgICAgICB0aGlzLmNhY3VsYXRlQW5nbGUoW3RoaXMucG9zaXRpb25zWzBdLCB0aGlzLnBvc2l0aW9uc1sxXSwgdGhpcy5wb3NpdGlvbnNbMl1dKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FuY2VsKClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWwoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVBbmdsZVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureAngle/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureAzimuth/index.js":
-/*!*********************************************!*\
- !*** ./src/Measure/MeasureAzimuth/index.js ***!
- \*********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\nvar MeasureAzimuth = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 方位角测量\r\n * */\n function MeasureAzimuth(sdk) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureAzimuth);\n _this = _callSuper(this, MeasureAzimuth, [sdk, {\n text: \"左键单击确定控制点位置,右键单击取消方位角测量!\"\n }]);\n _this.cachePositions = [];\n _this.positions = [];\n _this.arcPositions = [];\n _this.line_id = \"\";\n _this.label_id = \"\";\n _this.arc_id = \"\";\n _this.bearing = 0;\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureAzimuth, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureAzimuth, [{\n key: \"createPolyline\",\n value: function createPolyline() {\n var that = this;\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureAzimuth, \"end\", this, 3)([]);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n _superPropGet(MeasureAzimuth, \"destroy\", this, 3)([]);\n var arr = [this.line_id, this.label_id, this.arc_id];\n arr.forEach(function (id) {\n if (id) _this2.remove_entity(id);\n });\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this.end();\n this.destroy();\n }\n }, {\n key: \"caculateAngle\",\n value: function caculateAngle() {\n var line1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var line2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var c = this.cartesian3Towgs84(line2[1], this.viewer);\n var p2 = this.cartesian3Towgs84(line2[0], this.viewer);\n var center = turf.point([c.lng, c.lat]);\n var point2 = turf.point([p2.lng, p2.lat]);\n var bearing = this.rhumbBearing(p2, c);\n this.bearing = (180 + bearing).toFixed(2);\n var distance = turf.rhumbDistance(center, point2, {\n units: 'kilometers'\n });\n var arc = turf.lineArc(center, distance / 3, 0, this.bearing);\n var arcPos = [];\n for (var i = 0; i < arc.geometry.coordinates.length; i++) {\n arcPos.push(Cesium.Cartesian3.fromDegrees(arc.geometry.coordinates[i][0], arc.geometry.coordinates[i][1]));\n }\n this.arcPositions = arcPos;\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this3 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureAzimuth, \"start\", this, 3)([]);\n var leftEvent = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(movement, car) {\n var _Cesium$Cartesian, p, pc, from, to, options, distance, bearing, destination, _p, res, arc, label;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (_this3.ids.length === 0) {\n //需要创建一个线\n _this3.line_id = _this3.createPolyline();\n }\n _this3.tip.set_text('左键单击确定控制点位置,完成方位角测量!');\n _this3.tip.setPosition(car, movement.position.x, movement.position.y);\n if (_this3.cachePositions.length) {\n _this3.positions = _this3.cachePositions.concat(car);\n p = _this3.cartesian3Towgs84(car, _this3.viewer);\n pc = _this3.cartesian3Towgs84(_this3.positions[1], _this3.viewer);\n from = turf.point([pc.lng, pc.lat]);\n to = turf.point([p.lng, p.lat]);\n options = {\n units: 'kilometers'\n };\n distance = turf.rhumbDistance(from, to, options);\n bearing = 0;\n destination = turf.destination(from, distance, bearing, options);\n _this3.positions[0] = (_Cesium$Cartesian = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(destination.geometry.coordinates));\n }\n _this3.cachePositions.push(car);\n _this3.cachePositions.push(car);\n if (_this3.positions.length > 2) {\n //需要开始计算夹角\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1]], [_this3.positions[2], _this3.positions[1]]);\n }\n if (!(_this3.ids.length >= 2)) {\n _context.next = 10;\n break;\n }\n //需要停止绘制\n _this3.end();\n return _context.abrupt(\"return\");\n case 10:\n _this3.ids.push(_this3.create_point(car));\n _this3.ids.push(_this3.create_point(car));\n if (!(_this3.ids.length === 2)) {\n _context.next = 21;\n break;\n }\n _this3.label_id = Cesium.createGuid();\n _this3.arc_id = Cesium.createGuid();\n _p = _this3.cartesian3Towgs84(car, _this3.viewer);\n _context.next = 18;\n return _this3.sampleHeightMostDetailed([_p]);\n case 18:\n res = _context.sent;\n arc = _this3.viewer.entities.add({\n id: _this3.arc_id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return _this3.arcPositions;\n }, false),\n clampToGround: true,\n width: 5,\n material: new Cesium.Color.fromCssColorString(_this3.options.color || _this3.defaultColor),\n zIndex: 99999999\n }\n });\n label = _this3.viewer.entities.add({\n id: _this3.label_id,\n position: Cesium.Cartesian3.fromDegrees(_p.lng, _p.lat, (res[0].height || 0) + 0.1),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return \"方位夹角:\" + _this3.bearing + \"°\";\n }, false),\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n }\n }); //需要创建夹角的显示效果\n case 21:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function leftEvent(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this3.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n if (_this3.cachePositions.length) {\n var _Cesium$Cartesian2;\n _this3.positions = _this3.cachePositions.concat(car);\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n var pc = _this3.cartesian3Towgs84(_this3.positions[1], _this3.viewer);\n var from = turf.point([pc.lng, pc.lat]);\n var to = turf.point([p.lng, p.lat]);\n var options = {\n units: 'kilometers'\n };\n var distance = turf.rhumbDistance(from, to, options);\n var bearing = 0;\n var destination = turf.destination(from, distance, bearing, options);\n _this3.positions[0] = (_Cesium$Cartesian2 = Cesium.Cartesian3).fromDegrees.apply(_Cesium$Cartesian2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(destination.geometry.coordinates));\n }\n if (_this3.positions.length > 2) {\n //需要开始计算夹角\n _this3.caculateAngle([_this3.positions[0], _this3.positions[1]], [_this3.positions[2], _this3.positions[1]]);\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this3.cancel();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.cancel();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureAzimuth);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlQXppbXV0aC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL01lYXN1cmVBemltdXRoL2luZGV4LmpzPzM0ZDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcblxyXG5jbGFzcyBNZWFzdXJlQXppbXV0aCBleHRlbmRzIE1lYXN1cmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQGRlc2NyaXB0aW9uIOaWueS9jeinkua1i+mHj1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrKSB7XHJcbiAgICBzdXBlcihzZGssIHsgdGV4dDogXCLlt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojmlrnkvY3op5LmtYvph4/vvIFcIiB9KTtcclxuICAgIHRoaXMuY2FjaGVQb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5hcmNQb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5saW5lX2lkID0gXCJcIlxyXG4gICAgdGhpcy5sYWJlbF9pZCA9IFwiXCJcclxuICAgIHRoaXMuYXJjX2lkID0gXCJcIlxyXG4gICAgdGhpcy5iZWFyaW5nID0gMFxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUG9seWxpbmUoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgIGlkLFxyXG4gICAgICBwb2x5bGluZToge1xyXG4gICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uc1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgICAgIHdpZHRoOiA1LFxyXG4gICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgfVxyXG4gICAgfSkpXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHN1cGVyLmRlc3Ryb3koKTtcclxuICAgIGxldCBhcnIgPSBbdGhpcy5saW5lX2lkLCB0aGlzLmxhYmVsX2lkLCB0aGlzLmFyY19pZF1cclxuICAgIGFyci5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgaWYgKGlkKVxyXG4gICAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLmVuZCgpXHJcbiAgICB0aGlzLmRlc3Ryb3koKVxyXG4gIH1cclxuXHJcbiAgY2FjdWxhdGVBbmdsZShsaW5lMSA9IFtdLCBsaW5lMiA9IFtdKSB7XHJcbiAgICBsZXQgYyA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQobGluZTJbMV0sIHRoaXMudmlld2VyKVxyXG4gICAgbGV0IHAyID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChsaW5lMlswXSwgdGhpcy52aWV3ZXIpXHJcbiAgICBsZXQgY2VudGVyID0gdHVyZi5wb2ludChbYy5sbmcsIGMubGF0XSlcclxuICAgIGxldCBwb2ludDIgPSB0dXJmLnBvaW50KFtwMi5sbmcsIHAyLmxhdF0pXHJcbiAgICBsZXQgYmVhcmluZyA9IHRoaXMucmh1bWJCZWFyaW5nKHAyLCBjKVxyXG4gICAgdGhpcy5iZWFyaW5nID0gKDE4MCArIGJlYXJpbmcpLnRvRml4ZWQoMilcclxuICAgIFxyXG4gICAgbGV0IGRpc3RhbmNlID0gdHVyZi5yaHVtYkRpc3RhbmNlKGNlbnRlciwgcG9pbnQyLCB7IHVuaXRzOiAna2lsb21ldGVycycgfSk7XHJcbiAgICBsZXQgYXJjID0gdHVyZi5saW5lQXJjKGNlbnRlciwgKGRpc3RhbmNlLzMpLCAwLCB0aGlzLmJlYXJpbmcpO1xyXG4gICAgbGV0IGFyY1BvcyA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyYy5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBhcmNQb3MucHVzaChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhhcmMuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbaV1bMF0sIGFyYy5nZW9tZXRyeS5jb29yZGluYXRlc1tpXVsxXSkpXHJcbiAgICB9XHJcbiAgICB0aGlzLmFyY1Bvc2l0aW9ucyA9IGFyY1Bvc1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXJ0KCkge1xyXG4gICAgaWYgKCFZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBzdXBlci5zdGFydCgpO1xyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IGFzeW5jIChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgLy/pnIDopoHliJvlu7rkuIDkuKrnur9cclxuICAgICAgICAgIHRoaXMubGluZV9pZCA9IHRoaXMuY3JlYXRlUG9seWxpbmUoKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5a6M5oiQ5pa55L2N6KeS5rWL6YeP77yBJylcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LnBvc2l0aW9uLngsIG1vdmVtZW50LnBvc2l0aW9uLnkpXHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHBjID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLnBvc2l0aW9uc1sxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgZnJvbSA9IHR1cmYucG9pbnQoW3BjLmxuZywgcGMubGF0XSk7XHJcbiAgICAgICAgICBsZXQgdG8gPSB0dXJmLnBvaW50KFtwLmxuZywgcC5sYXRdKTtcclxuICAgICAgICAgIGxldCBvcHRpb25zID0geyB1bml0czogJ2tpbG9tZXRlcnMnIH07XHJcbiAgICAgICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLnJodW1iRGlzdGFuY2UoZnJvbSwgdG8sIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICAgIGxldCBiZWFyaW5nID0gMDtcclxuICAgICAgICAgIGxldCBkZXN0aW5hdGlvbiA9IHR1cmYuZGVzdGluYXRpb24oZnJvbSwgZGlzdGFuY2UsIGJlYXJpbmcsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnNbMF0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyguLi5kZXN0aW5hdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKGNhcilcclxuICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9ucy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICAvL+mcgOimgeW8gOWni+iuoeeul+WkueinklxyXG4gICAgICAgICAgdGhpcy5jYWN1bGF0ZUFuZ2xlKFxyXG4gICAgICAgICAgICBbdGhpcy5wb3NpdGlvbnNbMF0sIHRoaXMucG9zaXRpb25zWzFdXSxcclxuICAgICAgICAgICAgW3RoaXMucG9zaXRpb25zWzJdLCB0aGlzLnBvc2l0aW9uc1sxXV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPj0gMikge1xyXG4gICAgICAgICAgLy/pnIDopoHlgZzmraLnu5jliLZcclxuICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludChjYXIpKVxyXG4gICAgICAgIHRoaXMuaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FyKSlcclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmxhYmVsX2lkID0gQ2VzaXVtLmNyZWF0ZUd1aWQoKVxyXG4gICAgICAgICAgdGhpcy5hcmNfaWQgPSBDZXNpdW0uY3JlYXRlR3VpZCgpXHJcbiAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLnNhbXBsZUhlaWdodE1vc3REZXRhaWxlZChbcF0pXHJcblxyXG4gICAgICAgICAgbGV0IGFyYyA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmFyY19pZCxcclxuICAgICAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcmNQb3NpdGlvbnNcclxuICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB3aWR0aDogNSxcclxuICAgICAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhpcy5vcHRpb25zLmNvbG9yIHx8IHRoaXMuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgbGV0IGxhYmVsID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMubGFiZWxfaWQsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIChyZXNbMF0uaGVpZ2h0IHx8IDApICsgMC4xKSxcclxuICAgICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5pa55L2N5aS56KeS77yaXCIgKyB0aGlzLmJlYXJpbmcgKyBcIsKwXCJcclxuICAgICAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmMWU2MDUnKSxcclxuICAgICAgICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICAgICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAgICAgICAgIC8vIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjogdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sXHJcbiAgICAgICAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLy/pnIDopoHliJvlu7rlpLnop5LnmoTmmL7npLrmlYjmnpxcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSlcclxuICAgICAgICBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoY2FyKVxyXG4gICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgcGMgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMucG9zaXRpb25zWzFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGxldCBmcm9tID0gdHVyZi5wb2ludChbcGMubG5nLCBwYy5sYXRdKTtcclxuICAgICAgICAgIGxldCB0byA9IHR1cmYucG9pbnQoW3AubG5nLCBwLmxhdF0pO1xyXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSB7IHVuaXRzOiAna2lsb21ldGVycycgfTtcclxuICAgICAgICAgIGxldCBkaXN0YW5jZSA9IHR1cmYucmh1bWJEaXN0YW5jZShmcm9tLCB0bywgb3B0aW9ucyk7XHJcblxyXG4gICAgICAgICAgbGV0IGJlYXJpbmcgPSAwO1xyXG4gICAgICAgICAgbGV0IGRlc3RpbmF0aW9uID0gdHVyZi5kZXN0aW5hdGlvbihmcm9tLCBkaXN0YW5jZSwgYmVhcmluZywgb3B0aW9ucyk7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKC4uLmRlc3RpbmF0aW9uLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgLy/pnIDopoHlvIDlp4vorqHnrpflpLnop5JcclxuICAgICAgICAgIHRoaXMuY2FjdWxhdGVBbmdsZShcclxuICAgICAgICAgICAgW3RoaXMucG9zaXRpb25zWzBdLCB0aGlzLnBvc2l0aW9uc1sxXV0sXHJcbiAgICAgICAgICAgIFt0aGlzLnBvc2l0aW9uc1syXSwgdGhpcy5wb3NpdGlvbnNbMV1dKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FuY2VsKClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5jYW5jZWwoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVBemltdXRoXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUE3RUE7QUFBQTtBQUFBO0FBOEVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureAzimuth/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureDistance/index.js":
-/*!**********************************************!*\
- !*** ./src/Measure/MeasureDistance/index.js ***!
- \**********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:31\r\n * @description:index\r\n * @update: 2022-07-11 10:31\r\n */\n\n\nvar MeasureDistance = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 距离测量\r\n * */\n function MeasureDistance(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureDistance);\n _this = _callSuper(this, MeasureDistance, [sdk, options]);\n _this.options.color = _this.options.color || \"#00ffff\";\n _this.start_id = \"\";\n _this.end_id = \"\";\n _this.polyline_id = \"\";\n _this.clampPositions = [];\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureDistance, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureDistance, [{\n key: \"clampToGroundMeasure\",\n value: function () {\n var _clampToGroundMeasure = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(meters, cb) {\n var _this2 = this;\n var positions, res, coordinates, total, _iterator, _step, item, index, r;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n positions = [];\n this.ids.forEach(function (id, index) {\n var p = _this2.viewer.entities.getById(id).position.getValue();\n positions.push(_this2.cartesian3Towgs84(p, _this2.viewer));\n });\n res = this.chunkLine(positions, meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n total = coordinates.length;\n _iterator = _createForOfIteratorHelper(coordinates);\n _context.prev = 7;\n _iterator.s();\n case 9:\n if ((_step = _iterator.n()).done) {\n _context.next = 18;\n break;\n }\n item = _step.value;\n index = coordinates.indexOf(item);\n _context.next = 14;\n return this.getHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index, total);\n case 14:\n r = _context.sent;\n cb(null, r);\n case 16:\n _context.next = 9;\n break;\n case 18:\n _context.next = 23;\n break;\n case 20:\n _context.prev = 20;\n _context.t0 = _context[\"catch\"](7);\n _iterator.e(_context.t0);\n case 23:\n _context.prev = 23;\n _iterator.f();\n return _context.finish(23);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[7, 20, 23, 26]]);\n }));\n function clampToGroundMeasure(_x, _x2) {\n return _clampToGroundMeasure.apply(this, arguments);\n }\n return clampToGroundMeasure;\n }()\n }, {\n key: \"computeDisByTowPoint\",\n value: function () {\n var _computeDisByTowPoint = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(p1, p2) {\n var _this3 = this;\n var d, meters, createLabel, start;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n d = this.computeDistance2([p1, p2]);\n meters = 10;\n createLabel = function createLabel(distance) {\n if (_this3._isDestroy) {\n return;\n }\n var label = _this3.getLabel(\"贴地距离:\" + Number(distance).toFixed(2) + \"米\");\n label.pixelOffset = new Cesium.Cartesian2(0, -32);\n _this3.ids.push(MeasureDistance.create_point(Cesium.Cartesian3.fromDegrees(p2.lng, p2.lat, p2.alt), {\n label: label\n }, _this3));\n };\n start = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(meters) {\n var res, coordinates, arr, _iterator2, _step2, item, index, r, total_length, l;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n res = _this3.chunkLine([p1, p2], meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n arr = [];\n _iterator2 = _createForOfIteratorHelper(coordinates);\n _context2.prev = 5;\n _iterator2.s();\n case 7:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 16;\n break;\n }\n item = _step2.value;\n index = coordinates.indexOf(item);\n _context2.next = 12;\n return _this3.sampleHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index);\n case 12:\n r = _context2.sent;\n arr.push(r);\n case 14:\n _context2.next = 7;\n break;\n case 16:\n _context2.next = 21;\n break;\n case 18:\n _context2.prev = 18;\n _context2.t0 = _context2[\"catch\"](5);\n _iterator2.e(_context2.t0);\n case 21:\n _context2.prev = 21;\n _iterator2.f();\n return _context2.finish(21);\n case 24:\n total_length = 0;\n l = arr.length - 1;\n arr.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this3.computeDistance2([item.position, arr[index + 1].position]);\n var d2 = Math.abs(item.position.alt - arr[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n createLabel(total_length);\n case 28:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[5, 18, 21, 24]]);\n }));\n return function start(_x5) {\n return _ref.apply(this, arguments);\n };\n }(); //暂时固定取20个点\n if (!(d > 2)) {\n _context3.next = 10;\n break;\n }\n //大于20m时,固定取20个点\n meters = d / 20;\n _context3.next = 8;\n return start(meters);\n case 8:\n _context3.next = 17;\n break;\n case 10:\n if (!(d < 1)) {\n _context3.next = 14;\n break;\n }\n //不计算\n createLabel(d);\n _context3.next = 17;\n break;\n case 14:\n //小于20m的时候\n meters = 1;\n _context3.next = 17;\n return start(meters);\n case 17:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function computeDisByTowPoint(_x3, _x4) {\n return _computeDisByTowPoint.apply(this, arguments);\n }\n return computeDisByTowPoint;\n }()\n }, {\n key: \"sampleHeight\",\n value: function () {\n var _sampleHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(p1, index) {\n var height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.getClampToHeight(p1, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.sdk.viewer.entities.values));\n case 2:\n height = _context4.sent;\n p1.alt = height;\n return _context4.abrupt(\"return\", {\n position: p1,\n index: index\n });\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function sampleHeight(_x6, _x7) {\n return _sampleHeight.apply(this, arguments);\n }\n return sampleHeight;\n }()\n }, {\n key: \"getHeight\",\n value: function () {\n var _getHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee5(p1, index, total) {\n var p2, total_length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context5.sent;\n p1.alt = p2[0].height;\n this.clampPositions.push({\n position: p1,\n index: index\n });\n if (!(total === this.clampPositions.length)) {\n _context5.next = 8;\n break;\n }\n total_length = this.startCompute();\n return _context5.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length,\n total_length: total_length\n });\n case 8:\n return _context5.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length\n });\n case 9:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function getHeight(_x8, _x9, _x10) {\n return _getHeight.apply(this, arguments);\n }\n return getHeight;\n }()\n }, {\n key: \"startCompute\",\n value: function startCompute() {\n var _this4 = this;\n this.clampPositions.sort(function (a, b) {\n return a.index < b.index;\n });\n var total_length = 0;\n var l = this.clampPositions.length - 1;\n this.clampPositions.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this4.computeDistance2([item.position, _this4.clampPositions[index + 1].position]);\n var d2 = Math.abs(item.position.alt - _this4.clampPositions[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n return Number(total_length.toFixed(2));\n }\n }, {\n key: \"getLabel\",\n value: function getLabel(text) {\n return {\n text: text || '',\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n\n // disableDepthTestDistance: this.disableDepthTestDistance,\n };\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this5 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureDistance, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消贴地距离测量!');\n var leftEvent = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee6(movement, car) {\n var cur_point, pre_p, startPoint;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n if (_this5.ids.length === 0) {\n _this5.polyline_id = MeasureDistance.createPolyline(_this5);\n _this5.start_id = MeasureDistance.create_point(car, {\n image: \"start1.png\",\n width: 30,\n height: 38,\n label: _this5.getLabel(\"\")\n }, _this5);\n //创建起点\n }\n _this5.tip.setPosition(car, movement.position.x, movement.position.y);\n _this5.positions = _this5.cachePositions.concat(car);\n if (!(_this5.ids.length !== 0)) {\n _context6.next = 12;\n break;\n }\n cur_point = _this5.cartesian3Towgs84(car, _this5.viewer);\n pre_p = _this5.cartesian3Towgs84(_this5.cachePositions[_this5.cachePositions.length - 1], _this5.viewer);\n _this5.cachePositions.push(car);\n _this5.tip.set_text('左键单击确定控制点位置,右键单击完成贴地距离测量!');\n _context6.next = 10;\n return _this5.computeDisByTowPoint(pre_p, cur_point);\n case 10:\n _context6.next = 16;\n break;\n case 12:\n _this5.cachePositions.push(car);\n _this5.ids.push(MeasureDistance.create_point(car, {}, _this5));\n startPoint = _this5.viewer.entities.getById(_this5.ids[0]);\n if (startPoint) {\n startPoint.billboard.show = false;\n }\n case 16:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return function leftEvent(_x11, _x12) {\n return _ref2.apply(this, arguments);\n };\n }();\n var rightEvent = function rightEvent(movement, car) {\n if (_this5.cachePositions.length) {\n _this5.positions = _this5.cachePositions;\n _this5.end_id = MeasureDistance.create_point(_this5.cachePositions[_this5.cachePositions.length - 1], {\n image: \"end1.png\",\n width: 30,\n height: 38\n }, _this5);\n var endPoint = _this5.viewer.entities.getById(_this5.ids[_this5.ids.length - 1]);\n if (endPoint) {\n endPoint.billboard.show = false;\n }\n }\n if (_this5.cachePositions.length < 2) {\n _this5.destroy();\n YJ.Measure.Measures.pop(); //弹出测量实体\n }\n _this5.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this5.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n _this5.positions = _this5.cachePositions.concat(car);\n // if (this.cachePositions.length) {\n // let cur_point = this.cartesian3Towgs84(car, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // let cur_len = this.computeDistance2([cur_point, pre_p])\n // let text = \"当前投影距离:\" + cur_len + \" 米\"\n // // this.tip.set_text(text)\n // }\n });\n this.event.mouse_right(rightEvent);\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this5.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this6 = this;\n [this.polyline_id, this.end_id, this.start_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this6.remove_entity(id);\n });\n _superPropGet(MeasureDistance, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n // YJ.Measure.SetMeasureStatus(false)\n // this.tip.destroy()\n // this.event.destroy()\n _superPropGet(MeasureDistance, \"end\", this, 3)([]);\n // this.setPickStatus(this.pickStatus.pick)\n }\n }], [{\n key: \"createPolyline\",\n value: function createPolyline(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 3,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian, _ref3, that) {\n var label = _ref3.label,\n _ref3$image = _ref3.image,\n image = _ref3$image === void 0 ? \"point.png\" : _ref3$image,\n width = _ref3.width,\n height = _ref3.height;\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n if (label) {\n label.pixelOffset = new Cesium.Cartesian2(0, -(height || 32));\n }\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: label,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/' + image,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: width,\n height: height\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureDistance);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlRGlzdGFuY2UvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlRGlzdGFuY2UvaW5kZXguanM/OGFlYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMTEgMTA6MzFcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNy0xMSAxMDozMVxyXG4gKi9cclxuXHJcbmltcG9ydCBNZWFzdXJlIGZyb20gXCIuLi9pbmRleFwiXHJcblxyXG5jbGFzcyBNZWFzdXJlRGlzdGFuY2UgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDot53nprvmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB0aGlzLm9wdGlvbnMuY29sb3IgfHwgXCIjMDBmZmZmXCJcclxuICAgIHRoaXMuc3RhcnRfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmVuZF9pZCA9IFwiXCJcclxuICAgIHRoaXMucG9seWxpbmVfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zID0gW11cclxuICB9XHJcblxyXG4gIGFzeW5jIGNsYW1wVG9Hcm91bmRNZWFzdXJlKG1ldGVycywgY2IpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5pZHMuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBwID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZChpZCkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHAsIHRoaXMudmlld2VyKSlcclxuICAgIH0pXHJcbiAgICBsZXQgcmVzID0gdGhpcy5jaHVua0xpbmUocG9zaXRpb25zLCBtZXRlcnMpXHJcbiAgICBsZXQgY29vcmRpbmF0ZXMgPSBbXVxyXG4gICAgcmVzLmZvckVhY2goKEZlYXR1cmUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgIGNvb3JkaW5hdGVzID0gWy4uLkZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXMucHVzaChGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsID0gY29vcmRpbmF0ZXMubGVuZ3RoXHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGNvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY29vcmRpbmF0ZXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLmdldEhlaWdodCh7bG5nOiBpdGVtWzBdLCBsYXQ6IGl0ZW1bMV0sIGFsdDogMH0sIGluZGV4LCB0b3RhbCwpXHJcbiAgICAgIGNiKG51bGwsIHIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBjb21wdXRlRGlzQnlUb3dQb2ludChwMSwgcDIpIHtcclxuICAgIGxldCBkID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtwMSwgcDJdKVxyXG4gICAgbGV0IG1ldGVycyA9IDEwXHJcbiAgICBsZXQgY3JlYXRlTGFiZWwgPSAoZGlzdGFuY2UpID0+IHtcclxuICAgICAgaWYodGhpcy5faXNEZXN0cm95KSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGxhYmVsID0gdGhpcy5nZXRMYWJlbChcIui0tOWcsOi3neemu++8mlwiICsgTnVtYmVyKGRpc3RhbmNlKS50b0ZpeGVkKDIpICsgXCLnsbNcIilcclxuICAgICAgbGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgMCwgLSgzMilcclxuICAgICAgKVxyXG4gICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVEaXN0YW5jZS5jcmVhdGVfcG9pbnQoQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocDIubG5nLCBwMi5sYXQsIHAyLmFsdCksIHtsYWJlbDogbGFiZWx9LCB0aGlzKSlcclxuICAgIH1cclxuICAgIGxldCBzdGFydCA9IGFzeW5jIChtZXRlcnMpID0+IHtcclxuICAgICAgbGV0IHJlcyA9IHRoaXMuY2h1bmtMaW5lKFtwMSwgcDJdLCBtZXRlcnMpXHJcbiAgICAgIGxldCBjb29yZGluYXRlcyA9IFtdXHJcbiAgICAgIHJlcy5mb3JFYWNoKChGZWF0dXJlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgY29vcmRpbmF0ZXMgPSBbLi4uRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc11cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29vcmRpbmF0ZXMucHVzaChGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgbGV0IGFyciA9IFtdXHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb29yZGluYXRlcykge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY29vcmRpbmF0ZXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICBsZXQgciA9IGF3YWl0IHRoaXMuc2FtcGxlSGVpZ2h0KHtsbmc6IGl0ZW1bMF0sIGxhdDogaXRlbVsxXSwgYWx0OiAwfSwgaW5kZXgpXHJcbiAgICAgICAgYXJyLnB1c2gocilcclxuICAgICAgfVxyXG4gICAgICBsZXQgdG90YWxfbGVuZ3RoID0gMFxyXG4gICAgICBsZXQgbCA9IGFyci5sZW5ndGggLSAxXHJcbiAgICAgIGFyci5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gbCkge1xyXG4gICAgICAgICAgbGV0IGQxID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtpdGVtLnBvc2l0aW9uLCBhcnJbaW5kZXggKyAxXS5wb3NpdGlvbl0pXHJcbiAgICAgICAgICBsZXQgZDIgPSBNYXRoLmFicyhpdGVtLnBvc2l0aW9uLmFsdCAtIGFycltpbmRleCArIDFdLnBvc2l0aW9uLmFsdClcclxuICAgICAgICAgIGxldCBkMyA9IE1hdGguc3FydChkMSAqIGQxICsgZDIgKiBkMilcclxuICAgICAgICAgIHRvdGFsX2xlbmd0aCArPSBkM1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgY3JlYXRlTGFiZWwodG90YWxfbGVuZ3RoKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL+aaguaXtuWbuuWumuWPljIw5Liq54K5XHJcbiAgICBpZiAoZCA+IDIpIHsvL+Wkp+S6jjIwbeaXtu+8jOWbuuWumuWPljIw5Liq54K5XHJcbiAgICAgIG1ldGVycyA9IGQgLyAyMFxyXG4gICAgICBhd2FpdCBzdGFydChtZXRlcnMpXHJcbiAgICB9IGVsc2UgaWYgKGQgPCAxKSB7XHJcbiAgICAgIC8v5LiN6K6h566XXHJcbiAgICAgIGNyZWF0ZUxhYmVsKGQpXHJcbiAgICB9IGVsc2Ugey8v5bCP5LqOMjBt55qE5pe25YCZXHJcbiAgICAgIG1ldGVycyA9IDFcclxuICAgICAgYXdhaXQgc3RhcnQobWV0ZXJzKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBhc3luYyBzYW1wbGVIZWlnaHQocDEsIGluZGV4KSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRDbGFtcFRvSGVpZ2h0KHAxLCBbLi4udGhpcy5zZGsudmlld2VyLmVudGl0aWVzLnZhbHVlc10pXHJcbiAgICBwMS5hbHQgPSBoZWlnaHRcclxuICAgIHJldHVybiB7cG9zaXRpb246IHAxLCBpbmRleH1cclxuICB9XHJcblxyXG5cclxuICBhc3luYyBnZXRIZWlnaHQocDEsIGluZGV4LCB0b3RhbCkge1xyXG4gICAgbGV0IHAyID0gYXdhaXQgdGhpcy5zYW1wbGVIZWlnaHRNb3N0RGV0YWlsZWQoW3AxXSlcclxuICAgIHAxLmFsdCA9IHAyWzBdLmhlaWdodFxyXG4gICAgdGhpcy5jbGFtcFBvc2l0aW9ucy5wdXNoKHtwb3NpdGlvbjogcDEsIGluZGV4fSlcclxuICAgIGlmICh0b3RhbCA9PT0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgbGV0IHRvdGFsX2xlbmd0aCA9IHRoaXMuc3RhcnRDb21wdXRlKClcclxuICAgICAgcmV0dXJuIHt0b3RhbCwgY3VycmVudDogdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGgsIHRvdGFsX2xlbmd0aH1cclxuICAgIH1cclxuICAgIHJldHVybiB7dG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLH1cclxuICB9XHJcblxyXG4gIHN0YXJ0Q29tcHV0ZSgpIHtcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMuc29ydChmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICByZXR1cm4gYS5pbmRleCA8IGIuaW5kZXhcclxuICAgIH0pXHJcbiAgICBsZXQgdG90YWxfbGVuZ3RoID0gMFxyXG4gICAgbGV0IGwgPSB0aGlzLmNsYW1wUG9zaXRpb25zLmxlbmd0aCAtIDFcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ICE9PSBsKSB7XHJcbiAgICAgICAgbGV0IGQxID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtpdGVtLnBvc2l0aW9uLCB0aGlzLmNsYW1wUG9zaXRpb25zW2luZGV4ICsgMV0ucG9zaXRpb25dKVxyXG4gICAgICAgIGxldCBkMiA9IE1hdGguYWJzKGl0ZW0ucG9zaXRpb24uYWx0IC0gdGhpcy5jbGFtcFBvc2l0aW9uc1tpbmRleCArIDFdLnBvc2l0aW9uLmFsdClcclxuICAgICAgICBsZXQgZDMgPSBNYXRoLnNxcnQoZDEgKiBkMSArIGQyICogZDIpXHJcbiAgICAgICAgdG90YWxfbGVuZ3RoICs9IGQzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gTnVtYmVyKHRvdGFsX2xlbmd0aC50b0ZpeGVkKDIpKVxyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBjcmVhdGVQb2x5bGluZSh0aGF0KSB7XHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQobmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICBpZCxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnNcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogMyxcclxuICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgIGNvbG9yOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgICAgZGFzaExlbmd0aDogMjAsIC8v55+t5YiS57q/6ZW/5bqmXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KSlcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHtcclxuICAgIGxhYmVsLCBpbWFnZSA9IFwicG9pbnQucG5nXCIsXHJcbiAgICB3aWR0aCxcclxuICAgIGhlaWdodFxyXG4gIH0sIHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBwID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoYXQudmlld2VyKVxyXG4gICAgaWYgKGxhYmVsKSB7XHJcbiAgICAgIGxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgIDAsIC0oaGVpZ2h0IHx8IDMyKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgcC5hbHQpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nLycgKyBpbWFnZSxcclxuICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICB3aWR0aCxcclxuICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWwodGV4dCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGV4dDogdGV4dCB8fCAnJyxcclxuICAgICAgLy/moIfms6jmloflrZfmj4/ov7BcclxuICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZjFlNjA1JyksXHJcbiAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAvLyBkaXN0YW5jZURpc3BsYXlDb25kaXRpb246IHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLFxyXG4gICAgICBzY2FsZTogMSxcclxuICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAvLyBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5byA5aeL5rWL6YePXHJcbiAgICovXHJcbiAgc3RhcnQoKSB7XHJcbiAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLmNhY2hlUG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOi0tOWcsOi3neemu+a1i+mHjyEnKVxyXG5cclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSBhc3luYyAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9seWxpbmVfaWQgPSAoTWVhc3VyZURpc3RhbmNlLmNyZWF0ZVBvbHlsaW5lKHRoaXMpKVxyXG4gICAgICAgICAgdGhpcy5zdGFydF9pZCA9IE1lYXN1cmVEaXN0YW5jZS5jcmVhdGVfcG9pbnQoY2FyLCB7XHJcbiAgICAgICAgICAgIGltYWdlOiBcInN0YXJ0MS5wbmdcIiwgd2lkdGg6IDMwLCBoZWlnaHQ6IDM4LCBsYWJlbDogdGhpcy5nZXRMYWJlbChcIlwiKVxyXG4gICAgICAgICAgfSwgdGhpcylcclxuICAgICAgICAgIC8v5Yib5bu66LW354K5XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LnBvc2l0aW9uLngsIG1vdmVtZW50LnBvc2l0aW9uLnkpXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdChjYXIpXHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgIGxldCBjdXJfcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICBsZXQgcHJlX3AgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMuY2FjaGVQb3NpdGlvbnNbdGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggLSAxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOi0tOWcsOi3neemu+a1i+mHjyEnKVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jb21wdXRlRGlzQnlUb3dQb2ludChwcmVfcCwgY3VyX3BvaW50KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy5pZHMucHVzaChNZWFzdXJlRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge30sIHRoaXMpKVxyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzWzBdKVxyXG4gICAgICAgICAgaWYoc3RhcnRQb2ludCkge1xyXG4gICAgICAgICAgICBzdGFydFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHJpZ2h0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zXHJcbiAgICAgICAgICB0aGlzLmVuZF9pZCA9IE1lYXN1cmVEaXN0YW5jZS5jcmVhdGVfcG9pbnQodGhpcy5jYWNoZVBvc2l0aW9uc1t0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCAtIDFdLCB7XHJcbiAgICAgICAgICAgIGltYWdlOiBcImVuZDEucG5nXCIsXHJcbiAgICAgICAgICAgIHdpZHRoOiAzMCxcclxuICAgICAgICAgICAgaGVpZ2h0OiAzOCxcclxuICAgICAgICAgIH0sIHRoaXMpXHJcbiAgICAgICAgICBsZXQgZW5kUG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzW3RoaXMuaWRzLmxlbmd0aC0xXSlcclxuICAgICAgICAgIGlmKGVuZFBvaW50KSB7XHJcbiAgICAgICAgICAgIGVuZFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgdGhpcy5kZXN0cm95KClcclxuICAgICAgICAgIFlKLk1lYXN1cmUuTWVhc3VyZXMucG9wKCkvL+W8ueWHuua1i+mHj+WunuS9k1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FyLCBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi55KVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoY2FyKVxyXG4gICAgICAgIC8vIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIC8vICAgbGV0IGN1cl9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBwcmVfcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5jYWNoZVBvc2l0aW9uc1t0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCAtIDFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBjdXJfbGVuID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjdXJfcG9pbnQsIHByZV9wXSlcclxuICAgICAgICAvLyAgIGxldCB0ZXh0ID0gXCLlvZPliY3mipXlvbHot53nprvvvJpcIiArIGN1cl9sZW4gKyBcIiDnsbNcIlxyXG4gICAgICAgIC8vICAgLy8gdGhpcy50aXAuc2V0X3RleHQodGV4dClcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQocmlnaHRFdmVudClcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBbdGhpcy5wb2x5bGluZV9pZCwgdGhpcy5lbmRfaWQsIHRoaXMuc3RhcnRfaWQsIC4uLnRoaXMuaWRzXS5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KGlkKVxyXG4gICAgfSlcclxuICAgIHN1cGVyLmRlc3Ryb3koKVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIC8vIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIC8vIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgLy8gdGhpcy5ldmVudC5kZXN0cm95KClcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgICAvLyB0aGlzLnNldFBpY2tTdGF0dXModGhpcy5waWNrU3RhdHVzLnBpY2spXHJcblxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTWVhc3VyZURpc3RhbmNlXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBdEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEzQkE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUF2REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUExQkE7QUFBQTtBQUFBO0FBMkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQXBMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUhBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBeUlBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureDistance/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureHeight/index.js":
-/*!********************************************!*\
- !*** ./src/Measure/MeasureHeight/index.js ***!
- \********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-22 17:15\r\n * @description:index\r\n * @update: 2022-07-22 17:15\r\n */\n\nvar MeasureHeight = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 高度测量\r\n * */\n function MeasureHeight(sdk) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeasureHeight);\n return _callSuper(this, MeasureHeight, [sdk, {\n text: \"左键单击确定控制点位置,右键单击取消垂直高度测量!\"\n }]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(MeasureHeight, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MeasureHeight, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureHeight, \"start\", this, 3)([]);\n this.positions = [];\n this.position = new Cesium.Cartesian3();\n this.height = 0;\n this.text = \"\";\n this.circleRadius = 0;\n var count = 0;\n this.firstpoint = null;\n var leftEvent = function leftEvent(movement, cartesian) {\n if (_this.firstpoint === null) {\n _this.positions.push(cartesian);\n _this.firstpoint = _this.cartesian3Towgs84(cartesian, _this.viewer);\n _this.ids.push(MeasureHeight.create_polygon(_this));\n _this.ids.push(MeasureHeight.create_point(_this, cartesian));\n }\n _this.tip.set_text('左键单击确定终点位置,完成垂直高度测量!');\n count++;\n _this.tip.setPosition(cartesian, movement.position.x, movement.position.y);\n if (count === 2) {\n if (_this.firstpoint) {\n var cur_point = _this.cartesian3Towgs84(cartesian, _this.viewer);\n _this.positions[1] = Cesium.Cartesian3.fromDegrees(_this.firstpoint.lng, _this.firstpoint.lat, cur_point.alt);\n _this.positions[2] = cartesian;\n _this.position = _this.positions[1];\n _this.circleRadius = _this.computeDistance2([_this.firstpoint, cur_point]);\n _this.height = Number((cur_point.alt - _this.firstpoint.alt).toFixed(2));\n _this.text = \"相对高度:\" + _this.height + \" 米\";\n // this.tip.set_text(\"左键完成,右键取消;半径:\" + this.circleRadius + \" 米\")\n }\n _this.ids.push(MeasureHeight.create_point(_this, cartesian, {\n label: {\n text: \"半径:\" + _this.circleRadius + \" 米\"\n }\n }));\n _this.end();\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, cartesian) {\n _this.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n if (_this.firstpoint) {\n var cur_point = _this.cartesian3Towgs84(cartesian, _this.viewer);\n _this.positions[1] = Cesium.Cartesian3.fromDegrees(_this.firstpoint.lng, _this.firstpoint.lat, cur_point.alt);\n _this.positions[2] = cartesian;\n _this.position = _this.positions[1];\n _this.circleRadius = _this.computeDistance2([_this.firstpoint, cur_point]);\n _this.height = Number((cur_point.alt - _this.firstpoint.alt).toFixed(2));\n _this.text = \"相对高度:\" + _this.height + \" 米\";\n // this.tip.set_text(\"左键完成,右键取消;半径:\" + this.circleRadius + \" 米\")\n }\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this.end();\n _this.destroy();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this.end();\n _this.destroy();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureHeight, \"end\", this, 3)([]);\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n _superPropGet(MeasureHeight, \"destroy\", this, 3)([]);\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var id = that.randomString();\n var a = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n },\n position: new Cesium.CallbackProperty(function () {\n return that.position;\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n scale: 1,\n // fillColor: Cesium.Color.RED,\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(0, -15),\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function (e) {\n return that.positions;\n }, false),\n width: 2,\n material: Cesium.Color.YELLOW,\n zIndex: 99999999\n },\n ellipse: {\n height: new Cesium.CallbackProperty(function () {\n return that.height + that.firstpoint.alt;\n }, false),\n semiMinorAxis: new Cesium.CallbackProperty(function (e) {\n return that.circleRadius;\n }, false),\n semiMajorAxis: new Cesium.CallbackProperty(function (e) {\n return that.circleRadius;\n }, false),\n material: new Cesium.Color.fromCssColorString(that.defaultColor)\n }\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(that, cartesian) {\n var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n var params = {\n id: id,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/point.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n };\n if (option.label) {\n params.label = {\n text: option.label.text,\n scale: 1,\n // fillColor: Cesium.Color.fromCssColorString(\"#06eee5\"),\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(0, -15)\n };\n }\n that.viewer.entities.add(new Cesium.Entity(params));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureHeight);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlSGVpZ2h0L2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZUhlaWdodC9pbmRleC5qcz82YjJkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMi0wNy0yMiAxNzoxNVxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTIyIDE3OjE1XHJcbiAqL1xyXG5pbXBvcnQgTWVhc3VyZSBmcm9tIFwiLi4vaW5kZXhcIjtcclxuXHJcbmNsYXNzIE1lYXN1cmVIZWlnaHQgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDpq5jluqbmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaykge1xyXG4gICAgc3VwZXIoc2RrLCB7dGV4dDogXCLlt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojlnoLnm7Tpq5jluqbmtYvph4/vvIFcIn0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5Z29uKHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBhID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcblxyXG4gICAgICB9LFxyXG4gICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvblxyXG4gICAgICB9LCBmYWxzZSksXHJcbiAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LnRleHRcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgLy8gZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuUkVELFxyXG4gICAgICAgIGZvbnQ6ICdub3JtYWwgMjBweCBNaWNyb1NvZnQgWWFIZWknLFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLTE1KSxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnM7XHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuWUVMTE9XLFxyXG4gICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgfSxcclxuICAgICAgZWxsaXBzZToge1xyXG4gICAgICAgIGhlaWdodDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LmhlaWdodCArIHRoYXQuZmlyc3Rwb2ludC5hbHQ7XHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHNlbWlNaW5vckF4aXM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eShlID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LmNpcmNsZVJhZGl1cztcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgc2VtaU1ham9yQXhpczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KGUgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQuY2lyY2xlUmFkaXVzO1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5kZWZhdWx0Q29sb3IpXHJcblxyXG4gICAgICB9LFxyXG4gICAgfSkpXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVfcG9pbnQodGhhdCwgY2FydGVzaWFuLCBvcHRpb24gPSB7fSkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgbGV0IHAgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhhdC52aWV3ZXIpXHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogaWQsXHJcbiAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIHAuYWx0KSxcclxuICAgICAgYmlsbGJvYXJkOiB7XHJcbiAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5XSElURS53aXRoQWxwaGEoMC45OSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbi5sYWJlbCkge1xyXG4gICAgICBwYXJhbXMubGFiZWwgPSB7XHJcbiAgICAgICAgdGV4dDogb3B0aW9uLmxhYmVsLnRleHQsXHJcbiAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgLy8gZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKFwiIzA2ZWVlNVwiKSxcclxuICAgICAgICBmb250OiAnbm9ybWFsIDIwcHggTWljcm9Tb2Z0IFlhSGVpJyxcclxuICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIC0xNSksXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkocGFyYW1zKVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICB0aGlzLmhlaWdodCA9IDBcclxuICAgICAgdGhpcy50ZXh0ID0gXCJcIlxyXG4gICAgICB0aGlzLmNpcmNsZVJhZGl1cyA9IDBcclxuICAgICAgbGV0IGNvdW50ID0gMDtcclxuICAgICAgdGhpcy5maXJzdHBvaW50ID0gbnVsbFxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3Rwb2ludCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMucHVzaChjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB0aGlzLmZpcnN0cG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVIZWlnaHQuY3JlYXRlX3BvbHlnb24odGhpcykpXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVIZWlnaHQuY3JlYXRlX3BvaW50KHRoaXMsIGNhcnRlc2lhbikpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprnu4jngrnkvY3nva7vvIzlrozmiJDlnoLnm7Tpq5jluqbmtYvph48hJylcclxuICAgICAgICBjb3VudCsrXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FydGVzaWFuLCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG4gICAgICAgIGlmIChjb3VudCA9PT0gMikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmlyc3Rwb2ludCkge1xyXG4gICAgICAgICAgICBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1sxXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHRoaXMuZmlyc3Rwb2ludC5sbmcsIHRoaXMuZmlyc3Rwb2ludC5sYXQsIGN1cl9wb2ludC5hbHQpXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zWzJdID0gY2FydGVzaWFuXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uc1sxXVxyXG4gICAgICAgICAgICB0aGlzLmNpcmNsZVJhZGl1cyA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbdGhpcy5maXJzdHBvaW50LCBjdXJfcG9pbnRdKVxyXG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IE51bWJlcigoY3VyX3BvaW50LmFsdCAtIHRoaXMuZmlyc3Rwb2ludC5hbHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IFwi55u45a+56auY5bqm77yaXCIgKyB0aGlzLmhlaWdodCArIFwiIOexs1wiXHJcbiAgICAgICAgICAgIC8vIHRoaXMudGlwLnNldF90ZXh0KFwi5bem6ZSu5a6M5oiQ77yM5Y+z6ZSu5Y+W5raI77yb5Y2K5b6E77yaXCIgKyB0aGlzLmNpcmNsZVJhZGl1cyArIFwiIOexs1wiKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5pZHMucHVzaChNZWFzdXJlSGVpZ2h0LmNyZWF0ZV9wb2ludCh0aGlzLCBjYXJ0ZXNpYW4sIHtsYWJlbDoge3RleHQ6IFwi5Y2K5b6E77yaXCIgKyB0aGlzLmNpcmNsZVJhZGl1cyArIFwiIOexs1wifX0pKVxyXG4gICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXJ0ZXNpYW4sIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3Rwb2ludCkge1xyXG4gICAgICAgICAgbGV0IGN1cl9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zWzFdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5maXJzdHBvaW50LmxuZywgdGhpcy5maXJzdHBvaW50LmxhdCwgY3VyX3BvaW50LmFsdClcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zWzJdID0gY2FydGVzaWFuXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbMV1cclxuICAgICAgICAgIHRoaXMuY2lyY2xlUmFkaXVzID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFt0aGlzLmZpcnN0cG9pbnQsIGN1cl9wb2ludF0pXHJcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IE51bWJlcigoY3VyX3BvaW50LmFsdCAtIHRoaXMuZmlyc3Rwb2ludC5hbHQpLnRvRml4ZWQoMikpXHJcbiAgICAgICAgICB0aGlzLnRleHQgPSBcIuebuOWvuemrmOW6pu+8mlwiICsgdGhpcy5oZWlnaHQgKyBcIiDnsbNcIlxyXG4gICAgICAgICAgLy8gdGhpcy50aXAuc2V0X3RleHQoXCLlt6bplK7lrozmiJDvvIzlj7PplK7lj5bmtojvvJvljYrlvoTvvJpcIiArIHRoaXMuY2lyY2xlUmFkaXVzICsgXCIg57GzXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTmtYvph49cclxuICAgKi9cclxuICBkZXN0cm95KCkge1xyXG4gICAgc3VwZXIuZGVzdHJveSgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlSGVpZ2h0XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvRkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE5S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFrR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureHeight/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureLocation/index.js":
-/*!**********************************************!*\
- !*** ./src/Measure/MeasureLocation/index.js ***!
- \**********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n/* harmony import */ var _Tools_proj__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Tools/proj */ \"./src/Tools/proj.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-22 16:13\r\n * @description:index\r\n * @update: 2022-07-22 16:13\r\n */\n\n\n\nvar MeasureLocation = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk\r\n * @description 坐标测量\r\n * */\n function MeasureLocation(sdk) {\n var _this;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, MeasureLocation);\n _this = _callSuper(this, MeasureLocation, [sdk, {\n text: \"\"\n }]);\n _this.defaultColor = \"#f11515\";\n _this.locationID = _this.randomString();\n _this.position = new Cesium.Cartesian3();\n _this.text = \"\";\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(MeasureLocation, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(MeasureLocation, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this2 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureLocation, \"start\", this, 3)([]);\n this.cache_id = MeasureLocation.create_point(this);\n MeasureLocation.createLocation(this);\n var leftEvent = function leftEvent(movement, cartesian) {\n _this2.position = cartesian;\n var entity = _this2.viewer.entities.getById(_this2.locationID);\n if (entity) {\n entity.show = true;\n }\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n var coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_9__[\"getCoordinateSystem\"])();\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n _this2.text = \"\\u7ECF\\u5EA6\\uFF1A\".concat(Number(p.lng.toFixed(8)), \"\\n\\u7EAC\\u5EA6\\uFF1A\").concat(Number(p.lat.toFixed(8)), \"\\n\\u6D77\\u62D4\\uFF1A\").concat(Number(p.alt.toFixed(2)));\n } else {\n var result = _this2.convert([{\n x: p.lng,\n y: p.lat,\n z: p.alt\n }], 'EPSG:4326', coordinateSystem);\n _this2.text = \"x\\uFF1A\".concat(Number(result.points[0].x.toFixed(8)), \"\\ny\\uFF1A\").concat(Number(result.points[0].y.toFixed(8)), \"\\nz\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)));\n }\n _this2.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_right(function (movement, cartesian) {\n _this2.destroy();\n _this2.end();\n });\n this.event.mouse_move(function (movement, cartesian) {\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n var entity = _this2.viewer.entities.getById(_this2.locationID);\n if (entity) {\n entity.show = true;\n }\n _this2.position = cartesian;\n var p = _this2.cartesian3Towgs84(cartesian, _this2.viewer);\n var coordinateSystem = Object(_Global_global__WEBPACK_IMPORTED_MODULE_9__[\"getCoordinateSystem\"])();\n if (coordinateSystem === 'EPSG:4326' || coordinateSystem === 'EPSG:4490') {\n _this2.text = \"\\u7ECF\\u5EA6\\uFF1A\".concat(Number(p.lng.toFixed(8)), \"\\n\\u7EAC\\u5EA6\\uFF1A\").concat(Number(p.lat.toFixed(8)), \"\\n\\u6D77\\u62D4\\uFF1A\").concat(Number(p.alt.toFixed(2)));\n } else {\n var result = _this2.convert([{\n x: p.lng,\n y: p.lat,\n z: p.alt\n }], 'EPSG:4326', coordinateSystem);\n _this2.text = \"x\\uFF1A\".concat(Number(result.points[0].x.toFixed(8)), \"\\ny\\uFF1A\").concat(Number(result.points[0].y.toFixed(8)), \"\\nz\\uFF1A\").concat(Number(result.points[0].z.toFixed(2)));\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this2.destroy();\n _this2.end();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.remove_entity(this.locationID);\n this.remove_entity(this.cache_id);\n _superPropGet(MeasureLocation, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureLocation, \"end\", this, 3)([]);\n }\n }], [{\n key: \"createLocation\",\n value: function createLocation(that) {\n that.viewer.entities.add(new Cesium.Entity({\n id: that.locationID,\n show: false,\n position: new Cesium.CallbackProperty(function () {\n return that.position;\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n //标注文字描述\n font: '22px Microsoft YaHei',\n fillColor: new Cesium.Color.fromCssColorString(that.defaultColor),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n // scale: this.options.label.scale,\n horizontalOrigin: Cesium.HorizontalOrigin.LEFT,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n pixelOffset: new Cesium.Cartesian2(-100, -50)\n // disableDepthTestDistance: this.disableDepthTestDistance,\n },\n billboard: {\n image: that.getSourceRootPath() + \"/img/location.png\",\n color: Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.99)\"),\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // scaleByDistance: new Cesium.NearFarScalar(\n // 2000,\n // 1,\n // 1000000,\n // 0\n // ),\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n width: 48,\n height: 48\n }\n }));\n }\n }, {\n key: \"create_point\",\n value: function create_point(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n position: new Cesium.CallbackProperty(function () {\n return that.position;\n }, false),\n billboard: _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({\n image: that.getSourceRootPath() + '/img/point.png',\n color: Cesium.Color.fromCssColorString(\"rgba(255,255,255,0.99)\"),\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n }, \"color\", Cesium.Color.WHITE.withAlpha(0.99))\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureLocation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlTG9jYXRpb24vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlTG9jYXRpb24vaW5kZXguanM/Nzk3MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMjIgMTY6MTNcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNy0yMiAxNjoxM1xyXG4gKi9cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcbmltcG9ydCB7IFByb2ogfSBmcm9tIFwiLi4vLi4vVG9vbHMvcHJvalwiO1xyXG5pbXBvcnQgeyBnZXRDb29yZGluYXRlU3lzdGVtIH0gZnJvbSBcIi4uLy4uL0dsb2JhbC9nbG9iYWxcIjtcclxuXHJcbmNsYXNzIE1lYXN1cmVMb2NhdGlvbiBleHRlbmRzIE1lYXN1cmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAZGVzY3JpcHRpb24g5Z2Q5qCH5rWL6YePXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGspIHtcclxuICAgIHN1cGVyKHNkaywgeyB0ZXh0OiBcIlwiIH0pO1xyXG4gICAgdGhpcy5kZWZhdWx0Q29sb3IgPSBcIiNmMTE1MTVcIlxyXG4gICAgdGhpcy5sb2NhdGlvbklEID0gdGhpcy5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICB0aGlzLnRleHQgPSBcIlwiXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlTG9jYXRpb24odGhhdCkge1xyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQ6IHRoYXQubG9jYXRpb25JRCxcclxuICAgICAgc2hvdzogZmFsc2UsXHJcbiAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uXHJcbiAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgbGFiZWw6IHtcclxuICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQudGV4dFxyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAvL+agh+azqOaWh+Wtl+aPj+i/sFxyXG4gICAgICAgIGZvbnQ6ICcyMnB4IE1pY3Jvc29mdCBZYUhlaScsXHJcblxyXG4gICAgICAgIGZpbGxDb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIC8v5qCH5rOo55qE6YGu5oyh6Led56a76K6+572u5Li6MTAw5YiZ6KeG6KeS5LiO5qCH5rOo55qE6Led56a75aSn5LqOMTAw57Gz5pe25Lya5pyJ6YGu5oyhXHJcbiAgICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuICAgICAgICAvLyBzY2FsZTogdGhpcy5vcHRpb25zLmxhYmVsLnNjYWxlLFxyXG4gICAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkxFRlQsXHJcbiAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgICAgICAtMTAwLFxyXG4gICAgICAgICAgLTUwXHJcbiAgICAgICAgKSxcclxuICAgICAgICAvLyBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLFxyXG4gICAgICB9LFxyXG4gICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICBpbWFnZTogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgXCIvaW1nL2xvY2F0aW9uLnBuZ1wiLFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGByZ2JhKDI1NSwyNTUsMjU1LDAuOTkpYCksXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgLy8gc2NhbGVCeURpc3RhbmNlOiBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoXHJcbiAgICAgICAgLy8gICAyMDAwLFxyXG4gICAgICAgIC8vICAgMSxcclxuICAgICAgICAvLyAgIDEwMDAwMDAsXHJcbiAgICAgICAgLy8gICAwXHJcbiAgICAgICAgLy8gKSxcclxuICAgICAgICBzY2FsZTogMSxcclxuICAgICAgICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVIsXHJcbiAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgd2lkdGg6IDQ4LFxyXG4gICAgICAgIGhlaWdodDogNDhcclxuICAgICAgfVxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlX3BvaW50KHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhgcmdiYSgyNTUsMjU1LDI1NSwwLjk5KWApLFxyXG4gICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICB0aGlzLmNhY2hlX2lkID0gTWVhc3VyZUxvY2F0aW9uLmNyZWF0ZV9wb2ludCh0aGlzKVxyXG4gICAgICBNZWFzdXJlTG9jYXRpb24uY3JlYXRlTG9jYXRpb24odGhpcylcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMucG9zaXRpb24gPSBjYXJ0ZXNpYW5cclxuICAgICAgICBsZXQgZW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLmxvY2F0aW9uSUQpXHJcbiAgICAgICAgaWYgKGVudGl0eSkge1xyXG4gICAgICAgICAgZW50aXR5LnNob3cgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgIGxldCBjb29yZGluYXRlU3lzdGVtID0gZ2V0Q29vcmRpbmF0ZVN5c3RlbSgpXHJcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQzMjYnIHx8IGNvb3JkaW5hdGVTeXN0ZW0gPT09ICdFUFNHOjQ0OTAnKSB7XHJcbiAgICAgICAgICB0aGlzLnRleHQgPSBg57uP5bqm77yaJHtOdW1iZXIocC5sbmcudG9GaXhlZCg4KSl9XFxu57qs5bqm77yaJHtOdW1iZXIocC5sYXQudG9GaXhlZCg4KSl9XFxu5rW35ouU77yaJHtOdW1iZXIocC5hbHQudG9GaXhlZCgyKSl9YFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmNvbnZlcnQoW3sgeDogcC5sbmcsIHk6IHAubGF0LCB6OiBwLmFsdCB9XSwgJ0VQU0c6NDMyNicsIGNvb3JkaW5hdGVTeXN0ZW0pXHJcbiAgICAgICAgICB0aGlzLnRleHQgPSBgeO+8miR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0ueC50b0ZpeGVkKDgpKX1cXG5577yaJHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS55LnRvRml4ZWQoOCkpfVxcbnrvvJoke051bWJlcihyZXN1bHQucG9pbnRzWzBdLnoudG9GaXhlZCgyKSl9YFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXJ0ZXNpYW4sIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5sb2NhdGlvbklEKVxyXG4gICAgICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgICAgIGVudGl0eS5zaG93ID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvc2l0aW9uID0gY2FydGVzaWFuXHJcbiAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgbGV0IGNvb3JkaW5hdGVTeXN0ZW0gPSBnZXRDb29yZGluYXRlU3lzdGVtKClcclxuICAgICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDMyNicgfHwgY29vcmRpbmF0ZVN5c3RlbSA9PT0gJ0VQU0c6NDQ5MCcpIHtcclxuICAgICAgICAgIHRoaXMudGV4dCA9IGDnu4/luqbvvJoke051bWJlcihwLmxuZy50b0ZpeGVkKDgpKX1cXG7nuqzluqbvvJoke051bWJlcihwLmxhdC50b0ZpeGVkKDgpKX1cXG7mtbfmi5TvvJoke051bWJlcihwLmFsdC50b0ZpeGVkKDIpKX1gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29udmVydChbeyB4OiBwLmxuZywgeTogcC5sYXQsIHo6IHAuYWx0IH1dLCAnRVBTRzo0MzI2JywgY29vcmRpbmF0ZVN5c3RlbSlcclxuICAgICAgICAgIHRoaXMudGV4dCA9IGB477yaJHtOdW1iZXIocmVzdWx0LnBvaW50c1swXS54LnRvRml4ZWQoOCkpfVxcbnnvvJoke051bWJlcihyZXN1bHQucG9pbnRzWzBdLnkudG9GaXhlZCg4KSl9XFxueu+8miR7TnVtYmVyKHJlc3VsdC5wb2ludHNbMF0uei50b0ZpeGVkKDIpKX1gXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5sb2NhdGlvbklEKVxyXG4gICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuY2FjaGVfaWQpXHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlTG9jYXRpb25cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBeEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBMEZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureLocation/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureProjectionDistance/index.js":
-/*!********************************************************!*\
- !*** ./src/Measure/MeasureProjectionDistance/index.js ***!
- \********************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:31\r\n * @description:index\r\n * @update: 2022-07-11 10:31\r\n */\n\n\nvar MeasureProjectionDistance = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 投影距离测量\r\n * */\n function MeasureProjectionDistance(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureProjectionDistance);\n _this = _callSuper(this, MeasureProjectionDistance, [sdk, options]);\n _this.options.color = _this.options.color || \"#00ffff\";\n _this.start_id = \"\";\n _this.end_id = \"\";\n _this.polyline_id = \"\";\n _this.clampPositions = [];\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureProjectionDistance, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureProjectionDistance, [{\n key: \"clampToGroundMeasure\",\n value: function () {\n var _clampToGroundMeasure = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(meters, cb) {\n var _this2 = this;\n var positions, res, coordinates, total, _iterator, _step, item, index, r;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n positions = [];\n this.ids.forEach(function (id, index) {\n var p = _this2.viewer.entities.getById(id).position.getValue();\n positions.push(_this2.cartesian3Towgs84(p, _this2.viewer));\n });\n res = this.chunkLine(positions, meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n total = coordinates.length;\n _iterator = _createForOfIteratorHelper(coordinates);\n _context.prev = 7;\n _iterator.s();\n case 9:\n if ((_step = _iterator.n()).done) {\n _context.next = 18;\n break;\n }\n item = _step.value;\n index = coordinates.indexOf(item);\n _context.next = 14;\n return this.getHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index, total);\n case 14:\n r = _context.sent;\n cb(null, r);\n case 16:\n _context.next = 9;\n break;\n case 18:\n _context.next = 23;\n break;\n case 20:\n _context.prev = 20;\n _context.t0 = _context[\"catch\"](7);\n _iterator.e(_context.t0);\n case 23:\n _context.prev = 23;\n _iterator.f();\n return _context.finish(23);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[7, 20, 23, 26]]);\n }));\n function clampToGroundMeasure(_x, _x2) {\n return _clampToGroundMeasure.apply(this, arguments);\n }\n return clampToGroundMeasure;\n }()\n }, {\n key: \"sampleHeight\",\n value: function () {\n var _sampleHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(p1, index) {\n var p2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context2.sent;\n p1.alt = p2[0].height;\n return _context2.abrupt(\"return\", {\n position: p1,\n index: index\n });\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function sampleHeight(_x3, _x4) {\n return _sampleHeight.apply(this, arguments);\n }\n return sampleHeight;\n }()\n }, {\n key: \"getHeight\",\n value: function () {\n var _getHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(p1, index, total) {\n var p2, total_length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context3.sent;\n p1.alt = p2[0].height;\n this.clampPositions.push({\n position: p1,\n index: index\n });\n if (!(total === this.clampPositions.length)) {\n _context3.next = 8;\n break;\n }\n total_length = this.startCompute();\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length,\n total_length: total_length\n });\n case 8:\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length\n });\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function getHeight(_x5, _x6, _x7) {\n return _getHeight.apply(this, arguments);\n }\n return getHeight;\n }()\n }, {\n key: \"startCompute\",\n value: function startCompute() {\n var _this3 = this;\n this.clampPositions.sort(function (a, b) {\n return a.index < b.index;\n });\n var total_length = 0;\n var l = this.clampPositions.length - 1;\n this.clampPositions.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this3.computeDistance2([item.position, _this3.clampPositions[index + 1].position]);\n var d2 = Math.abs(item.position.alt - _this3.clampPositions[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n return Number(total_length.toFixed(2));\n }\n }, {\n key: \"getLabel\",\n value: function getLabel(text) {\n return {\n text: text || '',\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n\n // disableDepthTestDistance: this.disableDepthTestDistance,\n };\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this4 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureProjectionDistance, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消投影距离测量!');\n var leftEvent = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee4(movement, car) {\n var cur_point, pre_p, cur_len, text, startPoint;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (_this4.ids.length === 0) {\n _this4.polyline_id = MeasureProjectionDistance.createPolyline(_this4);\n _this4.start_id = MeasureProjectionDistance.create_point(car, {\n image: \"start1.png\",\n width: 30,\n height: 38,\n label: _this4.getLabel(\"\")\n }, _this4);\n //创建起点\n }\n _this4.positions = _this4.cachePositions.concat(car);\n _this4.tip.setPosition(car, movement.position.x, movement.position.y);\n if (_this4.ids.length !== 0) {\n cur_point = _this4.cartesian3Towgs84(car, _this4.viewer);\n pre_p = _this4.cartesian3Towgs84(_this4.cachePositions[_this4.cachePositions.length - 1], _this4.viewer);\n cur_len = _this4.computeDistance2([cur_point, pre_p]);\n text = \"投影距离:\" + cur_len + \" 米\";\n _this4.ids.push(MeasureProjectionDistance.create_point(car, {\n label: _this4.getLabel(text)\n }, _this4));\n _this4.cachePositions.push(car);\n _this4.tip.set_text('左键单击确定控制点位置,右键单击完成投影距离测量!');\n } else {\n _this4.cachePositions.push(car);\n _this4.ids.push(MeasureProjectionDistance.create_point(car, {\n show: false\n }, _this4));\n startPoint = _this4.viewer.entities.getById(_this4.ids[0]);\n if (startPoint) {\n startPoint.billboard.show = false;\n }\n }\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function leftEvent(_x8, _x9) {\n return _ref.apply(this, arguments);\n };\n }();\n var rightEvent = function rightEvent(movement, car) {\n if (_this4.cachePositions.length) {\n _this4.positions = _this4.cachePositions;\n _this4.end_id = MeasureProjectionDistance.create_point(_this4.cachePositions[_this4.cachePositions.length - 1], {\n image: \"end1.png\",\n width: 30,\n height: 38\n }, _this4);\n var endPoint = _this4.viewer.entities.getById(_this4.ids[_this4.ids.length - 1]);\n if (endPoint) {\n endPoint.billboard.show = false;\n }\n }\n if (_this4.cachePositions.length < 2) {\n _this4.destroy();\n YJ.Measure.Measures.pop(); //弹出测量实体\n }\n _this4.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this4.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n _this4.positions = _this4.cachePositions.concat(car);\n // if (this.cachePositions.length) {\n // let cur_point = this.cartesian3Towgs84(car, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // let cur_len = this.computeDistance2([cur_point, pre_p])\n // let text = \"当前投影距离:\" + cur_len + \" 米\"\n // this.tip.set_text(text)\n // }\n });\n this.event.mouse_right(rightEvent);\n this.event.mouse_right_keyboard_ctrl(function (movement, car) {\n if (_this4.cachePositions.length) {\n _this4.cachePositions.pop();\n _this4.remove_entity(_this4.ids.pop());\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this4.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n [this.polyline_id, this.end_id, this.start_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this5.remove_entity(id);\n });\n _superPropGet(MeasureProjectionDistance, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n // YJ.Measure.SetMeasureStatus(false)\n // this.tip.destroy()\n // this.event.destroy()\n _superPropGet(MeasureProjectionDistance, \"end\", this, 3)([]);\n // this.setPickStatus(this.pickStatus.pick)\n }\n }], [{\n key: \"createPolyline\",\n value: function createPolyline(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 3,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n dashLength: 20 //短划线长度\n })\n },\n zIndex: 99999999\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian, _ref2, that) {\n var label = _ref2.label,\n _ref2$image = _ref2.image,\n image = _ref2$image === void 0 ? \"point.png\" : _ref2$image,\n width = _ref2.width,\n height = _ref2.height;\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n if (label) {\n label.pixelOffset = new Cesium.Cartesian2(0, -(height || 32));\n }\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: label,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/' + image,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: width,\n height: height\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureProjectionDistance);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZVByb2plY3Rpb25EaXN0YW5jZS9pbmRleC5qcz84M2EwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMi0wNy0xMSAxMDozMVxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTExIDEwOjMxXHJcbiAqL1xyXG5cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCJcclxuXHJcbmNsYXNzIE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2UgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDmipXlvbHot53nprvmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLm9wdGlvbnMuY29sb3IgPSB0aGlzLm9wdGlvbnMuY29sb3IgfHwgXCIjMDBmZmZmXCJcclxuICAgIHRoaXMuc3RhcnRfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmVuZF9pZCA9IFwiXCJcclxuICAgIHRoaXMucG9seWxpbmVfaWQgPSBcIlwiXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zID0gW11cclxuICB9XHJcblxyXG4gIGFzeW5jIGNsYW1wVG9Hcm91bmRNZWFzdXJlKG1ldGVycywgY2IpIHtcclxuICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgdGhpcy5pZHMuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBwID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZChpZCkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHAsIHRoaXMudmlld2VyKSlcclxuICAgIH0pXHJcbiAgICBsZXQgcmVzID0gdGhpcy5jaHVua0xpbmUocG9zaXRpb25zLCBtZXRlcnMpXHJcbiAgICBsZXQgY29vcmRpbmF0ZXMgPSBbXVxyXG4gICAgcmVzLmZvckVhY2goKEZlYXR1cmUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgIGNvb3JkaW5hdGVzID0gWy4uLkZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXMucHVzaChGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsID0gY29vcmRpbmF0ZXMubGVuZ3RoXHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGNvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY29vcmRpbmF0ZXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgbGV0IHIgPSBhd2FpdCB0aGlzLmdldEhlaWdodCh7bG5nOiBpdGVtWzBdLCBsYXQ6IGl0ZW1bMV0sIGFsdDogMH0sIGluZGV4LCB0b3RhbCwpXHJcbiAgICAgIGNiKG51bGwsIHIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYW1wbGVIZWlnaHQocDEsIGluZGV4KSB7XHJcbiAgICBsZXQgcDIgPSBhd2FpdCB0aGlzLnNhbXBsZUhlaWdodE1vc3REZXRhaWxlZChbcDFdKVxyXG4gICAgcDEuYWx0ID0gcDJbMF0uaGVpZ2h0XHJcbiAgICByZXR1cm4ge3Bvc2l0aW9uOiBwMSwgaW5kZXh9XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgZ2V0SGVpZ2h0KHAxLCBpbmRleCwgdG90YWwpIHtcclxuICAgIGxldCBwMiA9IGF3YWl0IHRoaXMuc2FtcGxlSGVpZ2h0TW9zdERldGFpbGVkKFtwMV0pXHJcbiAgICBwMS5hbHQgPSBwMlswXS5oZWlnaHRcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMucHVzaCh7cG9zaXRpb246IHAxLCBpbmRleH0pXHJcbiAgICBpZiAodG90YWwgPT09IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGxldCB0b3RhbF9sZW5ndGggPSB0aGlzLnN0YXJ0Q29tcHV0ZSgpXHJcbiAgICAgIHJldHVybiB7dG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLCB0b3RhbF9sZW5ndGh9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3RvdGFsLCBjdXJyZW50OiB0aGlzLmNsYW1wUG9zaXRpb25zLmxlbmd0aCx9XHJcbiAgfVxyXG5cclxuICBzdGFydENvbXB1dGUoKSB7XHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgcmV0dXJuIGEuaW5kZXggPCBiLmluZGV4XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsX2xlbmd0aCA9IDBcclxuICAgIGxldCBsID0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGggLSAxXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gbCkge1xyXG4gICAgICAgIGxldCBkMSA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbaXRlbS5wb3NpdGlvbiwgdGhpcy5jbGFtcFBvc2l0aW9uc1tpbmRleCArIDFdLnBvc2l0aW9uXSlcclxuICAgICAgICBsZXQgZDIgPSBNYXRoLmFicyhpdGVtLnBvc2l0aW9uLmFsdCAtIHRoaXMuY2xhbXBQb3NpdGlvbnNbaW5kZXggKyAxXS5wb3NpdGlvbi5hbHQpXHJcbiAgICAgICAgbGV0IGQzID0gTWF0aC5zcXJ0KGQxICogZDEgKyBkMiAqIGQyKVxyXG4gICAgICAgIHRvdGFsX2xlbmd0aCArPSBkM1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIE51bWJlcih0b3RhbF9sZW5ndGgudG9GaXhlZCgyKSlcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgY3JlYXRlUG9seWxpbmUodGhhdCkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBjb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yIHx8IHRoYXQuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgIGRhc2hMZW5ndGg6IDIwLCAvL+efreWIkue6v+mVv+W6plxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9LFxyXG4gICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICB9KSlcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2ludChjYXJ0ZXNpYW4sIHtcclxuICAgIGxhYmVsLCBpbWFnZSA9IFwicG9pbnQucG5nXCIsXHJcbiAgICB3aWR0aCxcclxuICAgIGhlaWdodFxyXG4gIH0sIHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBwID0gdGhhdC5jYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4sIHRoYXQudmlld2VyKVxyXG4gICAgaWYgKGxhYmVsKSB7XHJcbiAgICAgIGxhYmVsLnBpeGVsT2Zmc2V0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKFxyXG4gICAgICAgIDAsIC0oaGVpZ2h0IHx8IDMyKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgcC5hbHQpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgaW1hZ2U6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nLycgKyBpbWFnZSxcclxuICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcbiAgICAgICAgICB3aWR0aCxcclxuICAgICAgICAgIGhlaWdodFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHJldHVybiBpZFxyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWwodGV4dCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGV4dDogdGV4dCB8fCAnJyxcclxuICAgICAgLy/moIfms6jmloflrZfmj4/ov7BcclxuICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZjFlNjA1JyksXHJcbiAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAvLyBkaXN0YW5jZURpc3BsYXlDb25kaXRpb246IHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLFxyXG4gICAgICBzY2FsZTogMSxcclxuICAgICAgaG9yaXpvbnRhbE9yaWdpbjogQ2VzaXVtLkhvcml6b250YWxPcmlnaW4uQ0VOVEVSLFxyXG4gICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAvLyBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5byA5aeL5rWL6YePXHJcbiAgICovXHJcbiAgc3RhcnQoKSB7XHJcbiAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLmNhY2hlUG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOaKleW9sei3neemu+a1i+mHjyEnKVxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IGFzeW5jIChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wb2x5bGluZV9pZCA9IChNZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlLmNyZWF0ZVBvbHlsaW5lKHRoaXMpKVxyXG4gICAgICAgICAgdGhpcy5zdGFydF9pZCA9IE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge1xyXG4gICAgICAgICAgICBpbWFnZTogXCJzdGFydDEucG5nXCIsIHdpZHRoOiAzMCwgaGVpZ2h0OiAzOCwgbGFiZWw6IHRoaXMuZ2V0TGFiZWwoXCJcIilcclxuICAgICAgICAgIH0sIHRoaXMpXHJcbiAgICAgICAgICAvL+WIm+W7uui1t+eCuVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdChjYXIpXHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FyLCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHByZV9wID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IGN1cl9sZW4gPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW2N1cl9wb2ludCwgcHJlX3BdKVxyXG4gICAgICAgICAgbGV0IHRleHQgPSBcIuaKleW9sei3neemu++8mlwiICsgY3VyX2xlbiArIFwiIOexs1wiXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge2xhYmVsOiB0aGlzLmdldExhYmVsKHRleHQpfSwgdGhpcykpXHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOaKleW9sei3neemu+a1i+mHjyEnKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnB1c2goY2FyKVxyXG4gICAgICAgICAgdGhpcy5pZHMucHVzaChNZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlLmNyZWF0ZV9wb2ludChjYXIsIHtzaG93OiBmYWxzZX0sIHRoaXMpKVxyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzWzBdKVxyXG4gICAgICAgICAgaWYoc3RhcnRQb2ludCkge1xyXG4gICAgICAgICAgICBzdGFydFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGxldCByaWdodEV2ZW50ID0gKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9uc1xyXG4gICAgICAgICAgdGhpcy5lbmRfaWQgPSBNZWFzdXJlUHJvamVjdGlvbkRpc3RhbmNlLmNyZWF0ZV9wb2ludCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHtcclxuICAgICAgICAgICAgaW1hZ2U6IFwiZW5kMS5wbmdcIixcclxuICAgICAgICAgICAgd2lkdGg6IDMwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDM4LFxyXG4gICAgICAgICAgfSwgdGhpcylcclxuICAgICAgICAgIGxldCBlbmRQb2ludCA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQodGhpcy5pZHNbdGhpcy5pZHMubGVuZ3RoLTFdKVxyXG4gICAgICAgICAgaWYoZW5kUG9pbnQpIHtcclxuICAgICAgICAgICAgZW5kUG9pbnQuYmlsbGJvYXJkLnNob3cgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICB0aGlzLmRlc3Ryb3koKVxyXG4gICAgICAgICAgWUouTWVhc3VyZS5NZWFzdXJlcy5wb3AoKS8v5by55Ye65rWL6YeP5a6e5L2TXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KGxlZnRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9tb3ZlKChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aXAuc2V0UG9zaXRpb24oY2FyLCBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi55KVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoY2FyKVxyXG4gICAgICAgIC8vIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIC8vICAgbGV0IGN1cl9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBwcmVfcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQodGhpcy5jYWNoZVBvc2l0aW9uc1t0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCAtIDFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAvLyAgIGxldCBjdXJfbGVuID0gdGhpcy5jb21wdXRlRGlzdGFuY2UyKFtjdXJfcG9pbnQsIHByZV9wXSlcclxuICAgICAgICAvLyAgIGxldCB0ZXh0ID0gXCLlvZPliY3mipXlvbHot53nprvvvJpcIiArIGN1cl9sZW4gKyBcIiDnsbNcIlxyXG4gICAgICAgIC8vICAgdGhpcy50aXAuc2V0X3RleHQodGV4dClcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQocmlnaHRFdmVudClcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9yaWdodF9rZXlib2FyZF9jdHJsKChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmNhY2hlUG9zaXRpb25zLnBvcCgpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZV9lbnRpdHkodGhpcy5pZHMucG9wKCkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHJpZ2h0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGVmdEV2ZW50KHBvcywgY2FydGVzaWFuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTmtYvph49cclxuICAgKi9cclxuICBkZXN0cm95KCkge1xyXG4gICAgW3RoaXMucG9seWxpbmVfaWQsIHRoaXMuZW5kX2lkLCB0aGlzLnN0YXJ0X2lkLCAuLi50aGlzLmlkc10uZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDnu5PmnZ/mtYvph49cclxuICAgKi9cclxuICBlbmQoKSB7XHJcbiAgICAvLyBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICAvLyB0aGlzLnRpcC5kZXN0cm95KClcclxuICAgIC8vIHRoaXMuZXZlbnQuZGVzdHJveSgpXHJcbiAgICBzdXBlci5lbmQoKVxyXG4gICAgLy8gdGhpcy5zZXRQaWNrU3RhdHVzKHRoaXMucGlja1N0YXR1cy5waWNrKVxyXG5cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVQcm9qZWN0aW9uRGlzdGFuY2VcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF0QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUE3QkE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQTVMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUhBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBaUpBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureProjectionDistance/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureSlopeDistance/index.js":
-/*!***************************************************!*\
- !*** ./src/Measure/MeasureSlopeDistance/index.js ***!
- \***************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../Event */ \"./src/Event/index.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:31\r\n * @description:index\r\n * @update: 2022-07-11 10:31\r\n */\n\n\n\nvar MeasureSlopeDistance = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 坡度测量\r\n * */\n function MeasureSlopeDistance(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureSlopeDistance);\n _this = _callSuper(this, MeasureSlopeDistance, [sdk, options]);\n _this.options.color = _this.options.color || \"#00ffff\";\n _this.start_id = \"\";\n _this.end_id = \"\";\n _this.polyline_id = \"\";\n _this.clampPositions = [];\n _this.event = new _Event__WEBPACK_IMPORTED_MODULE_10__[\"default\"](sdk);\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureSlopeDistance, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureSlopeDistance, [{\n key: \"clampToGroundMeasure\",\n value: function () {\n var _clampToGroundMeasure = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(meters, cb) {\n var _this2 = this;\n var positions, res, coordinates, total, _iterator, _step, item, index, r;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n positions = [];\n this.ids.forEach(function (id, index) {\n var p = _this2.viewer.entities.getById(id).position.getValue();\n positions.push(_this2.cartesian3Towgs84(p, _this2.viewer));\n });\n res = this.chunkLine(positions, meters);\n coordinates = [];\n res.forEach(function (Feature, index) {\n if (index === 0) {\n coordinates = _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Feature.geometry.coordinates);\n } else {\n coordinates.push(Feature.geometry.coordinates[1]);\n }\n });\n total = coordinates.length;\n _iterator = _createForOfIteratorHelper(coordinates);\n _context.prev = 7;\n _iterator.s();\n case 9:\n if ((_step = _iterator.n()).done) {\n _context.next = 18;\n break;\n }\n item = _step.value;\n index = coordinates.indexOf(item);\n _context.next = 14;\n return this.getHeight({\n lng: item[0],\n lat: item[1],\n alt: 0\n }, index, total);\n case 14:\n r = _context.sent;\n cb(null, r);\n case 16:\n _context.next = 9;\n break;\n case 18:\n _context.next = 23;\n break;\n case 20:\n _context.prev = 20;\n _context.t0 = _context[\"catch\"](7);\n _iterator.e(_context.t0);\n case 23:\n _context.prev = 23;\n _iterator.f();\n return _context.finish(23);\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[7, 20, 23, 26]]);\n }));\n function clampToGroundMeasure(_x, _x2) {\n return _clampToGroundMeasure.apply(this, arguments);\n }\n return clampToGroundMeasure;\n }()\n }, {\n key: \"sampleHeight\",\n value: function () {\n var _sampleHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(p1, index) {\n var p2;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context2.sent;\n p1.alt = p2[0].height;\n return _context2.abrupt(\"return\", {\n position: p1,\n index: index\n });\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function sampleHeight(_x3, _x4) {\n return _sampleHeight.apply(this, arguments);\n }\n return sampleHeight;\n }()\n }, {\n key: \"getHeight\",\n value: function () {\n var _getHeight = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee3(p1, index, total) {\n var p2, total_length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.sampleHeightMostDetailed([p1]);\n case 2:\n p2 = _context3.sent;\n p1.alt = p2[0].height;\n this.clampPositions.push({\n position: p1,\n index: index\n });\n if (!(total === this.clampPositions.length)) {\n _context3.next = 8;\n break;\n }\n total_length = this.startCompute();\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length,\n total_length: total_length\n });\n case 8:\n return _context3.abrupt(\"return\", {\n total: total,\n current: this.clampPositions.length\n });\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n function getHeight(_x5, _x6, _x7) {\n return _getHeight.apply(this, arguments);\n }\n return getHeight;\n }()\n }, {\n key: \"startCompute\",\n value: function startCompute() {\n var _this3 = this;\n this.clampPositions.sort(function (a, b) {\n return a.index < b.index;\n });\n var total_length = 0;\n var l = this.clampPositions.length - 1;\n this.clampPositions.forEach(function (item, index) {\n if (index !== l) {\n var d1 = _this3.computeDistance2([item.position, _this3.clampPositions[index + 1].position]);\n var d2 = Math.abs(item.position.alt - _this3.clampPositions[index + 1].position.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n total_length += d3;\n }\n });\n return Number(total_length.toFixed(2));\n }\n }, {\n key: \"getLabel\",\n value: function getLabel(text) {\n return {\n text: text || '',\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#f1e605'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n\n // disableDepthTestDistance: this.disableDepthTestDistance,\n };\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this4 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureSlopeDistance, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消坡度测量!');\n var leftEvent = function leftEvent(movement, car) {\n if (_this4.ids.length === 0) {\n _this4.polyline_id = MeasureSlopeDistance.createPolyline(_this4);\n _this4.start_id = MeasureSlopeDistance.create_point(car, {\n image: \"start1.png\",\n width: 30,\n height: 38,\n label: _this4.getLabel(\"\")\n }, _this4);\n //创建起点\n }\n _this4.tip.setPosition(car, movement.position.x, movement.position.y);\n _this4.positions = _this4.cachePositions.concat(car);\n if (_this4.ids.length !== 0) {\n var cur_point = _this4.cartesian3Towgs84(car, _this4.viewer);\n var pre_p = _this4.cartesian3Towgs84(_this4.cachePositions[_this4.cachePositions.length - 1], _this4.viewer);\n if (cur_point.lng !== pre_p.lng || cur_point.lat !== pre_p.lat || cur_point.alt !== pre_p.alt) {\n _this4.cachePositions.push(car);\n //计算坡度\n _this4.computeAngle(pre_p, cur_point);\n }\n _this4.tip.set_text('左键单击确定控制点位置,右键单击完成坡度测量!');\n } else {\n _this4.cachePositions.push(car);\n _this4.ids.push(MeasureSlopeDistance.create_point(car, {}, _this4));\n var startPoint = _this4.viewer.entities.getById(_this4.ids[0]);\n if (startPoint) {\n startPoint.billboard.show = false;\n }\n }\n };\n var rightEvent = function rightEvent(movement, car) {\n if (_this4.ids.length !== 0) {\n // let cur_point = this.cartesian3Towgs84(car, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // if (cur_point.lng !== pre_p.lng || cur_point.lat !== pre_p.lat || cur_point.alt !== pre_p.alt) {\n // this.cachePositions.push(car)\n // //计算坡度\n // this.computeAngle(pre_p, cur_point)\n // }\n } else {\n // this.cachePositions.push(car)\n _this4.ids.push(MeasureSlopeDistance.create_point(car, {}, _this4));\n }\n if (_this4.cachePositions.length) {\n _this4.positions = _this4.cachePositions;\n _this4.end_id = MeasureSlopeDistance.create_point(_this4.cachePositions[_this4.cachePositions.length - 1], {\n image: \"end1.png\",\n width: 30,\n height: 38\n }, _this4);\n var endPoint = _this4.viewer.entities.getById(_this4.ids[_this4.ids.length - 1]);\n if (endPoint) {\n endPoint.billboard.show = false;\n }\n }\n if (_this4.cachePositions.length < 2) {\n _this4.destroy();\n YJ.Measure.Measures.pop(); //弹出测量实体\n }\n _this4.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n movement.endPosition.y += 2;\n var position = movement.endPosition;\n var cartesian = _this4.viewer.scene.pickPosition(position);\n if (!cartesian) {\n var ray = _this4.viewer.camera.getPickRay(position); //相交的射线\n cartesian = _this4.viewer.scene.globe.pick(ray, _this4.viewer.scene);\n }\n _this4.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n _this4.positions = _this4.cachePositions.concat(cartesian);\n // if (this.cachePositions.length) {\n // let cur_point = this.cartesian3Towgs84(cartesian, this.viewer)\n // let pre_p = this.cartesian3Towgs84(this.cachePositions[this.cachePositions.length - 1], this.viewer)\n // let d1 = this.computeDistance2([pre_p, cur_point])\n // let d2 = Math.abs(pre_p.alt - cur_point.alt)\n // let d3 = Math.sqrt(d1 * d1 + d2 * d2)\n // let cosAlpha = d1 / d3\n // let acos = Math.acos(cosAlpha)\n // let angle = this.radiansToDegrees(acos)\n // let label = \"坡度:\" + angle.toFixed(2) + \"°\"\n // this.tip.set_text(label)\n // }\n });\n this.event.mouse_right(rightEvent);\n this.event.mouse_right_keyboard_ctrl(function (movement, car) {\n if (_this4.cachePositions.length) {\n _this4.cachePositions.pop();\n _this4.remove_entity(_this4.ids.pop());\n }\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this4.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n }, {\n key: \"computeAngle\",\n value: function computeAngle(start, end) {\n var d1 = this.computeDistance2([start, end]);\n var d2 = Math.abs(start.alt - end.alt);\n var d3 = Math.sqrt(d1 * d1 + d2 * d2);\n var cosAlpha = d1 / d3;\n var acos = Math.acos(cosAlpha);\n var angle = this.radiansToDegrees(acos);\n var label = this.getLabel(\"坡度:\" + angle.toFixed(2) + \"°\");\n label.pixelOffset = new Cesium.Cartesian2(0, -32);\n this.ids.push(MeasureSlopeDistance.create_point(Cesium.Cartesian3.fromDegrees(end.lng, end.lat, end.alt), {\n label: label\n }, this));\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n [this.polyline_id, this.end_id, this.start_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this5.remove_entity(id);\n });\n _superPropGet(MeasureSlopeDistance, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n // YJ.Measure.SetMeasureStatus(false)\n // this.tip.destroy()\n // this.event.destroy()\n _superPropGet(MeasureSlopeDistance, \"end\", this, 3)([]);\n // this.setPickStatus(this.pickStatus.pick)\n }\n }], [{\n key: \"createPolyline\",\n value: function createPolyline(that) {\n var id = that.randomString();\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n clampToGround: true,\n width: 3,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian, _ref, that) {\n var label = _ref.label,\n _ref$image = _ref.image,\n image = _ref$image === void 0 ? \"point.png\" : _ref$image,\n width = _ref.width,\n height = _ref.height;\n var id = that.randomString();\n var p = that.cartesian3Towgs84(cartesian, that.viewer);\n if (label) {\n label.pixelOffset = new Cesium.Cartesian2(0, -(height || 32));\n }\n that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: label,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n image: that.getSourceRootPath() + '/img/' + image,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n width: width,\n height: height\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureSlopeDistance);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlU2xvcGVEaXN0YW5jZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL01lYXN1cmVTbG9wZURpc3RhbmNlL2luZGV4LmpzPzUzN2UiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBpbmRleFxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA3LTExIDEwOjMxXHJcbiAqIEBkZXNjcmlwdGlvbu+8mmluZGV4XHJcbiAqIEB1cGRhdGU6IDIwMjItMDctMTEgMTA6MzFcclxuICovXHJcblxyXG5pbXBvcnQgTWVhc3VyZSBmcm9tIFwiLi4vaW5kZXhcIlxyXG5pbXBvcnQgTW91c2VFdmVudCBmcm9tIFwiLi4vLi4vRXZlbnRcIjtcclxuXHJcbmNsYXNzIE1lYXN1cmVTbG9wZURpc3RhbmNlIGV4dGVuZHMgTWVhc3VyZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIHNkayBcclxuICAgKiBAZGVzY3JpcHRpb24g5Z2h5bqm5rWL6YePXHJcbiAgICogKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrLCBvcHRpb25zKVxyXG4gICAgdGhpcy5vcHRpb25zLmNvbG9yID0gdGhpcy5vcHRpb25zLmNvbG9yIHx8IFwiIzAwZmZmZlwiXHJcbiAgICB0aGlzLnN0YXJ0X2lkID0gXCJcIlxyXG4gICAgdGhpcy5lbmRfaWQgPSBcIlwiXHJcbiAgICB0aGlzLnBvbHlsaW5lX2lkID0gXCJcIlxyXG4gICAgdGhpcy5jbGFtcFBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoc2RrKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2xhbXBUb0dyb3VuZE1lYXN1cmUobWV0ZXJzLCBjYikge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICB0aGlzLmlkcy5mb3JFYWNoKChpZCwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHAgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKGlkKS5wb3NpdGlvbi5nZXRWYWx1ZSgpXHJcbiAgICAgIHBvc2l0aW9ucy5wdXNoKHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocCwgdGhpcy52aWV3ZXIpKVxyXG4gICAgfSlcclxuICAgIGxldCByZXMgPSB0aGlzLmNodW5rTGluZShwb3NpdGlvbnMsIG1ldGVycylcclxuICAgIGxldCBjb29yZGluYXRlcyA9IFtdXHJcbiAgICByZXMuZm9yRWFjaCgoRmVhdHVyZSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXMgPSBbLi4uRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc11cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb29yZGluYXRlcy5wdXNoKEZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBsZXQgdG90YWwgPSBjb29yZGluYXRlcy5sZW5ndGhcclxuXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29vcmRpbmF0ZXMpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSBjb29yZGluYXRlcy5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICBsZXQgciA9IGF3YWl0IHRoaXMuZ2V0SGVpZ2h0KHsgbG5nOiBpdGVtWzBdLCBsYXQ6IGl0ZW1bMV0sIGFsdDogMCB9LCBpbmRleCwgdG90YWwsKVxyXG4gICAgICBjYihudWxsLCByKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2FtcGxlSGVpZ2h0KHAxLCBpbmRleCkge1xyXG4gICAgbGV0IHAyID0gYXdhaXQgdGhpcy5zYW1wbGVIZWlnaHRNb3N0RGV0YWlsZWQoW3AxXSlcclxuICAgIHAxLmFsdCA9IHAyWzBdLmhlaWdodFxyXG4gICAgcmV0dXJuIHsgcG9zaXRpb246IHAxLCBpbmRleCB9XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgZ2V0SGVpZ2h0KHAxLCBpbmRleCwgdG90YWwpIHtcclxuICAgIGxldCBwMiA9IGF3YWl0IHRoaXMuc2FtcGxlSGVpZ2h0TW9zdERldGFpbGVkKFtwMV0pXHJcbiAgICBwMS5hbHQgPSBwMlswXS5oZWlnaHRcclxuICAgIHRoaXMuY2xhbXBQb3NpdGlvbnMucHVzaCh7IHBvc2l0aW9uOiBwMSwgaW5kZXggfSlcclxuICAgIGlmICh0b3RhbCA9PT0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgbGV0IHRvdGFsX2xlbmd0aCA9IHRoaXMuc3RhcnRDb21wdXRlKClcclxuICAgICAgcmV0dXJuIHsgdG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLCB0b3RhbF9sZW5ndGggfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdG90YWwsIGN1cnJlbnQ6IHRoaXMuY2xhbXBQb3NpdGlvbnMubGVuZ3RoLCB9XHJcbiAgfVxyXG5cclxuICBzdGFydENvbXB1dGUoKSB7XHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgcmV0dXJuIGEuaW5kZXggPCBiLmluZGV4XHJcbiAgICB9KVxyXG4gICAgbGV0IHRvdGFsX2xlbmd0aCA9IDBcclxuICAgIGxldCBsID0gdGhpcy5jbGFtcFBvc2l0aW9ucy5sZW5ndGggLSAxXHJcbiAgICB0aGlzLmNsYW1wUG9zaXRpb25zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gbCkge1xyXG4gICAgICAgIGxldCBkMSA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbaXRlbS5wb3NpdGlvbiwgdGhpcy5jbGFtcFBvc2l0aW9uc1tpbmRleCArIDFdLnBvc2l0aW9uXSlcclxuICAgICAgICBsZXQgZDIgPSBNYXRoLmFicyhpdGVtLnBvc2l0aW9uLmFsdCAtIHRoaXMuY2xhbXBQb3NpdGlvbnNbaW5kZXggKyAxXS5wb3NpdGlvbi5hbHQpXHJcbiAgICAgICAgbGV0IGQzID0gTWF0aC5zcXJ0KGQxICogZDEgKyBkMiAqIGQyKVxyXG4gICAgICAgIHRvdGFsX2xlbmd0aCArPSBkM1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIE51bWJlcih0b3RhbF9sZW5ndGgudG9GaXhlZCgyKSlcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgY3JlYXRlUG9seWxpbmUodGhhdCkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBjb2xvcjogbmV3IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcodGhhdC5vcHRpb25zLmNvbG9yIHx8IHRoYXQuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgIGRhc2hMZW5ndGg6IDIwLCAvL+efreWIkue6v+mVv+W6plxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgfVxyXG4gICAgfSkpXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVfcG9pbnQoY2FydGVzaWFuLCB7XHJcbiAgICBsYWJlbCwgaW1hZ2UgPSBcInBvaW50LnBuZ1wiLFxyXG4gICAgd2lkdGgsXHJcbiAgICBoZWlnaHRcclxuICB9LCB0aGF0KSB7XHJcbiAgICBsZXQgaWQgPSB0aGF0LnJhbmRvbVN0cmluZygpXHJcbiAgICBsZXQgcCA9IHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoY2FydGVzaWFuLCB0aGF0LnZpZXdlcilcclxuICAgIGlmIChsYWJlbCkge1xyXG4gICAgICBsYWJlbC5waXhlbE9mZnNldCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMihcclxuICAgICAgICAwLCAtKGhlaWdodCB8fCAzMilcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxhYmVsLFxyXG4gICAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIHAuYWx0KSxcclxuICAgICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICAgIGltYWdlOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy8nICsgaW1hZ2UsXHJcbiAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG4gICAgICAgICAgd2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHRcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIGdldExhYmVsKHRleHQpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRleHQ6IHRleHQgfHwgJycsXHJcbiAgICAgIC8v5qCH5rOo5paH5a2X5o+P6L+wXHJcbiAgICAgIGZvbnQ6ICcyMHB4IE1pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2YxZTYwNScpLFxyXG4gICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgLy/moIfms6jnmoTpga7mjKHot53nprvorr7nva7kuLoxMDDliJnop4bop5LkuI7moIfms6jnmoTot53nprvlpKfkuo4xMDDnsbPml7bkvJrmnInpga7mjKFcclxuICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuICAgICAgc2NhbGU6IDEsXHJcbiAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkNFTlRFUixcclxuICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxyXG5cclxuICAgICAgLy8gZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiB0aGlzLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW8gOWni+a1i+mHj1xyXG4gICAqL1xyXG4gIHN0YXJ0KCkge1xyXG4gICAgaWYgKCFZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojlnaHluqbmtYvph4/vvIEnKVxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wb2x5bGluZV9pZCA9IChNZWFzdXJlU2xvcGVEaXN0YW5jZS5jcmVhdGVQb2x5bGluZSh0aGlzKSlcclxuICAgICAgICAgIHRoaXMuc3RhcnRfaWQgPSBNZWFzdXJlU2xvcGVEaXN0YW5jZS5jcmVhdGVfcG9pbnQoY2FyLCB7XHJcbiAgICAgICAgICAgIGltYWdlOiBcInN0YXJ0MS5wbmdcIiwgd2lkdGg6IDMwLCBoZWlnaHQ6IDM4LCBsYWJlbDogdGhpcy5nZXRMYWJlbChcIlwiKVxyXG4gICAgICAgICAgfSwgdGhpcylcclxuICAgICAgICAgIC8v5Yib5bu66LW354K5XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQucG9zaXRpb24ueCwgbW92ZW1lbnQucG9zaXRpb24ueSlcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHByZV9wID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgaWYgKGN1cl9wb2ludC5sbmcgIT09IHByZV9wLmxuZyB8fCBjdXJfcG9pbnQubGF0ICE9PSBwcmVfcC5sYXQgfHwgY3VyX3BvaW50LmFsdCAhPT0gcHJlX3AuYWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVQb3NpdGlvbnMucHVzaChjYXIpXHJcbiAgICAgICAgICAgIC8v6K6h566X5Z2h5bqmXHJcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZUFuZ2xlKHByZV9wLCBjdXJfcG9pbnQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75a6M5oiQ5Z2h5bqm5rWL6YeP77yBJylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKGNhcilcclxuICAgICAgICAgIHRoaXMuaWRzLnB1c2goTWVhc3VyZVNsb3BlRGlzdGFuY2UuY3JlYXRlX3BvaW50KGNhciwge30sIHRoaXMpKVxyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5nZXRCeUlkKHRoaXMuaWRzWzBdKVxyXG4gICAgICAgICAgaWYoc3RhcnRQb2ludCkge1xyXG4gICAgICAgICAgICBzdGFydFBvaW50LmJpbGxib2FyZC5zaG93ID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGxldCByaWdodEV2ZW50ID0gKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5pZHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICAvLyBsZXQgY3VyX3BvaW50ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgLy8gbGV0IHByZV9wID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNhY2hlUG9zaXRpb25zW3RoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoIC0gMV0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgLy8gaWYgKGN1cl9wb2ludC5sbmcgIT09IHByZV9wLmxuZyB8fCBjdXJfcG9pbnQubGF0ICE9PSBwcmVfcC5sYXQgfHwgY3VyX3BvaW50LmFsdCAhPT0gcHJlX3AuYWx0KSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuY2FjaGVQb3NpdGlvbnMucHVzaChjYXIpXHJcbiAgICAgICAgICAvLyAgIC8v6K6h566X5Z2h5bqmXHJcbiAgICAgICAgICAvLyAgIHRoaXMuY29tcHV0ZUFuZ2xlKHByZV9wLCBjdXJfcG9pbnQpXHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHRoaXMuY2FjaGVQb3NpdGlvbnMucHVzaChjYXIpXHJcbiAgICAgICAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVTbG9wZURpc3RhbmNlLmNyZWF0ZV9wb2ludChjYXIsIHt9LCB0aGlzKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVQb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnNcclxuICAgICAgICAgIHRoaXMuZW5kX2lkID0gTWVhc3VyZVNsb3BlRGlzdGFuY2UuY3JlYXRlX3BvaW50KHRoaXMuY2FjaGVQb3NpdGlvbnNbdGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggLSAxXSwge1xyXG4gICAgICAgICAgICBpbWFnZTogXCJlbmQxLnBuZ1wiLFxyXG4gICAgICAgICAgICB3aWR0aDogMzAsXHJcbiAgICAgICAgICAgIGhlaWdodDogMzgsXHJcbiAgICAgICAgICB9LCB0aGlzKVxyXG4gICAgICAgICAgbGV0IGVuZFBvaW50ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuZ2V0QnlJZCh0aGlzLmlkc1t0aGlzLmlkcy5sZW5ndGgtMV0pXHJcbiAgICAgICAgICBpZihlbmRQb2ludCkge1xyXG4gICAgICAgICAgICBlbmRQb2ludC5iaWxsYm9hcmQuc2hvdyA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgIHRoaXMuZGVzdHJveSgpXHJcbiAgICAgICAgICBZSi5NZWFzdXJlLk1lYXN1cmVzLnBvcCgpLy/lvLnlh7rmtYvph4/lrp7kvZNcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICBtb3ZlbWVudC5lbmRQb3NpdGlvbi55ICs9IDJcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSBtb3ZlbWVudC5lbmRQb3NpdGlvblxyXG4gICAgICAgIGxldCBjYXJ0ZXNpYW4gPSB0aGlzLnZpZXdlci5zY2VuZS5waWNrUG9zaXRpb24ocG9zaXRpb24pXHJcbiAgICAgICAgaWYgKCFjYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgIGNvbnN0IHJheSA9IHRoaXMudmlld2VyLmNhbWVyYS5nZXRQaWNrUmF5KHBvc2l0aW9uKTsgLy/nm7jkuqTnmoTlsITnur9cclxuICAgICAgICAgIGNhcnRlc2lhbiA9IHRoaXMudmlld2VyLnNjZW5lLmdsb2JlLnBpY2socmF5LCB0aGlzLnZpZXdlci5zY2VuZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSlcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnMuY29uY2F0KGNhcnRlc2lhbilcclxuICAgICAgICAvLyBpZiAodGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAvLyAgIGxldCBjdXJfcG9pbnQgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgLy8gICBsZXQgcHJlX3AgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHRoaXMuY2FjaGVQb3NpdGlvbnNbdGhpcy5jYWNoZVBvc2l0aW9ucy5sZW5ndGggLSAxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgLy8gICBsZXQgZDEgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3ByZV9wLCBjdXJfcG9pbnRdKVxyXG4gICAgICAgIC8vICAgbGV0IGQyID0gTWF0aC5hYnMocHJlX3AuYWx0IC0gY3VyX3BvaW50LmFsdClcclxuICAgICAgICAvLyAgIGxldCBkMyA9IE1hdGguc3FydChkMSAqIGQxICsgZDIgKiBkMilcclxuICAgICAgICAvLyAgIGxldCBjb3NBbHBoYSA9IGQxIC8gZDNcclxuICAgICAgICAvLyAgIGxldCBhY29zID0gTWF0aC5hY29zKGNvc0FscGhhKVxyXG4gICAgICAgIC8vICAgbGV0IGFuZ2xlID0gdGhpcy5yYWRpYW5zVG9EZWdyZWVzKGFjb3MpXHJcbiAgICAgICAgLy8gICBsZXQgbGFiZWwgPSBcIuWdoeW6pu+8mlwiICsgYW5nbGUudG9GaXhlZCgyKSArIFwiwrBcIlxyXG4gICAgICAgIC8vICAgdGhpcy50aXAuc2V0X3RleHQobGFiZWwpXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KHJpZ2h0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHRfa2V5Ym9hcmRfY3RybCgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhY2hlUG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wb3AoKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KHRoaXMuaWRzLnBvcCgpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXB1dGVBbmdsZShzdGFydCwgZW5kKSB7XHJcbiAgICBsZXQgZDEgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3N0YXJ0LCBlbmRdKVxyXG4gICAgbGV0IGQyID0gTWF0aC5hYnMoc3RhcnQuYWx0IC0gZW5kLmFsdClcclxuICAgIGxldCBkMyA9IE1hdGguc3FydChkMSAqIGQxICsgZDIgKiBkMilcclxuICAgIGxldCBjb3NBbHBoYSA9IGQxIC8gZDNcclxuICAgIGxldCBhY29zID0gTWF0aC5hY29zKGNvc0FscGhhKVxyXG4gICAgbGV0IGFuZ2xlID0gdGhpcy5yYWRpYW5zVG9EZWdyZWVzKGFjb3MpXHJcbiAgICBsZXQgbGFiZWwgPSB0aGlzLmdldExhYmVsKFwi5Z2h5bqm77yaXCIgKyBhbmdsZS50b0ZpeGVkKDIpICsgXCLCsFwiKVxyXG4gICAgbGFiZWwucGl4ZWxPZmZzZXQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoXHJcbiAgICAgIDAsIC0oMzIpXHJcbiAgICApXHJcbiAgICB0aGlzLmlkcy5wdXNoKE1lYXN1cmVTbG9wZURpc3RhbmNlLmNyZWF0ZV9wb2ludChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhlbmQubG5nLCBlbmQubGF0LCBlbmQuYWx0KSwge2xhYmVsOiBsYWJlbH0sIHRoaXMpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk5rWL6YePXHJcbiAgICovXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIFt0aGlzLnBvbHlsaW5lX2lkLCB0aGlzLmVuZF9pZCwgdGhpcy5zdGFydF9pZCwgLi4udGhpcy5pZHNdLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZV9lbnRpdHkoaWQpXHJcbiAgICB9KVxyXG4gICAgc3VwZXIuZGVzdHJveSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog57uT5p2f5rWL6YePXHJcbiAgICovXHJcbiAgZW5kKCkge1xyXG4gICAgLy8gWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gICAgLy8gdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgICAvLyB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgc3VwZXIuZW5kKClcclxuICAgIC8vIHRoaXMuc2V0UGlja1N0YXR1cyh0aGlzLnBpY2tTdGF0dXMucGljaylcclxuXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlU2xvcGVEaXN0YW5jZVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBdEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFsT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFIQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQXVMQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Measure/MeasureSlopeDistance/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureTdArea/index.js":
-/*!********************************************!*\
- !*** ./src/Measure/MeasureTdArea/index.js ***!
- \********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n\n\n/**@extends Measure*/\nvar MeasureTdArea = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 贴地面积测量\r\n * */\n function MeasureTdArea(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureTdArea);\n _this = _callSuper(this, MeasureTdArea, [sdk, options]);\n _this.options.lineColor = '#ffdf53';\n _this.polygon_id = \"\";\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureTdArea, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureTdArea, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this2 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureTdArea, \"start\", this, 3)([]);\n this.ids = [];\n this.positions = [];\n this.text = \"\";\n this.center = new Cesium.Cartesian3();\n this.cachePositions = [];\n this.tip.set_text('左键单击确定控制点位置,右键单击取消贴地面积测量!');\n var height = 0;\n var text;\n var leftEvent = function leftEvent(movement, car) {\n if (_this2.ids.length === 0) {\n _this2.polygon_id = MeasureTdArea.create_polygon(_this2);\n }\n _this2.cachePositions.push(_objectSpread({}, car));\n _this2.ids.push(_this2.create_point(_objectSpread({}, car), false));\n var po = _this2.cartesian3Towgs84(_objectSpread({}, car), _this2.viewer);\n if (po.alt > height) {\n height = po.alt;\n }\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n _this2.tip.setPosition(_objectSpread({}, car), movement.position.x, movement.position.y);\n if (_this2.positions.length > 3) {\n _this2.tip.set_text('左键单击确定控制点位置,右键单击完成贴地面积测量!');\n }\n };\n var rightEvent = function rightEvent(movement, car) {\n _this2.positions = _this2.cachePositions;\n if (_this2.positions.length > 2) {\n var arr = [];\n _this2.positions.forEach(function (item) {\n var p = _this2.cartesian3Towgs84(item, _this2.viewer);\n arr.push({\n lng: p.lng,\n lat: p.lat\n });\n });\n setTimeout(function () {\n var center = _this2.computeCenter(arr);\n var area = _this2.computeSignedArea(_this2.viewer, arr);\n _this2.center = new Cesium.Cartesian3.fromDegrees(center.lng, center.lat, height);\n _this2.text = \"贴地面积:\" + area + \" ㎡\";\n }, 0);\n } else {\n var error = '面积计算至少需要三个坐标!';\n console.warn(error);\n window.ELEMENT && window.ELEMENT.Message({\n message: error,\n type: 'warning',\n duration: 1500\n });\n _this2.destroy();\n }\n _this2.end();\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this2.tip.setPosition(_objectSpread({}, car), movement.endPosition.x, movement.endPosition.y);\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n });\n this.event.mouse_right(rightEvent);\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n rightEvent(pos, cartesian);\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this3 = this;\n [this.polygon_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this3.remove_entity(id);\n });\n _superPropGet(MeasureTdArea, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureTdArea, \"end\", this, 3)([]);\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var id = that.randomString();\n var scaleByDistance = new Cesium.NearFarScalar(2000, 1, 100000, 0);\n var e = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#ffffff'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // scaleByDistance,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM\n },\n position: new Cesium.CallbackProperty(function () {\n return that.center;\n }, false),\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }, false),\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n if (that.positions.length) return that.positions.concat(that.positions[0]);\n return that.positions;\n }, false),\n width: 2,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.lineColor || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureTdArea);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlVGRBcmVhL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZVRkQXJlYS9pbmRleC5qcz80NDRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNZWFzdXJlIGZyb20gXCIuLi9pbmRleFwiXHJcblxyXG4vKipAZXh0ZW5kcyBNZWFzdXJlKi9cclxuY2xhc3MgTWVhc3VyZVRkQXJlYSBleHRlbmRzIE1lYXN1cmUge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBzZGsgXHJcbiAgICogQGRlc2NyaXB0aW9uIOi0tOWcsOmdouenr+a1i+mHj1xyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMubGluZUNvbG9yID0gJyNmZmRmNTMnXHJcbiAgICB0aGlzLnBvbHlnb25faWQgPSBcIlwiXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlX3BvbHlnb24odGhhdCkge1xyXG4gICAgbGV0IGlkID0gdGhhdC5yYW5kb21TdHJpbmcoKVxyXG5cclxuICAgIGxldCBzY2FsZUJ5RGlzdGFuY2UgPSBuZXcgQ2VzaXVtLk5lYXJGYXJTY2FsYXIoMjAwMCwgMSwgMTAwMDAwLCAwKVxyXG5cclxuICAgIGxldCBlID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICB0ZXh0OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhhdC50ZXh0XHJcbiAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICAvL+agh+azqOaWh+Wtl+aPj+i/sFxyXG4gICAgICAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnI2ZmZmZmZicpLFxyXG4gICAgICAgICAgc3R5bGU6IENlc2l1bS5MYWJlbFN0eWxlLkZJTExfQU5EX09VVExJTkUsXHJcbiAgICAgICAgICAvL+agh+azqOeahOmBruaMoei3neemu+iuvue9ruS4ujEwMOWImeinhuinkuS4juagh+azqOeahOi3neemu+Wkp+S6jjEwMOexs+aXtuS8muaciemBruaMoVxyXG4gICAgICAgICAgLy8gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOiB0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixcclxuXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuXHJcbiAgICAgICAgICAvLyBzY2FsZUJ5RGlzdGFuY2UsXHJcbiAgICAgICAgICBzY2FsZTogMSxcclxuICAgICAgICAgIGhvcml6b250YWxPcmlnaW46IENlc2l1bS5Ib3Jpem9udGFsT3JpZ2luLkNFTlRFUixcclxuICAgICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhhdC5jZW50ZXJcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25UeXBlOiBDZXNpdW0uQ2xhc3NpZmljYXRpb25UeXBlLkJPVEgsXHJcbiAgICAgICAgICBoaWVyYXJjaHk6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoZSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KHRoYXQucG9zaXRpb25zKVxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5jb2xvciB8fCB0aGF0LmRlZmF1bHRDb2xvciksXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwb2x5bGluZToge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhhdC5wb3NpdGlvbnMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9ucy5jb25jYXQodGhhdC5wb3NpdGlvbnNbMF0pXHJcbiAgICAgICAgICAgIHJldHVybiB0aGF0LnBvc2l0aW9uc1xyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICBtYXRlcmlhbDogbmV3IENlc2l1bS5Qb2x5bGluZURhc2hNYXRlcmlhbFByb3BlcnR5KHtcclxuICAgICAgICAgICAgY29sb3I6IG5ldyBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQub3B0aW9ucy5saW5lQ29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgICAgICBkYXNoTGVuZ3RoOiAyMCwgLy/nn63liJLnur/plb/luqZcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICByZXR1cm4gaWRcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW8gOWni+a1i+mHj1xyXG4gICAqL1xyXG4gIHN0YXJ0KCkge1xyXG4gICAgaWYgKCFZSi5NZWFzdXJlLkdldE1lYXN1cmVTdGF0dXMoKSkge1xyXG4gICAgICBzdXBlci5zdGFydCgpXHJcbiAgICAgIHRoaXMuaWRzID0gW11cclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLnRleHQgPSBcIlwiXHJcbiAgICAgIHRoaXMuY2VudGVyID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoaXMudGlwLnNldF90ZXh0KCflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojotLTlnLDpnaLnp6/mtYvph48hJylcclxuICAgICAgbGV0IGhlaWdodCA9IDBcclxuICAgICAgbGV0IHRleHRcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9seWdvbl9pZCA9IE1lYXN1cmVUZEFyZWEuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKHsgLi4uY2FyIH0pXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludCh7IC4uLmNhciB9LCBmYWxzZSkpXHJcbiAgICAgICAgbGV0IHBvID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh7IC4uLmNhciB9LCB0aGlzLnZpZXdlcilcclxuICAgICAgICBpZiAocG8uYWx0ID4gaGVpZ2h0KSB7XHJcbiAgICAgICAgICBoZWlnaHQgPSBwby5hbHRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXIgfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbih7IC4uLmNhciB9LCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMykge1xyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOi0tOWcsOmdouenr+a1i+mHjyEnKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsZXQgcmlnaHRFdmVudCA9IChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zXHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25zLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSBbXVxyXG4gICAgICAgICAgdGhpcy5wb3NpdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGl0ZW0sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBhcnIucHVzaCh7IGxuZzogcC5sbmcsIGxhdDogcC5sYXQgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNlbnRlciA9IHRoaXMuY29tcHV0ZUNlbnRlcihhcnIpXHJcbiAgICAgICAgICAgIGxldCBhcmVhID0gdGhpcy5jb21wdXRlU2lnbmVkQXJlYSh0aGlzLnZpZXdlciwgYXJyKVxyXG4gICAgICAgICAgICB0aGlzLmNlbnRlciA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXIubG5nLCBjZW50ZXIubGF0LCBoZWlnaHQpXHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IFwi6LS05Zyw6Z2i56ev77yaXCIgKyBhcmVhICsgXCIg446hXCJcclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBlcnJvciA9ICfpnaLnp6/orqHnrpfoh7PlsJHpnIDopoHkuInkuKrlnZDmoIfvvIEnXHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpXHJcbiAgICAgICAgICB3aW5kb3cuRUxFTUVOVCAmJiB3aW5kb3cuRUxFTUVOVC5NZXNzYWdlKHtcclxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IsXHJcbiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcclxuICAgICAgICAgICAgZHVyYXRpb246IDE1MDBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kZXN0cm95KClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKHsgLi4uY2FyIH0sIG1vdmVtZW50LmVuZFBvc2l0aW9uLngsIG1vdmVtZW50LmVuZFBvc2l0aW9uLnkpXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmNhY2hlUG9zaXRpb25zLmNvbmNhdCh7IC4uLmNhciB9KVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KHJpZ2h0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19zdGFydCgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgbGV0IHBvcyA9IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIHg6IChtb3ZlbWVudC5wb3NpdGlvbjEueCArIG1vdmVtZW50LnBvc2l0aW9uMi54KSAvIDIsXHJcbiAgICAgICAgICAgIHk6IChtb3ZlbWVudC5wb3NpdGlvbjEueSArIG1vdmVtZW50LnBvc2l0aW9uMi55KSAvIDJcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX2VuZCgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICAgIGlmIChlbmRUaW1lIC0gc3RhcnRUaW1lID49IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDplb/mjInlj5bmtohcclxuICAgICAgICAgICAgcmlnaHRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBbdGhpcy5wb2x5Z29uX2lkLCAuLi50aGlzLmlkc10uZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlX2VudGl0eShpZClcclxuICAgIH0pXHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOe7k+adn+a1i+mHj1xyXG4gICAqL1xyXG4gIGVuZCgpIHtcclxuICAgIHN1cGVyLmVuZCgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlVGRBcmVhXHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMERBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQTlKQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBNEdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/MeasureTdArea/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureTriangle/index.js":
-/*!**********************************************!*\
- !*** ./src/Measure/MeasureTriangle/index.js ***!
- \**********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_4___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-21 15:22\r\n * @description:index\r\n * @update: 2022-07-21 15:22\r\n */\n\nvar MeasureTriangle = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 三角测量\r\n * */\n function MeasureTriangle(sdk) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeasureTriangle);\n return _callSuper(this, MeasureTriangle, [sdk, {\n text: \"左键单击确定控制点位置,右键单击取消三角测量!\"\n }]);\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(MeasureTriangle, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MeasureTriangle, [{\n key: \"cal_center\",\n value: function cal_center(positions) {\n var p1 = this.cartesian3Towgs84(positions[0], this.viewer);\n var p2 = this.cartesian3Towgs84(positions[1], this.viewer);\n var center = this.computeCenter([p1, p2]);\n return Cesium.Cartesian3.fromDegrees(center.lng, center.lat, (p1.alt + p2.alt) / 2);\n }\n }, {\n key: \"cal_distance\",\n value: function cal_distance(positions) {\n var p1 = this.cartesian3Towgs84(positions[0], this.viewer);\n var p2 = this.cartesian3Towgs84(positions[1], this.viewer);\n var dis = this.computeDistance2([p1, p2]);\n p1.alt = p1.alt.toFixed(2);\n p2.alt = p2.alt.toFixed(2);\n if (p1.alt === p2.alt) {\n //水平边\n return dis;\n } else if (Number(dis) === 0.00) {\n //竖直边\n return Math.abs(p1.alt - p2.alt).toFixed(2);\n } else {\n //斜边\n return Math.sqrt(dis * dis + Math.pow(Math.abs(p1.alt - p2.alt).toFixed(2), 2)).toFixed(2);\n }\n }\n }, {\n key: \"createPolyline\",\n value: function createPolyline(id) {\n var _this = this;\n var obj = this.id_map.get(id);\n this.viewer.entities.add(new Cesium.Entity({\n id: id,\n position: new Cesium.CallbackProperty(function () {\n if (obj.positions.length === 2) return _this.cal_center(obj.positions);else return Cesium.Cartesian3();\n }, false),\n label: {\n text: new Cesium.CallbackProperty(function () {\n if (obj.positions.length === 2) return _this.cal_distance(obj.positions) + \"米\";else return \"0米\";\n }, false),\n scale: 1,\n fillColor: Cesium.Color.RED,\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(0, -10),\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return obj.positions;\n }, false),\n width: 2,\n material: Cesium.Color.YELLOW,\n zIndex: 99999999\n }\n }));\n this.ids.push(id);\n }\n }, {\n key: \"create_angle_label\",\n value: function create_angle_label(positions1, positions2, id, type) {\n var _this2 = this;\n var entity = new Cesium.Entity({\n id: id,\n position: new Cesium.CallbackProperty(function () {\n if (positions1.length === 2) return _this2.cal_point(positions1, positions2);else return Cesium.Cartesian3();\n }),\n label: {\n text: new Cesium.CallbackProperty(function () {\n if (positions1.length === 2) return _this2.cal_angle(positions1, positions2, type) + \"°\";else return \"0°\";\n }, false),\n scale: 1,\n fillColor: Cesium.Color.RED,\n font: 'normal 20px MicroSoft YaHei',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n pixelOffset: new Cesium.Cartesian2(15, -10)\n }\n });\n this.viewer.entities.add(entity);\n }\n }, {\n key: \"cal_point\",\n value: function cal_point(positions1, positions2) {\n for (var i = 0; i < positions1.length; i++) {\n for (var j = 0; j < positions2.length; j++) {\n if (positions1[i].x === positions2[j].x && positions1[i].y === positions2[j].y && positions1[i].z === positions2[j].z) {\n return positions1[i];\n }\n }\n }\n }\n }, {\n key: \"cal_angle\",\n value: function cal_angle(id1, id2, type) {\n if (type === 1) {\n //水平&竖直\n return 90;\n } else if (type === 2 || type === 3) {\n //水平&斜边 竖直&斜边\n var positions1 = this.id_map.get(id1).positions;\n var positions2 = this.id_map.get(id2).positions;\n var p1 = this.cartesian3Towgs84(positions1[0], this.viewer);\n var p2 = this.cartesian3Towgs84(positions1[1], this.viewer);\n var shuiping = this.computeDistance2([p2, p1]);\n var p3 = this.cartesian3Towgs84(positions2[0], this.viewer);\n var p4 = this.cartesian3Towgs84(positions2[1], this.viewer);\n var d = this.computeDistance2([p3, p4]);\n var h = Math.abs(p3.alt - p4.alt);\n var x = Math.sqrt(Math.pow(h, 2) + Math.pow(d, 2));\n if (shuiping == 0.00) {\n shuiping = Math.abs(p2.alt - p1.alt);\n }\n return (Math.acos(shuiping / x) * 180 / Math.PI).toFixed(2);\n }\n }\n\n /**\r\n * 开始测量\r\n */\n }, {\n key: \"start\",\n value: function start() {\n var _this3 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureTriangle, \"start\", this, 3)([]);\n this.positions = [];\n this.cachePositions = [];\n var shuiping_line_id = this.randomString(); //水平线\n var shuizhi_line_id = this.randomString(); //竖直边\n var xiebian_line_id = this.randomString(); //斜边\n\n var angle1 = this.randomString(); //角度1\n var angle2 = this.randomString(); //角度2\n var angle3 = this.randomString(); //角度3\n\n var xiebian_line_positions = []; //斜边\n\n this.id_map = new Map();\n var first_point = {};\n this.id_map.set(xiebian_line_id, {\n positions: []\n });\n this.id_map.set(shuiping_line_id, {\n positions: []\n });\n this.id_map.set(shuizhi_line_id, {\n positions: []\n });\n var leftEvent = function leftEvent(movement, car) {\n xiebian_line_positions.push(car);\n _this3.tip.set_text('左键单击确定终点位置,完成三角测量!');\n if (_this3.ids.length === 0) {\n //创建三角形\n first_point = _this3.cartesian3Towgs84(car, _this3.viewer);\n _this3.createPolyline(shuiping_line_id);\n _this3.createPolyline(shuizhi_line_id);\n _this3.createPolyline(xiebian_line_id);\n\n // this.cal_angle(shuiping_line_id, shuizhi_line_id, 1)\n // this.cal_angle(shuiping_line_id, xiebian_line_id, 2)\n // this.cal_angle(shuizhi_line_id, xiebian_line_id, 3)\n\n // this.ids.push(shuiping_line_id)\n // this.ids.push(shuizhi_line_id)\n // this.ids.push(xiebian_line_id)\n }\n _this3.ids.push(_this3.create_point(car));\n _this3.tip.setPosition(car, movement.position.x, movement.position.y);\n // // 隐藏斜边文字\n // let xiebian = this.id_map.get(xiebian_line_id)\n // let xbEntity = this.viewer.entities.getById(xiebian_line_id)\n // if(xbEntity) {\n // xbEntity.label.show = false\n // }\n if (xiebian_line_positions.length) {\n // xiebian.positions = xiebian_line_positions.concat(car)\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n var shuzhi = _this3.id_map.get(shuizhi_line_id);\n var shuiping = _this3.id_map.get(shuiping_line_id);\n if (p.alt < first_point.alt) {\n shuzhi.positions[0] = car;\n shuzhi.positions[1] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n } else {\n shuzhi.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuzhi.positions[1] = car;\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n }\n // shuizhi.positions = shuizhi_positions\n }\n if (xiebian_line_positions.length === 2) {\n _this3.end();\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this3.tip.setPosition(car, movement.endPosition.x, movement.endPosition.y);\n var xiebian = _this3.id_map.get(xiebian_line_id);\n if (xiebian_line_positions.length) {\n xiebian.positions = xiebian_line_positions.concat(car);\n var p = _this3.cartesian3Towgs84(car, _this3.viewer);\n var shuzhi = _this3.id_map.get(shuizhi_line_id);\n var shuiping = _this3.id_map.get(shuiping_line_id);\n if (p.alt < first_point.alt) {\n shuzhi.positions[0] = car;\n shuzhi.positions[1] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(p.lng, p.lat, first_point.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n } else {\n shuzhi.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuzhi.positions[1] = car;\n shuiping.positions[0] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, p.alt);\n shuiping.positions[1] = Cesium.Cartesian3.fromDegrees(first_point.lng, first_point.lat, first_point.alt);\n }\n // shuizhi.positions = shuizhi_positions\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this3.end();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this3.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this3.end();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureTriangle, \"end\", this, 3)([]);\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n _superPropGet(MeasureTriangle, \"destroy\", this, 3)([]);\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureTriangle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlVHJpYW5nbGUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTWVhc3VyZS9NZWFzdXJlVHJpYW5nbGUvaW5kZXguanM/OWVmOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMjEgMTU6MjJcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNy0yMSAxNToyMlxyXG4gKi9cclxuaW1wb3J0IE1lYXN1cmUgZnJvbSBcIi4uL2luZGV4XCI7XHJcblxyXG5jbGFzcyBNZWFzdXJlVHJpYW5nbGUgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDkuInop5LmtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaykge1xyXG4gICAgc3VwZXIoc2RrLCB7dGV4dDogXCLlt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojkuInop5LmtYvph4/vvIFcIn0pO1xyXG4gIH1cclxuXHJcbiAgY2FsX2NlbnRlcihwb3NpdGlvbnMpIHtcclxuICAgIGxldCBwMSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBwMiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzFdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBjZW50ZXIgPSB0aGlzLmNvbXB1dGVDZW50ZXIoW3AxLCBwMl0pO1xyXG4gICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlci5sbmcsIGNlbnRlci5sYXQsIChwMS5hbHQgKyBwMi5hbHQpIC8gMilcclxuICB9XHJcblxyXG4gIGNhbF9kaXN0YW5jZShwb3NpdGlvbnMpIHtcclxuICAgIGxldCBwMSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzBdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBwMiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zWzFdLCB0aGlzLnZpZXdlcilcclxuICAgIGxldCBkaXMgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3AxLCBwMl0pXHJcbiAgICBwMS5hbHQgPSBwMS5hbHQudG9GaXhlZCgyKVxyXG4gICAgcDIuYWx0ID0gcDIuYWx0LnRvRml4ZWQoMilcclxuICAgIGlmIChwMS5hbHQgPT09IHAyLmFsdCkgey8v5rC05bmz6L65XHJcbiAgICAgIHJldHVybiBkaXNcclxuICAgIH0gZWxzZSBpZiAoTnVtYmVyKGRpcykgPT09IDAuMDApIHsvL+erluebtOi+uVxyXG4gICAgICByZXR1cm4gTWF0aC5hYnMocDEuYWx0IC0gcDIuYWx0KS50b0ZpeGVkKDIpXHJcbiAgICB9IGVsc2Ugey8v5pac6L65XHJcbiAgICAgIHJldHVybiBNYXRoLnNxcnQoZGlzICogZGlzICsgTWF0aC5wb3coTWF0aC5hYnMocDEuYWx0IC0gcDIuYWx0KS50b0ZpeGVkKDIpLCAyKSkudG9GaXhlZCgyKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUG9seWxpbmUoaWQpIHtcclxuICAgIGxldCBvYmogPSB0aGlzLmlkX21hcC5nZXQoaWQpXHJcblxyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgaWQsXHJcbiAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgIGlmIChvYmoucG9zaXRpb25zLmxlbmd0aCA9PT0gMilcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNhbF9jZW50ZXIob2JqLnBvc2l0aW9ucylcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICB9LCBmYWxzZSksXHJcbiAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIGlmIChvYmoucG9zaXRpb25zLmxlbmd0aCA9PT0gMilcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsX2Rpc3RhbmNlKG9iai5wb3NpdGlvbnMpICsgXCLnsbNcIlxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gXCIw57GzXCJcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuUkVELFxyXG4gICAgICAgIGZvbnQ6ICdub3JtYWwgMjBweCBNaWNyb1NvZnQgWWFIZWknLFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLFxyXG4gICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIHBpeGVsT2Zmc2V0OiBuZXcgQ2VzaXVtLkNhcnRlc2lhbjIoMCwgLTEwKSxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbHlsaW5lOiB7XHJcbiAgICAgICAgcG9zaXRpb25zOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9iai5wb3NpdGlvbnNcclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgbWF0ZXJpYWw6IENlc2l1bS5Db2xvci5ZRUxMT1csXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KSlcclxuXHJcbiAgICB0aGlzLmlkcy5wdXNoKGlkKVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlX2FuZ2xlX2xhYmVsKHBvc2l0aW9uczEsIHBvc2l0aW9uczIsIGlkLCB0eXBlKSB7XHJcbiAgICBsZXQgZW50aXR5ID0gbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICBpZCxcclxuICAgICAgcG9zaXRpb246IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uczEubGVuZ3RoID09PSAyKVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FsX3BvaW50KHBvc2l0aW9uczEsIHBvc2l0aW9uczIpXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0dXJuIENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgfSksXHJcbiAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgIGlmIChwb3NpdGlvbnMxLmxlbmd0aCA9PT0gMilcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsX2FuZ2xlKHBvc2l0aW9uczEsIHBvc2l0aW9uczIsIHR5cGUpICsgXCLCsFwiXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBcIjDCsFwiXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHNjYWxlOiAxLFxyXG4gICAgICAgIGZpbGxDb2xvcjogQ2VzaXVtLkNvbG9yLlJFRCxcclxuICAgICAgICBmb250OiAnbm9ybWFsIDIwcHggTWljcm9Tb2Z0IFlhSGVpJyxcclxuICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBzdHlsZTogQ2VzaXVtLkxhYmVsU3R5bGUuRklMTF9BTkRfT1VUTElORSxcclxuICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDE1LCAtMTApLFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKGVudGl0eSlcclxuXHJcbiAgfVxyXG5cclxuICBjYWxfcG9pbnQocG9zaXRpb25zMSwgcG9zaXRpb25zMikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9zaXRpb25zMi5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChwb3NpdGlvbnMxW2ldLnggPT09IHBvc2l0aW9uczJbal0ueCAmJlxyXG4gICAgICAgICAgcG9zaXRpb25zMVtpXS55ID09PSBwb3NpdGlvbnMyW2pdLnkgJiZcclxuICAgICAgICAgIHBvc2l0aW9uczFbaV0ueiA9PT0gcG9zaXRpb25zMltqXS56XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXR1cm4gcG9zaXRpb25zMVtpXVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsX2FuZ2xlKGlkMSwgaWQyLCB0eXBlKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gMSkgey8v5rC05bmzJuerluebtFxyXG4gICAgICByZXR1cm4gOTBcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gMiB8fCB0eXBlID09PSAzKSB7Ly/msLTlubMm5pac6L65ICDnq5bnm7Qm5pac6L65XHJcbiAgICAgIGxldCBwb3NpdGlvbnMxID0gdGhpcy5pZF9tYXAuZ2V0KGlkMSkucG9zaXRpb25zXHJcbiAgICAgIGxldCBwb3NpdGlvbnMyID0gdGhpcy5pZF9tYXAuZ2V0KGlkMikucG9zaXRpb25zXHJcbiAgICAgIGxldCBwMSA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zMVswXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgIGxldCBwMiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zMVsxXSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgIGxldCBzaHVpcGluZyA9IHRoaXMuY29tcHV0ZURpc3RhbmNlMihbcDIsIHAxXSlcclxuICAgICAgbGV0IHAzID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnMyWzBdLCB0aGlzLnZpZXdlcilcclxuICAgICAgbGV0IHA0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChwb3NpdGlvbnMyWzFdLCB0aGlzLnZpZXdlcilcclxuICAgICAgbGV0IGQgPSB0aGlzLmNvbXB1dGVEaXN0YW5jZTIoW3AzLCBwNF0pXHJcbiAgICAgIGxldCBoID0gTWF0aC5hYnMocDMuYWx0IC0gcDQuYWx0KVxyXG4gICAgICBsZXQgeCA9IE1hdGguc3FydChNYXRoLnBvdyhoLCAyKSArIE1hdGgucG93KGQsIDIpKVxyXG4gICAgICBpZiAoc2h1aXBpbmcgPT0gMC4wMCkge1xyXG4gICAgICAgIHNodWlwaW5nID0gTWF0aC5hYnMocDIuYWx0IC0gcDEuYWx0KVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoTWF0aC5hY29zKHNodWlwaW5nIC8geCkgKiAxODAgLyBNYXRoLlBJKS50b0ZpeGVkKDIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuXHJcbiAgICBpZiAoIVlKLk1lYXN1cmUuR2V0TWVhc3VyZVN0YXR1cygpKSB7XHJcbiAgICAgIHN1cGVyLnN0YXJ0KClcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgICB0aGlzLmNhY2hlUG9zaXRpb25zID0gW11cclxuICAgICAgbGV0IHNodWlwaW5nX2xpbmVfaWQgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v5rC05bmz57q/XHJcbiAgICAgIGxldCBzaHVpemhpX2xpbmVfaWQgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v56uW55u06L65XHJcbiAgICAgIGxldCB4aWViaWFuX2xpbmVfaWQgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v5pac6L65XHJcblxyXG4gICAgICBsZXQgYW5nbGUxID0gdGhpcy5yYW5kb21TdHJpbmcoKTsvL+inkuW6pjFcclxuICAgICAgbGV0IGFuZ2xlMiA9IHRoaXMucmFuZG9tU3RyaW5nKCk7Ly/op5LluqYyXHJcbiAgICAgIGxldCBhbmdsZTMgPSB0aGlzLnJhbmRvbVN0cmluZygpOy8v6KeS5bqmM1xyXG5cclxuXHJcbiAgICAgIGxldCB4aWViaWFuX2xpbmVfcG9zaXRpb25zID0gW107Ly/mlpzovrlcclxuXHJcbiAgICAgIHRoaXMuaWRfbWFwID0gbmV3IE1hcCgpXHJcbiAgICAgIGxldCBmaXJzdF9wb2ludCA9IHt9XHJcbiAgICAgIHRoaXMuaWRfbWFwLnNldCh4aWViaWFuX2xpbmVfaWQsIHtwb3NpdGlvbnM6IFtdfSlcclxuICAgICAgdGhpcy5pZF9tYXAuc2V0KHNodWlwaW5nX2xpbmVfaWQsIHtwb3NpdGlvbnM6IFtdfSlcclxuICAgICAgdGhpcy5pZF9tYXAuc2V0KHNodWl6aGlfbGluZV9pZCwge3Bvc2l0aW9uczogW119KVxyXG5cclxuICAgICAgbGV0IGxlZnRFdmVudCA9IChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgeGllYmlhbl9saW5lX3Bvc2l0aW9ucy5wdXNoKGNhcilcclxuXHJcbiAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumue7iOeCueS9jee9ru+8jOWujOaIkOS4ieinkua1i+mHj++8gScpXHJcbiAgICAgICAgaWYgKHRoaXMuaWRzLmxlbmd0aCA9PT0gMCkgey8v5Yib5bu65LiJ6KeS5b2iXHJcbiAgICAgICAgICBmaXJzdF9wb2ludCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIHRoaXMuY3JlYXRlUG9seWxpbmUoc2h1aXBpbmdfbGluZV9pZCwpXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVBvbHlsaW5lKHNodWl6aGlfbGluZV9pZCwpXHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZVBvbHlsaW5lKHhpZWJpYW5fbGluZV9pZCwpXHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5jYWxfYW5nbGUoc2h1aXBpbmdfbGluZV9pZCwgc2h1aXpoaV9saW5lX2lkLCAxKVxyXG4gICAgICAgICAgLy8gdGhpcy5jYWxfYW5nbGUoc2h1aXBpbmdfbGluZV9pZCwgeGllYmlhbl9saW5lX2lkLCAyKVxyXG4gICAgICAgICAgLy8gdGhpcy5jYWxfYW5nbGUoc2h1aXpoaV9saW5lX2lkLCB4aWViaWFuX2xpbmVfaWQsIDMpXHJcblxyXG4gICAgICAgICAgLy8gdGhpcy5pZHMucHVzaChzaHVpcGluZ19saW5lX2lkKVxyXG4gICAgICAgICAgLy8gdGhpcy5pZHMucHVzaChzaHVpemhpX2xpbmVfaWQpXHJcbiAgICAgICAgICAvLyB0aGlzLmlkcy5wdXNoKHhpZWJpYW5fbGluZV9pZClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaWRzLnB1c2godGhpcy5jcmVhdGVfcG9pbnQoY2FyKSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbihjYXIsIG1vdmVtZW50LnBvc2l0aW9uLngsIG1vdmVtZW50LnBvc2l0aW9uLnkpXHJcbiAgICAgICAgLy8gLy8g6ZqQ6JeP5pac6L655paH5a2XXHJcbiAgICAgICAgLy8gbGV0IHhpZWJpYW4gPSB0aGlzLmlkX21hcC5nZXQoeGllYmlhbl9saW5lX2lkKVxyXG4gICAgICAgIC8vIGxldCB4YkVudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmdldEJ5SWQoeGllYmlhbl9saW5lX2lkKVxyXG4gICAgICAgIC8vIGlmKHhiRW50aXR5KSB7XHJcbiAgICAgICAgLy8gICB4YkVudGl0eS5sYWJlbC5zaG93ID0gZmFsc2VcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgaWYgKHhpZWJpYW5fbGluZV9wb3NpdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyB4aWViaWFuLnBvc2l0aW9ucyA9IHhpZWJpYW5fbGluZV9wb3NpdGlvbnMuY29uY2F0KGNhcilcclxuICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIsIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgbGV0IHNodXpoaSA9IHRoaXMuaWRfbWFwLmdldChzaHVpemhpX2xpbmVfaWQpXHJcbiAgICAgICAgICBsZXQgc2h1aXBpbmcgPSB0aGlzLmlkX21hcC5nZXQoc2h1aXBpbmdfbGluZV9pZClcclxuICAgICAgICAgIGlmIChwLmFsdCA8IGZpcnN0X3BvaW50LmFsdCkge1xyXG4gICAgICAgICAgICBzaHV6aGkucG9zaXRpb25zWzBdID0gY2FyXHJcbiAgICAgICAgICAgIHNodXpoaS5wb3NpdGlvbnNbMV0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwLmxuZywgcC5sYXQsIGZpcnN0X3BvaW50LmFsdClcclxuICAgICAgICAgICAgc2h1aXBpbmcucG9zaXRpb25zWzBdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocC5sbmcsIHAubGF0LCBmaXJzdF9wb2ludC5hbHQpXHJcbiAgICAgICAgICAgIHNodWlwaW5nLnBvc2l0aW9uc1sxXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGZpcnN0X3BvaW50LmxuZywgZmlyc3RfcG9pbnQubGF0LCBmaXJzdF9wb2ludC5hbHQpXHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2h1emhpLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGZpcnN0X3BvaW50LmxuZywgZmlyc3RfcG9pbnQubGF0LCBwLmFsdClcclxuICAgICAgICAgICAgc2h1emhpLnBvc2l0aW9uc1sxXSA9IGNhclxyXG5cclxuICAgICAgICAgICAgc2h1aXBpbmcucG9zaXRpb25zWzBdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoZmlyc3RfcG9pbnQubG5nLCBmaXJzdF9wb2ludC5sYXQsIHAuYWx0KVxyXG4gICAgICAgICAgICBzaHVpcGluZy5wb3NpdGlvbnNbMV0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhmaXJzdF9wb2ludC5sbmcsIGZpcnN0X3BvaW50LmxhdCwgZmlyc3RfcG9pbnQuYWx0KVxyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHNodWl6aGkucG9zaXRpb25zID0gc2h1aXpoaV9wb3NpdGlvbnNcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHhpZWJpYW5fbGluZV9wb3NpdGlvbnMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbGVmdChsZWZ0RXZlbnQpXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKGNhciwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCwgbW92ZW1lbnQuZW5kUG9zaXRpb24ueSlcclxuICAgICAgICBsZXQgeGllYmlhbiA9IHRoaXMuaWRfbWFwLmdldCh4aWViaWFuX2xpbmVfaWQpXHJcblxyXG4gICAgICAgIGlmICh4aWViaWFuX2xpbmVfcG9zaXRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgeGllYmlhbi5wb3NpdGlvbnMgPSB4aWViaWFuX2xpbmVfcG9zaXRpb25zLmNvbmNhdChjYXIpXHJcbiAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY2FyLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgIGxldCBzaHV6aGkgPSB0aGlzLmlkX21hcC5nZXQoc2h1aXpoaV9saW5lX2lkKVxyXG4gICAgICAgICAgbGV0IHNodWlwaW5nID0gdGhpcy5pZF9tYXAuZ2V0KHNodWlwaW5nX2xpbmVfaWQpXHJcbiAgICAgICAgICBpZiAocC5hbHQgPCBmaXJzdF9wb2ludC5hbHQpIHtcclxuICAgICAgICAgICAgc2h1emhpLnBvc2l0aW9uc1swXSA9IGNhclxyXG4gICAgICAgICAgICBzaHV6aGkucG9zaXRpb25zWzFdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMocC5sbmcsIHAubGF0LCBmaXJzdF9wb2ludC5hbHQpXHJcbiAgICAgICAgICAgIHNodWlwaW5nLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgZmlyc3RfcG9pbnQuYWx0KVxyXG4gICAgICAgICAgICBzaHVpcGluZy5wb3NpdGlvbnNbMV0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhmaXJzdF9wb2ludC5sbmcsIGZpcnN0X3BvaW50LmxhdCwgZmlyc3RfcG9pbnQuYWx0KVxyXG5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNodXpoaS5wb3NpdGlvbnNbMF0gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhmaXJzdF9wb2ludC5sbmcsIGZpcnN0X3BvaW50LmxhdCwgcC5hbHQpXHJcbiAgICAgICAgICAgIHNodXpoaS5wb3NpdGlvbnNbMV0gPSBjYXJcclxuXHJcbiAgICAgICAgICAgIHNodWlwaW5nLnBvc2l0aW9uc1swXSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGZpcnN0X3BvaW50LmxuZywgZmlyc3RfcG9pbnQubGF0LCBwLmFsdClcclxuICAgICAgICAgICAgc2h1aXBpbmcucG9zaXRpb25zWzFdID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoZmlyc3RfcG9pbnQubG5nLCBmaXJzdF9wb2ludC5sYXQsIGZpcnN0X3BvaW50LmFsdClcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBzaHVpemhpLnBvc2l0aW9ucyA9IHNodWl6aGlfcG9zaXRpb25zXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX3JpZ2h0KChtb3ZlbWVudCwgY2FyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIGxldCBwb3MgPSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjoge1xyXG4gICAgICAgICAgICB4OiAobW92ZW1lbnQucG9zaXRpb24xLnggKyBtb3ZlbWVudC5wb3NpdGlvbjIueCkgLyAyLFxyXG4gICAgICAgICAgICB5OiAobW92ZW1lbnQucG9zaXRpb24xLnkgKyBtb3ZlbWVudC5wb3NpdGlvbjIueSkgLyAyXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgLy8g6ZW/5oyJ5Y+W5raIXHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZWZ0RXZlbnQocG9zLCBjYXJ0ZXNpYW4pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDnu5PmnZ/mtYvph49cclxuICAgKi9cclxuICBlbmQoKSB7XHJcbiAgICBzdXBlci5lbmQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOa1i+mHj1xyXG4gICAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICBzdXBlci5kZXN0cm95KClcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWFzdXJlVHJpYW5nbGVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureTriangle/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/MeasureTyArea/index.js":
-/*!********************************************!*\
- !*** ./src/Measure/MeasureTyArea/index.js ***!
- \********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/get */ \"./node_modules/@babel/runtime/helpers/get.js\");\n/* harmony import */ var _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../index */ \"./src/Measure/index.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _superPropGet(t, o, e, r) { var p = _babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(1 & r ? t.prototype : t), o, e); return 2 & r && \"function\" == typeof p ? function (t) { return p.apply(e, t); } : p; }\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-07-11 17:28\r\n * @description:index\r\n * @update: 2022-07-11 17:28\r\n */\n\n\n/**@extends Measure*/\nvar MeasureTyArea = /*#__PURE__*/function (_Measure) {\n /**\r\n * @constructor\r\n * @param sdk \r\n * @description 投影面积测量\r\n * */\n function MeasureTyArea(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, MeasureTyArea);\n _this = _callSuper(this, MeasureTyArea, [sdk, options]);\n _this.options.lineColor = '#ffdf53';\n _this.polygon_id = \"\";\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(MeasureTyArea, _Measure);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(MeasureTyArea, [{\n key: \"start\",\n value:\n /**\r\n * 开始测量\r\n */\n function start() {\n var _this2 = this;\n if (!YJ.Measure.GetMeasureStatus()) {\n _superPropGet(MeasureTyArea, \"start\", this, 3)([]);\n this.ids = [];\n this.positions = [];\n this.text = \"\";\n this.tip.set_text('左键单击确定控制点位置,右键单击取消投影面积测量!');\n this.center = new Cesium.Cartesian3();\n this.cachePositions = [];\n var height = 0;\n var lastArea = 0;\n var lastcneter;\n var leftEvent = function leftEvent(movement, car) {\n if (_this2.ids.length === 0) {\n _this2.polygon_id = MeasureTyArea.create_polygon(_this2);\n }\n _this2.cachePositions.push(_objectSpread({}, car));\n _this2.ids.push(_this2.create_point(_objectSpread({}, car), false));\n var po = _this2.cartesian3Towgs84(_objectSpread({}, car), _this2.viewer);\n if (po.alt > height) {\n height = po.alt;\n }\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n _this2.tip.setPosition(_objectSpread({}, car), movement.position.x, movement.position.y);\n if (_this2.positions.length > 2) {\n var arr = [];\n _this2.positions.forEach(function (item) {\n var p = _this2.cartesian3Towgs84(item, _this2.viewer);\n arr.push({\n lng: p.lng,\n lat: p.lat\n });\n });\n var center = _this2.computeCenter(arr);\n var area = _this2.computeArea(arr);\n lastArea = area;\n _this2.center = new Cesium.Cartesian3.fromDegrees(center.lng, center.lat, height);\n lastcneter = _this2.center;\n _this2.text = \"投影面积:\" + area + \" ㎡\";\n }\n if (_this2.positions.length > 3) {\n _this2.tip.set_text('左键单击确定控制点位置,右键单击完成投影面积测量!');\n }\n };\n this.event.mouse_left(leftEvent);\n this.event.mouse_move(function (movement, car) {\n _this2.tip.setPosition(_objectSpread({}, car), movement.endPosition.x, movement.endPosition.y);\n _this2.positions = _this2.cachePositions.concat(_objectSpread({}, car));\n if (_this2.positions.length > 2) {\n var arr = [];\n _this2.positions.forEach(function (item) {\n var p = _this2.cartesian3Towgs84(item, _this2.viewer);\n arr.push({\n lng: p.lng,\n lat: p.lat\n });\n });\n var center = _this2.computeCenter(arr);\n var area = _this2.computeArea(arr);\n _this2.center = new Cesium.Cartesian3.fromDegrees(center.lng, center.lat, height);\n _this2.text = \"投影面积:\" + area + \" ㎡\";\n }\n });\n this.event.mouse_right(function (movement, car) {\n _this2.positions = _this2.cachePositions;\n _this2.center = lastcneter;\n if (_this2.positions.length < 3) {\n _this2.text = \"\";\n var error = '面积计算至少需要三个坐标!';\n console.warn(error);\n window.ELEMENT && window.ELEMENT.Message({\n message: error,\n type: 'warning',\n duration: 1500\n });\n _this2.destroy();\n } else {\n _this2.text = \"投影面积:\" + lastArea + \" ㎡\";\n }\n _this2.end();\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n var pos = {\n position: {\n x: (movement.position1.x + movement.position2.x) / 2,\n y: (movement.position1.y + movement.position2.y) / 2\n }\n };\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n // 长按取消\n _this2.positions = _this2.cachePositions;\n _this2.end();\n } else {\n leftEvent(pos, cartesian);\n }\n });\n });\n }\n }\n\n /**\r\n * 清除测量\r\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this3 = this;\n [this.polygon_id].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(this.ids)).forEach(function (id) {\n _this3.remove_entity(id);\n });\n _superPropGet(MeasureTyArea, \"destroy\", this, 3)([]);\n }\n\n /**\r\n * 结束测量\r\n */\n }, {\n key: \"end\",\n value: function end() {\n _superPropGet(MeasureTyArea, \"end\", this, 3)([]);\n }\n }], [{\n key: \"create_polygon\",\n value: function create_polygon(that) {\n var id = that.randomString();\n var scaleByDistance = new Cesium.NearFarScalar(2000, 1, 100000, 0);\n var e = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n label: {\n text: new Cesium.CallbackProperty(function () {\n return that.text;\n }, false),\n //标注文字描述\n font: '20px Microsoft YaHei',\n fillColor: Cesium.Color.fromCssColorString('#ffffff'),\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n //标注的遮挡距离设置为100则视角与标注的距离大于100米时会有遮挡\n // distanceDisplayCondition: this.distanceDisplayCondition,\n\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // scaleByDistance,\n scale: 1,\n horizontalOrigin: Cesium.HorizontalOrigin.CENTER,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM\n },\n position: new Cesium.CallbackProperty(function () {\n return that.center;\n }, false),\n polygon: {\n classificationType: Cesium.ClassificationType.BOTH,\n hierarchy: new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy(that.positions);\n }, false),\n material: new Cesium.Color.fromCssColorString(that.options.color || that.defaultColor),\n zIndex: 99999999\n },\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n if (that.positions.length) return that.positions.concat(that.positions[0]);\n return that.positions;\n }, false),\n width: 2,\n material: new Cesium.PolylineDashMaterialProperty({\n color: new Cesium.Color.fromCssColorString(that.options.lineColor || that.defaultColor),\n dashLength: 20 //短划线长度\n }),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }]);\n}(_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (MeasureTyArea);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9NZWFzdXJlVHlBcmVhL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL01lYXN1cmUvTWVhc3VyZVR5QXJlYS9pbmRleC5qcz8zNzg5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbmFtZTogaW5kZXhcclxuICogQGF1dGhvcjogQWRtaW5pc3RyYXRvclxyXG4gKiBAZGF0ZTogMjAyMi0wNy0xMSAxNzoyOFxyXG4gKiBAZGVzY3JpcHRpb27vvJppbmRleFxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTExIDE3OjI4XHJcbiAqL1xyXG5pbXBvcnQgTWVhc3VyZSBmcm9tIFwiLi4vaW5kZXhcIlxyXG5cclxuLyoqQGV4dGVuZHMgTWVhc3VyZSovXHJcbmNsYXNzIE1lYXN1cmVUeUFyZWEgZXh0ZW5kcyBNZWFzdXJlIHtcclxuICAvKipcclxuICAgKiBAY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gc2RrIFxyXG4gICAqIEBkZXNjcmlwdGlvbiDmipXlvbHpnaLnp6/mtYvph49cclxuICAgKiAqL1xyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5vcHRpb25zLmxpbmVDb2xvciA9ICcjZmZkZjUzJ1xyXG4gICAgdGhpcy5wb2x5Z29uX2lkID0gXCJcIlxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZV9wb2x5Z29uKHRoYXQpIHtcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuXHJcbiAgICBsZXQgc2NhbGVCeURpc3RhbmNlID0gbmV3IENlc2l1bS5OZWFyRmFyU2NhbGFyKDIwMDAsIDEsIDEwMDAwMCwgMClcclxuXHJcbiAgICBsZXQgZSA9IHRoYXQudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiBpZCxcclxuICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgdGV4dDogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQudGV4dFxyXG4gICAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgICAgLy/moIfms6jmloflrZfmj4/ov7BcclxuICAgICAgICAgIGZvbnQ6ICcyMHB4IE1pY3Jvc29mdCBZYUhlaScsXHJcbiAgICAgICAgICBmaWxsQ29sb3I6IENlc2l1bS5Db2xvci5mcm9tQ3NzQ29sb3JTdHJpbmcoJyNmZmZmZmYnKSxcclxuICAgICAgICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgICAgLy/moIfms6jnmoTpga7mjKHot53nprvorr7nva7kuLoxMDDliJnop4bop5LkuI7moIfms6jnmoTot53nprvlpKfkuo4xMDDnsbPml7bkvJrmnInpga7mjKFcclxuICAgICAgICAgIC8vIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjogdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sXHJcblxyXG4gICAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXHJcblxyXG4gICAgICAgICAgLy8gc2NhbGVCeURpc3RhbmNlLFxyXG4gICAgICAgICAgc2NhbGU6IDEsXHJcbiAgICAgICAgICBob3Jpem9udGFsT3JpZ2luOiBDZXNpdW0uSG9yaXpvbnRhbE9yaWdpbi5DRU5URVIsXHJcbiAgICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBvc2l0aW9uOiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoYXQuY2VudGVyXHJcbiAgICAgICAgfSwgZmFsc2UpLFxyXG4gICAgICAgIHBvbHlnb246IHtcclxuICAgICAgICAgIGNsYXNzaWZpY2F0aW9uVHlwZTogQ2VzaXVtLkNsYXNzaWZpY2F0aW9uVHlwZS5CT1RILFxyXG4gICAgICAgICAgaGllcmFyY2h5OiBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKGUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeSh0aGF0LnBvc2l0aW9ucylcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMuY29sb3IgfHwgdGhhdC5kZWZhdWx0Q29sb3IpLFxyXG4gICAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoYXQucG9zaXRpb25zLmxlbmd0aClcclxuICAgICAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnMuY29uY2F0KHRoYXQucG9zaXRpb25zWzBdKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhhdC5wb3NpdGlvbnNcclxuICAgICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICAgIGNvbG9yOiBuZXcgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGF0Lm9wdGlvbnMubGluZUNvbG9yIHx8IHRoYXQuZGVmYXVsdENvbG9yKSxcclxuICAgICAgICAgICAgZGFzaExlbmd0aDogMjAsIC8v55+t5YiS57q/6ZW/5bqmXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNsYW1wVG9Hcm91bmQ6IHRydWUsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTk5OTk5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlvIDlp4vmtYvph49cclxuICAgKi9cclxuICBzdGFydCgpIHtcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgc3VwZXIuc3RhcnQoKVxyXG4gICAgICB0aGlzLmlkcyA9IFtdXHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gW11cclxuICAgICAgdGhpcy50ZXh0ID0gXCJcIlxyXG4gICAgICB0aGlzLnRpcC5zZXRfdGV4dCgn5bem6ZSu5Y2V5Ye756Gu5a6a5o6n5Yi254K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75Y+W5raI5oqV5b2x6Z2i56ev5rWL6YePIScpXHJcbiAgICAgIHRoaXMuY2VudGVyID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKClcclxuICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCBoZWlnaHQgPSAwXHJcbiAgICAgIGxldCBsYXN0QXJlYSA9IDBcclxuICAgICAgbGV0IGxhc3RjbmV0ZXJcclxuXHJcbiAgICAgIGxldCBsZWZ0RXZlbnQgPSAobW92ZW1lbnQsIGNhcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMucG9seWdvbl9pZCA9IE1lYXN1cmVUeUFyZWEuY3JlYXRlX3BvbHlnb24odGhpcylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWNoZVBvc2l0aW9ucy5wdXNoKHsgLi4uY2FyIH0pXHJcbiAgICAgICAgdGhpcy5pZHMucHVzaCh0aGlzLmNyZWF0ZV9wb2ludCh7IC4uLmNhciB9LCBmYWxzZSkpXHJcbiAgICAgICAgbGV0IHBvID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh7IC4uLmNhciB9LCB0aGlzLnZpZXdlcilcclxuICAgICAgICBpZiAocG8uYWx0ID4gaGVpZ2h0KSB7XHJcbiAgICAgICAgICBoZWlnaHQgPSBwby5hbHRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXIgfSlcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbih7IC4uLmNhciB9LCBtb3ZlbWVudC5wb3NpdGlvbi54LCBtb3ZlbWVudC5wb3NpdGlvbi55KVxyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9ucy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICBsZXQgYXJyID0gW11cclxuICAgICAgICAgIHRoaXMucG9zaXRpb25zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChpdGVtLCB0aGlzLnZpZXdlcilcclxuICAgICAgICAgICAgYXJyLnB1c2goeyBsbmc6IHAubG5nLCBsYXQ6IHAubGF0IH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IGNlbnRlciA9IHRoaXMuY29tcHV0ZUNlbnRlcihhcnIpXHJcbiAgICAgICAgICBsZXQgYXJlYSA9IHRoaXMuY29tcHV0ZUFyZWEoYXJyKVxyXG4gICAgICAgICAgbGFzdEFyZWEgPSBhcmVhXHJcbiAgICAgICAgICB0aGlzLmNlbnRlciA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjZW50ZXIubG5nLCBjZW50ZXIubGF0LCBoZWlnaHQpXHJcbiAgICAgICAgICBsYXN0Y25ldGVyID0gdGhpcy5jZW50ZXJcclxuICAgICAgICAgIHRoaXMudGV4dCA9IFwi5oqV5b2x6Z2i56ev77yaXCIgKyBhcmVhICsgXCIg446hXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMykge1xyXG4gICAgICAgICAgdGhpcy50aXAuc2V0X3RleHQoJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WujOaIkOaKleW9semdouenr+a1i+mHjyEnKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX2xlZnQobGVmdEV2ZW50KVxyXG4gICAgICB0aGlzLmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICB0aGlzLnRpcC5zZXRQb3NpdGlvbih7IC4uLmNhciB9LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi54LCBtb3ZlbWVudC5lbmRQb3NpdGlvbi55KVxyXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYWNoZVBvc2l0aW9ucy5jb25jYXQoeyAuLi5jYXIgfSlcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgbGV0IGFyciA9IFtdXHJcbiAgICAgICAgICB0aGlzLnBvc2l0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBsZXQgcCA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhpcy52aWV3ZXIpXHJcbiAgICAgICAgICAgIGFyci5wdXNoKHsgbG5nOiBwLmxuZywgbGF0OiBwLmxhdCB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxldCBjZW50ZXIgPSB0aGlzLmNvbXB1dGVDZW50ZXIoYXJyKVxyXG4gICAgICAgICAgbGV0IGFyZWEgPSB0aGlzLmNvbXB1dGVBcmVhKGFycilcclxuICAgICAgICAgIHRoaXMuY2VudGVyID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGNlbnRlci5sbmcsIGNlbnRlci5sYXQsIGhlaWdodClcclxuICAgICAgICAgIHRoaXMudGV4dCA9IFwi5oqV5b2x6Z2i56ev77yaXCIgKyBhcmVhICsgXCIg446hXCJcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXIpID0+IHtcclxuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnNcclxuICAgICAgICB0aGlzLmNlbnRlciA9IGxhc3RjbmV0ZXJcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgdGhpcy50ZXh0ID0gXCJcIlxyXG4gICAgICAgICAgbGV0IGVycm9yID0gJ+mdouenr+iuoeeul+iHs+WwkemcgOimgeS4ieS4quWdkOagh++8gSdcclxuICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvcilcclxuICAgICAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvcixcclxuICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxyXG4gICAgICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRlc3Ryb3koKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGV4dCA9IFwi5oqV5b2x6Z2i56ev77yaXCIgKyBsYXN0QXJlYSArIFwiIOOOoVwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5ldmVudC5nZXN0dXJlX3BpbmNrX3N0YXJ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKClcclxuICAgICAgICBsZXQgcG9zID0ge1xyXG4gICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgeDogKG1vdmVtZW50LnBvc2l0aW9uMS54ICsgbW92ZW1lbnQucG9zaXRpb24yLngpIC8gMixcclxuICAgICAgICAgICAgeTogKG1vdmVtZW50LnBvc2l0aW9uMS55ICsgbW92ZW1lbnQucG9zaXRpb24yLnkpIC8gMlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfZW5kKCgpID0+IHtcclxuICAgICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgICAgaWYgKGVuZFRpbWUgLSBzdGFydFRpbWUgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIC8vIOmVv+aMieWPlua2iFxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuY2FjaGVQb3NpdGlvbnNcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlZnRFdmVudChwb3MsIGNhcnRlc2lhbilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk5rWL6YePXHJcbiAgICovXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIFt0aGlzLnBvbHlnb25faWQsIC4uLnRoaXMuaWRzXS5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmVfZW50aXR5KGlkKVxyXG4gICAgfSlcclxuICAgIHN1cGVyLmRlc3Ryb3koKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog57uT5p2f5rWL6YePXHJcbiAgICovXHJcbiAgZW5kKCkge1xyXG4gICAgc3VwZXIuZW5kKClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVUeUFyZWFcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBOUtBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUE0SEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/MeasureTyArea/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/clear.js":
-/*!******************************!*\
- !*** ./src/Measure/clear.js ***!
- \******************************/
-/*! exports provided: Clear */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Clear\", function() { return Clear; });\n/**\r\n * @name: clear\r\n * @author: Administrator\r\n * @date: 2022-07-11 15:28\r\n * @description:clear\r\n * @update: 2022-07-11 15:28\r\n */\n\nfunction Clear() {\n YJ.Measure.Measures.forEach(function (m) {\n m.destroy();\n });\n YJ.Measure.Measures = [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9jbGVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL2NsZWFyLmpzP2NkMzAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBuYW1lOiBjbGVhclxyXG4gKiBAYXV0aG9yOiBBZG1pbmlzdHJhdG9yXHJcbiAqIEBkYXRlOiAyMDIyLTA3LTExIDE1OjI4XHJcbiAqIEBkZXNjcmlwdGlvbu+8mmNsZWFyXHJcbiAqIEB1cGRhdGU6IDIwMjItMDctMTEgMTU6MjhcclxuICovXHJcblxyXG5mdW5jdGlvbiBDbGVhcigpIHtcclxuICBZSi5NZWFzdXJlLk1lYXN1cmVzLmZvckVhY2gobSA9PiB7XHJcbiAgICBtLmRlc3Ryb3koKVxyXG4gIH0pXHJcbiAgWUouTWVhc3VyZS5NZWFzdXJlcyA9IFtdXHJcbn1cclxuXHJcbmV4cG9ydCB7Q2xlYXJ9XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Measure/clear.js\n");
-
-/***/ }),
-
-/***/ "./src/Measure/index.js":
-/*!******************************!*\
- !*** ./src/Measure/index.js ***!
- \******************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Tools */ \"./src/Tools/index.js\");\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n/**\r\n * @name: measure\r\n * @author: Administrator\r\n * @date: 2022-07-11 10:52\r\n * @description:measure\r\n * @update: 2022-07-11 10:52\r\n */\nvar Measure = /*#__PURE__*/function (_Tools) {\n function Measure(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n text: \"左键开始,右键结束;\"\n };\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Measure);\n _this = _callSuper(this, Measure, [sdk, options]);\n _this.options = _objectSpread({}, options);\n _this.event = new _Event__WEBPACK_IMPORTED_MODULE_6__[\"default\"](sdk);\n _this.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_7__[\"default\"](options.text, sdk);\n _this.viewer = sdk.viewer;\n _this.defaultColor = 'rgba(246,49,49,0.55)';\n _this.ids = [];\n YJ.Measure.Measures.push(_this);\n _this._isDestroy = false;\n // this.pickStatus = {pick: YJ.getEarth().interaction.picking.enabled}\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Measure, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Measure, [{\n key: \"start\",\n value: function start() {\n this.setPickStatus(false);\n YJ.Measure.SetMeasureStatus(true);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n // YJ.Measure.Measures.pop()\n this._isDestroy = true;\n this.end();\n this.ids.forEach(function (id) {\n _this2.remove_entity(id);\n });\n }\n }, {\n key: \"end\",\n value: function end() {\n // this.ids.forEach(id => {\n // this.remove_entity(id)\n // })\n //还原上一次的状态\n // this.setPickStatus(this.pickStatus.pick)\n YJ.Measure.SetMeasureStatus(false);\n this.tip && this.tip.destroy();\n this.event && this.event.destroy();\n this.tip = null;\n this.event = null;\n }\n }, {\n key: \"create_point\",\n value: function create_point(cartesian) {\n var show = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var id = this.randomString();\n var p = this.cartesian3Towgs84(cartesian, this.viewer);\n this.viewer.entities.add(new Cesium.Entity({\n id: id,\n position: Cesium.Cartesian3.fromDegrees(p.lng, p.lat, p.alt),\n billboard: {\n show: show,\n image: this.getSourceRootPath() + '/img/point.png',\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n color: Cesium.Color.WHITE.withAlpha(0.99)\n }\n }));\n return id;\n }\n }, {\n key: \"remove_entity\",\n value: function remove_entity(id) {\n this.viewer.entities.removeById(id);\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Measure);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTWVhc3VyZS9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9NZWFzdXJlL2luZGV4LmpzPzgxOTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vdXNlRXZlbnQgZnJvbSBcIi4uL0V2ZW50XCI7XHJcbmltcG9ydCBNb3VzZVRpcCBmcm9tIFwiLi4vTW91c2VUaXBcIjtcclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi9Ub29sc1wiO1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lOiBtZWFzdXJlXHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDctMTEgMTA6NTJcclxuICogQGRlc2NyaXB0aW9u77yabWVhc3VyZVxyXG4gKiBAdXBkYXRlOiAyMDIyLTA3LTExIDEwOjUyXHJcbiAqL1xyXG5cclxuY2xhc3MgTWVhc3VyZSBleHRlbmRzIFRvb2xzIHtcclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7dGV4dDogXCLlt6bplK7lvIDlp4vvvIzlj7PplK7nu5PmnZ87XCJ9KSB7XHJcbiAgICBzdXBlcihzZGssIG9wdGlvbnMpXHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7Li4ub3B0aW9uc31cclxuICAgIHRoaXMuZXZlbnQgPSBuZXcgTW91c2VFdmVudChzZGspXHJcbiAgICB0aGlzLnRpcCA9IG5ldyBNb3VzZVRpcChvcHRpb25zLnRleHQsIHNkaylcclxuICAgIHRoaXMudmlld2VyID0gc2RrLnZpZXdlclxyXG4gICAgdGhpcy5kZWZhdWx0Q29sb3IgPSAncmdiYSgyNDYsNDksNDksMC41NSknXHJcbiAgICB0aGlzLmlkcyA9IFtdXHJcbiAgICBZSi5NZWFzdXJlLk1lYXN1cmVzLnB1c2godGhpcylcclxuICAgIHRoaXMuX2lzRGVzdHJveSA9IGZhbHNlXHJcbiAgICAvLyB0aGlzLnBpY2tTdGF0dXMgPSB7cGljazogWUouZ2V0RWFydGgoKS5pbnRlcmFjdGlvbi5waWNraW5nLmVuYWJsZWR9XHJcbiAgfVxyXG5cclxuICBzdGFydCgpIHtcclxuICAgIHRoaXMuc2V0UGlja1N0YXR1cyhmYWxzZSlcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyh0cnVlKVxyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIC8vIFlKLk1lYXN1cmUuTWVhc3VyZXMucG9wKClcclxuICAgIHRoaXMuX2lzRGVzdHJveSA9IHRydWVcclxuICAgIHRoaXMuZW5kKClcclxuICAgIHRoaXMuaWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZV9lbnRpdHkoaWQpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIGVuZCgpIHtcclxuICAgIC8vIHRoaXMuaWRzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgLy8gICB0aGlzLnJlbW92ZV9lbnRpdHkoaWQpXHJcbiAgICAvLyB9KVxyXG4gICAgLy/ov5jljp/kuIrkuIDmrKHnmoTnirbmgIFcclxuICAgIC8vIHRoaXMuc2V0UGlja1N0YXR1cyh0aGlzLnBpY2tTdGF0dXMucGljaylcclxuICAgIFlKLk1lYXN1cmUuU2V0TWVhc3VyZVN0YXR1cyhmYWxzZSlcclxuICAgIHRoaXMudGlwICYmIHRoaXMudGlwLmRlc3Ryb3koKVxyXG4gICAgdGhpcy5ldmVudCAmJiB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAgPSBudWxsXHJcbiAgICB0aGlzLmV2ZW50ID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgY3JlYXRlX3BvaW50KGNhcnRlc2lhbixzaG93ID0gdHJ1ZSkge1xyXG4gICAgbGV0IGlkID0gdGhpcy5yYW5kb21TdHJpbmcoKVxyXG4gICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbiwgdGhpcy52aWV3ZXIpXHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHAubG5nLCBwLmxhdCwgcC5hbHQpLFxyXG4gICAgICAgIGJpbGxib2FyZDoge1xyXG4gICAgICAgICAgc2hvdzogc2hvdyxcclxuICAgICAgICAgIGltYWdlOiB0aGlzLmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9wb2ludC5wbmcnLFxyXG4gICAgICAgICAgdmVydGljYWxPcmlnaW46IENlc2l1bS5WZXJ0aWNhbE9yaWdpbi5CT1RUT00sXHJcbiAgICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0hJVEUud2l0aEFscGhhKDAuOTkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG5cclxuICByZW1vdmVfZW50aXR5KGlkKSB7XHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmVCeUlkKGlkKVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1lYXN1cmVcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Measure/index.js\n");
-
-/***/ }),
-
-/***/ "./src/MouseTip/index.js":
-/*!*******************************!*\
- !*** ./src/MouseTip/index.js ***!
- \*******************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MouseTip; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Tools */ \"./src/Tools/index.js\");\n\n\n/**\r\n * @name: index\r\n * @author: Administrator\r\n * @date: 2022-06-14 14:37\r\n * @description:index\r\n * @update: 2022-06-14 14:37\r\n */\n\n\n//鼠标tip\nvar MouseTip = /*#__PURE__*/function () {\n function MouseTip() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '左键开始,右键结束';\n var sdk = arguments.length > 1 ? arguments[1] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MouseTip);\n this.point = undefined;\n this.text = text;\n this.div = undefined;\n this.mouse_type = 0;\n this.position = new Cesium.Cartesian3();\n this.viewer = sdk.viewer;\n this.create_tip(this.viewer);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(MouseTip, [{\n key: \"set_text\",\n value: function set_text(text) {\n var textElm = this.div.getElementsByTagName('p')[0];\n textElm.innerText = text;\n }\n }, {\n key: \"get_mouse_style\",\n value: function get_mouse_style(type) {\n var url = 'lib/img/';\n var style = ''; //默认的鼠标箭头样式\n switch (type) {\n case 1:\n style = 'move.png'; //移动样式\n break;\n default:\n style = 'arrow.png';\n break;\n }\n return 'url(' + url + style + '),auto';\n }\n }, {\n key: \"create_tip\",\n value: function create_tip(viewer) {\n // let tool = new Tools()\n // this.point = viewer.entities.add(\n // new Cesium.Entity({\n // position: new Cesium.CallbackProperty(() => {\n // return this.position\n // }, false),\n // billboard: {\n // image: tool.getSourceRootPath() + '/img/point.png',\n // verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // disableDepthTestDistance: 100000000\n // }\n // })\n // )\n // tool = null\n // this.style_tip(viewer, this.mouse_type)\n this.create_tooltip();\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(position, x, y) {\n this.position = position;\n this.move_tooltip(x, y);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.viewer.entities.remove(this.point);\n this.remove_tooltip();\n // this.style_tip(viewer)\n }\n }, {\n key: \"create_tooltip\",\n value: function create_tooltip() {\n var tool = new _Tools__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n this.div = document.createElement('div');\n var c = \"#ec131a\";\n this.div.setAttribute('style', 'position: absolute;z-index: 777;color: ' + c + ';left:10px;top:0px;pointer-events: none;');\n var textElm = document.createElement('p');\n textElm.style.margin = '0px';\n textElm.style.padding = '0px';\n textElm.innerText = this.text;\n this.div.appendChild(textElm);\n var imgElm = document.createElement('div');\n imgElm.style.width = '12px';\n imgElm.style.height = '12px';\n imgElm.style.background = \"url(\".concat(tool.getSourceRootPath() + '/img/point.png', \") 100% 100% no-repeat\");\n imgElm.style.backgroundSize = '100% 100%';\n imgElm.style.position = 'absolute';\n imgElm.style.left = '-36px';\n imgElm.style.top = '-4px';\n this.div.style.display = 'none';\n this.div.appendChild(imgElm);\n tool = null;\n document.querySelector('body').appendChild(this.div);\n }\n\n /*移动时的鼠标样式*/\n }, {\n key: \"style_tip\",\n value: function style_tip(viewer) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n viewer._element.style.cursor = this.get_mouse_style(type);\n }\n }, {\n key: \"remove_tooltip\",\n value: function remove_tooltip() {\n document.querySelector('body').contains(this.div) && document.querySelector('body').removeChild(this.div);\n }\n }, {\n key: \"move_tooltip\",\n value: function move_tooltip(x, y) {\n var top = 0;\n var left = 0;\n this.div.style.display = 'block';\n if (this.viewer && this.viewer._element) {\n var element = this.viewer._element.getElementsByClassName('cesium-widget')[0].getElementsByTagName('canvas')[0];\n top = element.getBoundingClientRect().top + window.scrollY;\n left = element.getBoundingClientRect().left + window.scrollX;\n }\n this.div.style.left = x + 30 + left + 'px';\n this.div.style.top = y + top + 'px';\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvTW91c2VUaXAvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvTW91c2VUaXAvaW5kZXguanM/MzU1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQG5hbWU6IGluZGV4XHJcbiAqIEBhdXRob3I6IEFkbWluaXN0cmF0b3JcclxuICogQGRhdGU6IDIwMjItMDYtMTQgMTQ6MzdcclxuICogQGRlc2NyaXB0aW9u77yaaW5kZXhcclxuICogQHVwZGF0ZTogMjAyMi0wNi0xNCAxNDozN1xyXG4gKi9cclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi9Ub29sc1wiO1xyXG5cclxuLy/pvKDmoId0aXBcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW91c2VUaXAge1xyXG4gIGNvbnN0cnVjdG9yKHRleHQgPSAn5bem6ZSu5byA5aeL77yM5Y+z6ZSu57uT5p2fJywgc2RrKSB7XHJcbiAgICB0aGlzLnBvaW50ID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLnRleHQgPSB0ZXh0XHJcbiAgICB0aGlzLmRpdiA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5tb3VzZV90eXBlID0gMFxyXG4gICAgdGhpcy5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcblxyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLmNyZWF0ZV90aXAodGhpcy52aWV3ZXIpXHJcbiAgfVxyXG5cclxuICBzZXRfdGV4dCh0ZXh0KSB7XHJcbiAgICBsZXQgdGV4dEVsbSA9IHRoaXMuZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwJylbMF1cclxuICAgIHRleHRFbG0uaW5uZXJUZXh0ID0gdGV4dFxyXG4gIH1cclxuXHJcbiAgZ2V0X21vdXNlX3N0eWxlKHR5cGUpIHtcclxuICAgIGxldCB1cmwgPSAnbGliL2ltZy8nXHJcbiAgICBsZXQgc3R5bGUgPSAnJyAvL+m7mOiupOeahOm8oOagh+eureWktOagt+W8j1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICBzdHlsZSA9ICdtb3ZlLnBuZycgLy/np7vliqjmoLflvI9cclxuICAgICAgICBicmVha1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdHlsZSA9ICdhcnJvdy5wbmcnXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICAgIHJldHVybiAndXJsKCcgKyB1cmwgKyBzdHlsZSArICcpLGF1dG8nXHJcbiAgfVxyXG5cclxuICBjcmVhdGVfdGlwKHZpZXdlcikge1xyXG4gICAgLy8gbGV0IHRvb2wgPSBuZXcgVG9vbHMoKVxyXG4gICAgLy8gdGhpcy5wb2ludCA9IHZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAvLyAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgIC8vICAgICBwb3NpdGlvbjogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgIC8vICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uXHJcbiAgICAvLyAgICAgfSwgZmFsc2UpLFxyXG4gICAgLy8gICAgIGJpbGxib2FyZDoge1xyXG4gICAgLy8gICAgICAgaW1hZ2U6IHRvb2wuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZycsXHJcbiAgICAvLyAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgIC8vICAgICAgIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTogMTAwMDAwMDAwXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gdG9vbCA9IG51bGxcclxuICAgIC8vIHRoaXMuc3R5bGVfdGlwKHZpZXdlciwgdGhpcy5tb3VzZV90eXBlKVxyXG4gICAgdGhpcy5jcmVhdGVfdG9vbHRpcCgpXHJcbiAgfVxyXG5cclxuICBzZXRQb3NpdGlvbihwb3NpdGlvbiwgeCwgeSkge1xyXG4gICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uXHJcbiAgICB0aGlzLm1vdmVfdG9vbHRpcCh4LCB5KVxyXG4gIH1cclxuXHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnBvaW50KVxyXG4gICAgdGhpcy5yZW1vdmVfdG9vbHRpcCgpXHJcbiAgICAvLyB0aGlzLnN0eWxlX3RpcCh2aWV3ZXIpXHJcbiAgfVxyXG5cclxuICBjcmVhdGVfdG9vbHRpcCgpIHtcclxuICAgIGxldCB0b29sID0gbmV3IFRvb2xzKClcclxuICAgIHRoaXMuZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcclxuICAgIGxldCBjID0gXCIjZWMxMzFhXCJcclxuICAgIHRoaXMuZGl2LnNldEF0dHJpYnV0ZShcclxuICAgICAgJ3N0eWxlJyxcclxuICAgICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiA3Nzc7Y29sb3I6ICcgKyBjICsgJztsZWZ0OjEwcHg7dG9wOjBweDtwb2ludGVyLWV2ZW50czogbm9uZTsnXHJcbiAgICApXHJcbiAgICBsZXQgdGV4dEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKVxyXG4gICAgdGV4dEVsbS5zdHlsZS5tYXJnaW4gPSAnMHB4J1xyXG4gICAgdGV4dEVsbS5zdHlsZS5wYWRkaW5nID0gJzBweCdcclxuICAgIHRleHRFbG0uaW5uZXJUZXh0ID0gdGhpcy50ZXh0XHJcbiAgICB0aGlzLmRpdi5hcHBlbmRDaGlsZCh0ZXh0RWxtKVxyXG4gICAgbGV0IGltZ0VsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXHJcbiAgICBpbWdFbG0uc3R5bGUud2lkdGggPSAnMTJweCdcclxuICAgIGltZ0VsbS5zdHlsZS5oZWlnaHQgPSAnMTJweCdcclxuICAgIGltZ0VsbS5zdHlsZS5iYWNrZ3JvdW5kID0gYHVybCgke3Rvb2wuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL3BvaW50LnBuZyd9KSAxMDAlIDEwMCUgbm8tcmVwZWF0YFxyXG4gICAgaW1nRWxtLnN0eWxlLmJhY2tncm91bmRTaXplID0gJzEwMCUgMTAwJSdcclxuICAgIGltZ0VsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcclxuICAgIGltZ0VsbS5zdHlsZS5sZWZ0ID0gJy0zNnB4J1xyXG4gICAgaW1nRWxtLnN0eWxlLnRvcCA9ICctNHB4J1xyXG4gICAgdGhpcy5kaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xyXG4gICAgdGhpcy5kaXYuYXBwZW5kQ2hpbGQoaW1nRWxtKVxyXG4gICAgdG9vbCA9IG51bGxcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKS5hcHBlbmRDaGlsZCh0aGlzLmRpdilcclxuICB9XHJcblxyXG4gIC8q56e75Yqo5pe255qE6byg5qCH5qC35byPKi9cclxuICBzdHlsZV90aXAodmlld2VyLCB0eXBlID0gMCkge1xyXG4gICAgdmlld2VyLl9lbGVtZW50LnN0eWxlLmN1cnNvciA9IHRoaXMuZ2V0X21vdXNlX3N0eWxlKHR5cGUpXHJcbiAgfVxyXG5cclxuICByZW1vdmVfdG9vbHRpcCgpIHtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKS5jb250YWlucyh0aGlzLmRpdikgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLnJlbW92ZUNoaWxkKHRoaXMuZGl2KVxyXG4gIH1cclxuXHJcbiAgbW92ZV90b29sdGlwKHgsIHkpIHtcclxuICAgIGxldCB0b3AgPSAwXHJcbiAgICBsZXQgbGVmdCA9IDBcclxuICAgIHRoaXMuZGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXHJcblxyXG4gICAgaWYgKHRoaXMudmlld2VyICYmIHRoaXMudmlld2VyLl9lbGVtZW50KSB7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy52aWV3ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY2VzaXVtLXdpZGdldCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXVxyXG4gICAgICB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZXHJcbiAgICAgIGxlZnQgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyB3aW5kb3cuc2Nyb2xsWFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGl2LnN0eWxlLmxlZnQgPSB4ICsgMzAgKyBsZWZ0ICsgJ3B4J1xyXG4gICAgdGhpcy5kaXYuc3R5bGUudG9wID0geSArIHRvcCArICdweCdcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/MouseTip/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/AirLine/DrawTakeOff.js":
-/*!****************************************!*\
- !*** ./src/Obj/AirLine/DrawTakeOff.js ***!
- \****************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _MouseTip_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../MouseTip/index */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Event_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../Event/index */ \"./src/Event/index.js\");\n/* harmony import */ var _Draw_draw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../Draw/draw */ \"./src/Draw/draw.js\");\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar DrawTakeOff = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor\r\n * @desc 获取坐标点\r\n * */\n function DrawTakeOff(sdk) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, DrawTakeOff);\n _this = _callSuper(this, DrawTakeOff, [sdk, options]);\n _this.options.tipText = options.tipText ? options.tipText : '左键确定,右键结束;';\n return _this;\n }\n\n /**\r\n * @desc 开始动态获取坐标点\r\n * @method start\r\n * @param cb {function} 回调函数\r\n * @memberOf DrawPoint\r\n * @example draw.start((err,position)=>{\r\n *\r\n * })\r\n * */\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(DrawTakeOff, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(DrawTakeOff, [{\n key: \"start\",\n value: function start(cb) {\n var _this2 = this;\n // eslint-disable-next-line no-undef\n if (YJ.Measure.GetMeasureStatus()) {\n cb('上一次测量未结束');\n } else {\n var car = undefined;\n // eslint-disable-next-line no-undef\n YJ.Measure.SetMeasureStatus(true);\n // this.options\n this.tip = new _MouseTip_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"](this.options.tipText, this.sdk);\n this.event = new _Event_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.sdk);\n this.isEntity = false;\n this.event.mouse_left(function (movement, cartesian) {\n _this2.end();\n var p = _this2.cartesian3Towgs84(car || cartesian, _this2.viewer);\n var pickedObject = _this2.viewer.scene.pick(movement.position);\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id.id === window.airportEntity.options.id) {\n _this2.isEntity = true;\n }\n cb(null, p, _this2.isEntity);\n });\n this.event.mouse_right(function (movement, cartesian) {\n _this2.end();\n cb(false);\n });\n this.event.mouse_move(function (movement, cartesian) {\n car = cartesian;\n _this2.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n this.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n _this2.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n _this2.end();\n cb(false);\n } else {\n _this2.end();\n var p = _this2.cartesian3Towgs84(car || cartesian, _this2.viewer);\n cb(null, p);\n }\n });\n });\n }\n }\n }, {\n key: \"end\",\n value: function end() {\n YJ.Measure.SetMeasureStatus(false);\n this.event.destroy();\n this.tip.destroy();\n }\n }]);\n}(_Draw_draw__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (DrawTakeOff);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvRHJhd1Rha2VPZmYuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FpckxpbmUvRHJhd1Rha2VPZmYuanM/NzgwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTW91c2VUaXAgZnJvbSAnLi4vLi4vTW91c2VUaXAvaW5kZXgnXHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gJy4uLy4uL0V2ZW50L2luZGV4J1xyXG5pbXBvcnQgRHJhdyBmcm9tICcuLi8uLi9EcmF3L2RyYXcnXHJcblxyXG5jbGFzcyBEcmF3VGFrZU9mZiBleHRlbmRzIERyYXcge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvclxyXG4gICAqIEBkZXNjIOiOt+WPluWdkOagh+eCuVxyXG4gICAqICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuICAgIHRoaXMub3B0aW9ucy50aXBUZXh0ID0gb3B0aW9ucy50aXBUZXh0XHJcbiAgICAgID8gb3B0aW9ucy50aXBUZXh0XHJcbiAgICAgIDogJ+W3pumUruehruWumu+8jOWPs+mUrue7k+adn++8mydcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjIOW8gOWni+WKqOaAgeiOt+WPluWdkOagh+eCuVxyXG4gICAqIEBtZXRob2Qgc3RhcnRcclxuICAgKiBAcGFyYW0gY2Ige2Z1bmN0aW9ufSDlm57osIPlh73mlbBcclxuICAgKiBAbWVtYmVyT2YgRHJhd1BvaW50XHJcbiAgICogQGV4YW1wbGUgZHJhdy5zdGFydCgoZXJyLHBvc2l0aW9uKT0+e1xyXG4gICAqXHJcbiAgICogfSlcclxuICAgKiAqL1xyXG5cclxuICBzdGFydChjYikge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY2IoJ+S4iuS4gOasoea1i+mHj+acque7k+adnycpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgY2FyID0gdW5kZWZpbmVkXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXModHJ1ZSlcclxuICAgICAgLy8gdGhpcy5vcHRpb25zXHJcbiAgICAgIHRoaXMudGlwID0gbmV3IE1vdXNlVGlwKHRoaXMub3B0aW9ucy50aXBUZXh0LCB0aGlzLnNkaylcclxuICAgICAgdGhpcy5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoaXMuc2RrKVxyXG4gICAgICB0aGlzLmlzRW50aXR5ID0gZmFsc2VcclxuICAgICAgdGhpcy5ldmVudC5tb3VzZV9sZWZ0KChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgIGxldCBwID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NChjYXIgfHwgY2FydGVzaWFuLCB0aGlzLnZpZXdlcilcclxuICAgICAgICB2YXIgcGlja2VkT2JqZWN0ID0gdGhpcy52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QpICYmXHJcbiAgICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QuaWQpICYmXHJcbiAgICAgICAgICBwaWNrZWRPYmplY3QuaWQuaWQgPT09IHdpbmRvdy5haXJwb3J0RW50aXR5Lm9wdGlvbnMuaWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaXNFbnRpdHkgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNiKG51bGwsIHAsIHRoaXMuaXNFbnRpdHkpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGlzLmVuZCgpXHJcbiAgICAgICAgY2IoZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZXZlbnQubW91c2VfbW92ZSgobW92ZW1lbnQsIGNhcnRlc2lhbikgPT4ge1xyXG4gICAgICAgIGNhciA9IGNhcnRlc2lhblxyXG4gICAgICAgIHRoaXMudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoaXMuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKVxyXG4gICAgICAgICAgICBjYihmYWxzZSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKClcclxuICAgICAgICAgICAgbGV0IHAgPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KGNhciB8fCBjYXJ0ZXNpYW4sIHRoaXMudmlld2VyKVxyXG4gICAgICAgICAgICBjYihudWxsLCBwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmQoKSB7XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgICB0aGlzLmV2ZW50LmRlc3Ryb3koKVxyXG4gICAgdGhpcy50aXAuZGVzdHJveSgpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcmF3VGFrZU9mZlxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/DrawTakeOff.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/AirLine/billord_point_line.js":
-/*!***********************************************!*\
- !*** ./src/Obj/AirLine/billord_point_line.js ***!
- \***********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BillordPointLine; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar BillordPointLine = /*#__PURE__*/function () {\n function BillordPointLine(options, viewer) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, BillordPointLine);\n this.options = _objectSpread({}, options);\n this.pointEntity = null;\n this.billboardEntity = null;\n this.lineEntity = null;\n this.updatedPosition = [];\n this.pointUpdatedPosition = [];\n this.viewer = viewer;\n this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);\n this.pinBuilder = new Cesium.PinBuilder();\n this.index = null;\n //定义屏幕点击事件处理器\n BillordPointLine.setDefaultValue(this);\n BillordPointLine.init(this);\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(BillordPointLine, [{\n key: \"changeAltitude\",\n value:\n // 改变高度\n function changeAltitude() {\n var isMouseDown = false;\n var startPosition;\n var initialHeight;\n var that = this;\n var HHH = false;\n // 标识Alt键是否被按下\n document.addEventListener('keydown', function (event) {\n var key = event.key; // 获取按下的键名\n // 检查特定键是否被按下\n if (key === 'h') {\n HHH = true;\n }\n });\n document.addEventListener('keyup', function (event) {\n HHH = false;\n });\n // 按下鼠标左键\n this.handler.setInputAction(function (movement) {\n var pickedObject = that.viewer.scene.pick(movement.position);\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id === that.billboardEntity) {\n isMouseDown = true;\n startPosition = movement.position;\n\n // 获取Billboard当前的地理高度\n var positionCartographic = Cesium.Cartographic.fromCartesian(that.billboardEntity.position.getValue());\n initialHeight = positionCartographic.height;\n }\n }, Cesium.ScreenSpaceEventType.LEFT_DOWN);\n // 移动鼠标\n this.handler.setInputAction(function (movement) {\n if (isMouseDown && HHH == false) {\n // 移动位置\n var newCartesian = that.viewer.scene.pickPosition(movement.endPosition);\n that.disableCameraDrag(that.viewer, false);\n if (newCartesian) {\n var newCartographic = Cesium.Cartographic.fromCartesian(newCartesian);\n // 保持高度不变\n var newLongitude = newCartographic.longitude;\n var newLatitude = newCartographic.latitude;\n var updatedPosition = Cesium.Cartesian3.fromRadians(newLongitude, newLatitude, initialHeight);\n var pointUpdatedPosition = Cesium.Cartesian3.fromRadians(newLongitude, newLatitude, 0);\n that.billboardEntity.position = new Cesium.CallbackProperty(function () {\n return updatedPosition;\n }, false);\n that.billboardEntity.label.text = \"Lat: \".concat(Cesium.Math.toDegrees(newLongitude).toFixed(6), \"\\nLon: \").concat(Cesium.Math.toDegrees(newLatitude).toFixed(6), \"\\nAlt: \").concat(initialHeight.toFixed(2), \"m\");\n that.pointEntity.position = new Cesium.CallbackProperty(function () {\n return pointUpdatedPosition;\n }, false);\n }\n }\n if (isMouseDown && HHH) {\n console.log(HHH);\n // 改变高度\n var endPosition = movement.endPosition;\n var deltaY = startPosition.y - endPosition.y; // 计算Y轴方向上的移动距离\n // 根据鼠标移动的距离来调整高度\n var newHeight = initialHeight + deltaY;\n // 更新billboard位置\n var positionCartographic = Cesium.Cartographic.fromCartesian(that.billboardEntity.position.getValue());\n var newPosition = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(positionCartographic.longitude), Cesium.Math.toDegrees(positionCartographic.latitude), newHeight);\n // 禁用相机\n that.disableCameraDrag(that.viewer, false);\n that.billboardEntity.position = new Cesium.CallbackProperty(function () {\n return newPosition;\n }, false);\n that.billboardEntity.label.text = \"Lat: \".concat(Cesium.Math.toDegrees(positionCartographic.longitude).toFixed(6), \"\\nLon: \").concat(Cesium.Math.toDegrees(positionCartographic.latitude).toFixed(6), \"\\nAlt: \").concat(newHeight.toFixed(2), \"m\");\n }\n }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);\n // 松开鼠标左键\n this.handler.setInputAction(function (movement) {\n var pickedObject = that.viewer.scene.pick(movement.position);\n isMouseDown = false; // 禁用相机\n HHH = false; //\n that.disableCameraDrag(that.viewer, true);\n // 更新frustum的位置\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id === that.billboardEntity) {\n if (that.options.saveFun) {\n that.options.saveFun(null, false);\n }\n if (that.options.selectFun) {\n that.options.selectFun(that.billboardEntity.index - 1);\n }\n that.options.frustum.updatePositionHeight(that.billboardEntity.position.getValue());\n }\n }, Cesium.ScreenSpaceEventType.LEFT_UP);\n }\n }, {\n key: \"disableCameraDrag\",\n value: function disableCameraDrag(viewer, bool) {\n viewer.scene.screenSpaceCameraController.enableRotate = bool;\n viewer.scene.screenSpaceCameraController.enableTranslate = bool;\n viewer.scene.screenSpaceCameraController.enableZoom = bool;\n viewer.scene.screenSpaceCameraController.enableTilt = bool;\n viewer.scene.screenSpaceCameraController.enableLook = bool;\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n }\n /**\r\n * @param {boolean} bool\r\n */,\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this.pointEntity.show = bool;\n this.billboardEntity.show = bool;\n this.lineEntity.show = bool;\n }\n }\n }, {\n key: \"remove\",\n value: function remove() {\n this.viewer.entities.remove(this.pointEntity);\n this.viewer.entities.remove(this.billboardEntity);\n this.viewer.entities.remove(this.lineEntity);\n }\n }], [{\n key: \"setDefaultValue\",\n value: function setDefaultValue(that) {\n var _that$options$keyboar;\n that.options.positions = that.options.positions || {};\n that.options.normalHeight = that.options.normalHeight || 100;\n that.options.airHeight = that.options.airHeight || 100;\n that.options.image = that.options.image || '/static/img/cluster2.png';\n that.options.show = that.options.show || true;\n that.options.index = that.options.index || 1;\n that.options.saveFun = that.options.saveFun || null;\n that.options.selectFun = that.options.selectFun || null;\n that.options.keyboard = (_that$options$keyboar = that.options.keyboard) !== null && _that$options$keyboar !== void 0 ? _that$options$keyboar : true;\n that.options.updateFrustumFun = that.options.updateFrustumFun || null;\n that.options.frustum = that.options.frustum || null;\n }\n }, {\n key: \"init\",\n value: function init(that) {\n var positions = that.options.positions;\n // 添加一个Point,稍微偏离地面高度,使其完全可见\n that.pointEntity = that.viewer.entities.add({\n show: that.options.show,\n position: Cesium.Cartesian3.fromDegrees(positions.lng, positions.lat, 0),\n // 地面上\n point: {\n pixelSize: 8,\n color: Cesium.Color.WITHE,\n heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,\n // 使用相对地面或贴地,\n disableDepthTestDistance: 0\n }\n });\n //\n var pinIndex = that.pinBuilder.fromText(that.options.index, Cesium.Color.fromCssColorString('#00d590'), 36).toDataURL();\n var altitude = 0;\n if (positions.altitude) {\n altitude = positions.altitude;\n } else {\n altitude = that.options.normalHeight;\n }\n // 添加一个Billboard\n that.billboardEntity = that.viewer.entities.add({\n show: that.options.show,\n position: Cesium.Cartesian3.fromDegrees(positions.lng, positions.lat, positions.alt + that.options.normalHeight),\n // 判断altitude是否有值\n\n label: {\n text: \"Lat: \".concat(positions.lng.toFixed(8), \"\\nLon: \").concat(positions.lat.toFixed(8), \"\\nAlt: \").concat(altitude.toFixed(8), \"m\"),\n font: '14px sans-serif',\n fillColor: Cesium.Color.YELLOW,\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 2,\n pixelOffset: new Cesium.Cartesian2(0, -60),\n // 标签偏移量,防止重叠\n heightReference: Cesium.HeightReference.RELATIVE_TO_TERRAIN,\n // 确保标签与地面贴合\n show: false\n },\n billboard: {\n image: pinIndex,\n // 示例图像路径\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n // 图像底部对齐\n width: 36,\n height: 36\n },\n index: that.options.index\n });\n\n // 创建一个连接Point和Billboard的竖线\n that.lineEntity = that.viewer.entities.add({\n show: that.options.show,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return [that.pointEntity.position.getValue(), that.billboardEntity.position.getValue()];\n }, false),\n width: 1,\n material: new Cesium.PolylineOutlineMaterialProperty({\n outlineColor: Cesium.Color.GAINSBORO,\n outlineWidth: 1,\n color: Cesium.Color.WITHE\n }),\n zIndex: 99999999\n }\n });\n if (that.options.keyboard) {\n that.changeAltitude();\n }\n that.handler.setInputAction(function (movement) {\n var pickedObject = that.viewer.scene.pick(movement.position);\n if (Cesium.defined(pickedObject) && Cesium.defined(pickedObject.id) && pickedObject.id === that.billboardEntity) {\n if (that.options.selectFun) {\n that.options.selectFun(that.billboardEntity.index - 1);\n }\n }\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvYmlsbG9yZF9wb2ludF9saW5lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BaXJMaW5lL2JpbGxvcmRfcG9pbnRfbGluZS5qcz85NDIwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpbGxvcmRQb2ludExpbmUge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMsIHZpZXdlcikge1xyXG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5vcHRpb25zIH1cclxuICAgIHRoaXMucG9pbnRFbnRpdHkgPSBudWxsXHJcbiAgICB0aGlzLmJpbGxib2FyZEVudGl0eSA9IG51bGxcclxuICAgIHRoaXMubGluZUVudGl0eSA9IG51bGxcclxuICAgIHRoaXMudXBkYXRlZFBvc2l0aW9uID0gW11cclxuICAgIHRoaXMucG9pbnRVcGRhdGVkUG9zaXRpb24gPSBbXVxyXG4gICAgdGhpcy52aWV3ZXIgPSB2aWV3ZXJcclxuICAgIHRoaXMuaGFuZGxlciA9IG5ldyBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudEhhbmRsZXIodmlld2VyLnNjZW5lLmNhbnZhcylcclxuICAgIHRoaXMucGluQnVpbGRlciA9IG5ldyBDZXNpdW0uUGluQnVpbGRlcigpXHJcbiAgICB0aGlzLmluZGV4ID0gbnVsbFxyXG4gICAgLy/lrprkuYnlsY/luZXngrnlh7vkuovku7blpITnkIblmahcclxuICAgIEJpbGxvcmRQb2ludExpbmUuc2V0RGVmYXVsdFZhbHVlKHRoaXMpXHJcbiAgICBCaWxsb3JkUG9pbnRMaW5lLmluaXQodGhpcylcclxuICB9XHJcbiAgc3RhdGljIHNldERlZmF1bHRWYWx1ZSh0aGF0KSB7XHJcbiAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9ucyB8fCB7fVxyXG4gICAgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodCA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQgfHwgMTAwXHJcbiAgICB0aGF0Lm9wdGlvbnMuYWlySGVpZ2h0ID0gdGhhdC5vcHRpb25zLmFpckhlaWdodCB8fCAxMDBcclxuICAgIHRoYXQub3B0aW9ucy5pbWFnZSA9IHRoYXQub3B0aW9ucy5pbWFnZSB8fCAnL3N0YXRpYy9pbWcvY2x1c3RlcjIucG5nJ1xyXG4gICAgdGhhdC5vcHRpb25zLnNob3cgPSB0aGF0Lm9wdGlvbnMuc2hvdyB8fCB0cnVlXHJcbiAgICB0aGF0Lm9wdGlvbnMuaW5kZXggPSB0aGF0Lm9wdGlvbnMuaW5kZXggfHwgMVxyXG4gICAgdGhhdC5vcHRpb25zLnNhdmVGdW4gPSB0aGF0Lm9wdGlvbnMuc2F2ZUZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMuc2VsZWN0RnVuID0gdGhhdC5vcHRpb25zLnNlbGVjdEZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPSB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPz8gdHJ1ZVxyXG4gICAgdGhhdC5vcHRpb25zLnVwZGF0ZUZydXN0dW1GdW4gPSB0aGF0Lm9wdGlvbnMudXBkYXRlRnJ1c3R1bUZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMuZnJ1c3R1bSA9IHRoYXQub3B0aW9ucy5mcnVzdHVtIHx8IG51bGxcclxuICB9XHJcbiAgc3RhdGljIGluaXQodGhhdCkge1xyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgIC8vIOa3u+WKoOS4gOS4qlBvaW5077yM56iN5b6u5YGP56a75Zyw6Z2i6auY5bqm77yM5L2/5YW25a6M5YWo5Y+v6KeBXHJcbiAgICB0aGF0LnBvaW50RW50aXR5ID0gdGhhdC52aWV3ZXIuZW50aXRpZXMuYWRkKHtcclxuICAgICAgc2hvdzogdGhhdC5vcHRpb25zLnNob3csXHJcbiAgICAgIHBvc2l0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhwb3NpdGlvbnMubG5nLCBwb3NpdGlvbnMubGF0LCAwKSwgLy8g5Zyw6Z2i5LiKXHJcbiAgICAgIHBvaW50OiB7XHJcbiAgICAgICAgcGl4ZWxTaXplOiA4LFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuV0lUSEUsXHJcbiAgICAgICAgaGVpZ2h0UmVmZXJlbmNlOiBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORCwgLy8g5L2/55So55u45a+55Zyw6Z2i5oiW6LS05Zyw77yMXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiAwXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvL1xyXG4gICAgbGV0IHBpbkluZGV4ID0gdGhhdC5waW5CdWlsZGVyXHJcbiAgICAgIC5mcm9tVGV4dChcclxuICAgICAgICB0aGF0Lm9wdGlvbnMuaW5kZXgsXHJcbiAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZygnIzAwZDU5MCcpLFxyXG4gICAgICAgIDM2XHJcbiAgICAgIClcclxuICAgICAgLnRvRGF0YVVSTCgpXHJcbiAgICBsZXQgYWx0aXR1ZGUgPSAwXHJcbiAgICBpZiAocG9zaXRpb25zLmFsdGl0dWRlKSB7XHJcbiAgICAgIGFsdGl0dWRlID0gcG9zaXRpb25zLmFsdGl0dWRlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhbHRpdHVkZSA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHRcclxuICAgIH1cclxuICAgIC8vIOa3u+WKoOS4gOS4qkJpbGxib2FyZFxyXG4gICAgdGhhdC5iaWxsYm9hcmRFbnRpdHkgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgIHBvc2l0aW9ucy5sbmcsXHJcbiAgICAgICAgcG9zaXRpb25zLmxhdCxcclxuICAgICAgICBwb3NpdGlvbnMuYWx0ICsgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodFxyXG4gICAgICApLFxyXG4gICAgICAvLyDliKTmlq1hbHRpdHVkZeaYr+WQpuacieWAvFxyXG5cclxuICAgICAgbGFiZWw6IHtcclxuICAgICAgICB0ZXh0OiBgTGF0OiAke3Bvc2l0aW9ucy5sbmcudG9GaXhlZCg4KX1cXG5Mb246ICR7cG9zaXRpb25zLmxhdC50b0ZpeGVkKFxyXG4gICAgICAgICAgOFxyXG4gICAgICAgICl9XFxuQWx0OiAke2FsdGl0dWRlLnRvRml4ZWQoOCl9bWAsXHJcbiAgICAgICAgZm9udDogJzE0cHggc2Fucy1zZXJpZicsXHJcbiAgICAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuWUVMTE9XLFxyXG4gICAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLkJMQUNLLFxyXG4gICAgICAgIG91dGxpbmVXaWR0aDogMixcclxuICAgICAgICBwaXhlbE9mZnNldDogbmV3IENlc2l1bS5DYXJ0ZXNpYW4yKDAsIC02MCksIC8vIOagh+etvuWBj+enu+mHj++8jOmYsuatoumHjeWPoFxyXG4gICAgICAgIGhlaWdodFJlZmVyZW5jZTogQ2VzaXVtLkhlaWdodFJlZmVyZW5jZS5SRUxBVElWRV9UT19URVJSQUlOLCAvLyDnoa7kv53moIfnrb7kuI7lnLDpnaLotLTlkIhcclxuICAgICAgICBzaG93OiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBiaWxsYm9hcmQ6IHtcclxuICAgICAgICBpbWFnZTogcGluSW5kZXgsIC8vIOekuuS+i+WbvuWDj+i3r+W+hFxyXG4gICAgICAgIHZlcnRpY2FsT3JpZ2luOiBDZXNpdW0uVmVydGljYWxPcmlnaW4uQk9UVE9NLCAvLyDlm77lg4/lupXpg6jlr7npvZBcclxuICAgICAgICB3aWR0aDogMzYsXHJcbiAgICAgICAgaGVpZ2h0OiAzNlxyXG4gICAgICB9LFxyXG4gICAgICBpbmRleDogdGhhdC5vcHRpb25zLmluZGV4XHJcbiAgICB9KVxyXG5cclxuICAgIC8vIOWIm+W7uuS4gOS4qui/nuaOpVBvaW505ZKMQmlsbGJvYXJk55qE56uW57q/XHJcbiAgICB0aGF0LmxpbmVFbnRpdHkgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB0aGF0LnBvaW50RW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHRoYXQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICAgIF1cclxuICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgd2lkdGg6IDEsXHJcbiAgICAgICAgbWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVPdXRsaW5lTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgICAgICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5HQUlOU0JPUk8sXHJcbiAgICAgICAgICBvdXRsaW5lV2lkdGg6IDEsXHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yLldJVEhFXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgekluZGV4OiA5OTk5OTk5OVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKHRoYXQub3B0aW9ucy5rZXlib2FyZCkge1xyXG4gICAgICB0aGF0LmNoYW5nZUFsdGl0dWRlKClcclxuICAgIH1cclxuICAgIHRoYXQuaGFuZGxlci5zZXRJbnB1dEFjdGlvbihmdW5jdGlvbihtb3ZlbWVudCkge1xyXG4gICAgICB2YXIgcGlja2VkT2JqZWN0ID0gdGhhdC52aWV3ZXIuc2NlbmUucGljayhtb3ZlbWVudC5wb3NpdGlvbilcclxuICAgICAgaWYgKFxyXG4gICAgICAgIENlc2l1bS5kZWZpbmVkKHBpY2tlZE9iamVjdCkgJiZcclxuICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QuaWQpICYmXHJcbiAgICAgICAgcGlja2VkT2JqZWN0LmlkID09PSB0aGF0LmJpbGxib2FyZEVudGl0eVxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAodGhhdC5vcHRpb25zLnNlbGVjdEZ1bikge1xyXG4gICAgICAgICAgdGhhdC5vcHRpb25zLnNlbGVjdEZ1bih0aGF0LmJpbGxib2FyZEVudGl0eS5pbmRleCAtIDEpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTEVGVF9DTElDSylcclxuICB9XHJcbiAgLy8g5pS55Y+Y6auY5bqmXHJcbiAgY2hhbmdlQWx0aXR1ZGUoKSB7XHJcbiAgICB2YXIgaXNNb3VzZURvd24gPSBmYWxzZVxyXG4gICAgdmFyIHN0YXJ0UG9zaXRpb25cclxuICAgIHZhciBpbml0aWFsSGVpZ2h0XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGxldCBISEggPSBmYWxzZVxyXG4gICAgLy8g5qCH6K+GQWx06ZSu5piv5ZCm6KKr5oyJ5LiLXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHtcclxuICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5IC8vIOiOt+WPluaMieS4i+eahOmUruWQjVxyXG4gICAgICAvLyDmo4Dmn6XnibnlrprplK7mmK/lkKbooqvmjInkuItcclxuICAgICAgaWYgKGtleSA9PT0gJ2gnKSB7XHJcbiAgICAgICAgSEhIID0gdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICBISEggPSBmYWxzZVxyXG4gICAgfSlcclxuICAgIC8vIOaMieS4i+m8oOagh+W3pumUrlxyXG4gICAgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uKG1vdmVtZW50KSB7XHJcbiAgICAgIHZhciBwaWNrZWRPYmplY3QgPSB0aGF0LnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgQ2VzaXVtLmRlZmluZWQocGlja2VkT2JqZWN0KSAmJlxyXG4gICAgICAgIENlc2l1bS5kZWZpbmVkKHBpY2tlZE9iamVjdC5pZCkgJiZcclxuICAgICAgICBwaWNrZWRPYmplY3QuaWQgPT09IHRoYXQuYmlsbGJvYXJkRW50aXR5XHJcbiAgICAgICkge1xyXG4gICAgICAgIGlzTW91c2VEb3duID0gdHJ1ZVxyXG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPSBtb3ZlbWVudC5wb3NpdGlvblxyXG5cclxuICAgICAgICAvLyDojrflj5ZCaWxsYm9hcmTlvZPliY3nmoTlnLDnkIbpq5jluqZcclxuICAgICAgICB2YXIgcG9zaXRpb25DYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4oXHJcbiAgICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbi5nZXRWYWx1ZSgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGluaXRpYWxIZWlnaHQgPSBwb3NpdGlvbkNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAgICAgfVxyXG4gICAgfSwgQ2VzaXVtLlNjcmVlblNwYWNlRXZlbnRUeXBlLkxFRlRfRE9XTilcclxuICAgIC8vIOenu+WKqOm8oOagh1xyXG4gICAgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uKG1vdmVtZW50KSB7XHJcbiAgICAgIGlmIChpc01vdXNlRG93biAmJiBISEggPT0gZmFsc2UpIHtcclxuICAgICAgICAvLyDnp7vliqjkvY3nva5cclxuICAgICAgICB2YXIgbmV3Q2FydGVzaWFuID0gdGhhdC52aWV3ZXIuc2NlbmUucGlja1Bvc2l0aW9uKG1vdmVtZW50LmVuZFBvc2l0aW9uKVxyXG4gICAgICAgIHRoYXQuZGlzYWJsZUNhbWVyYURyYWcodGhhdC52aWV3ZXIsIGZhbHNlKVxyXG4gICAgICAgIGlmIChuZXdDYXJ0ZXNpYW4pIHtcclxuICAgICAgICAgIHZhciBuZXdDYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4obmV3Q2FydGVzaWFuKVxyXG4gICAgICAgICAgLy8g5L+d5oyB6auY5bqm5LiN5Y+YXHJcbiAgICAgICAgICB2YXIgbmV3TG9uZ2l0dWRlID0gbmV3Q2FydG9ncmFwaGljLmxvbmdpdHVkZVxyXG4gICAgICAgICAgdmFyIG5ld0xhdGl0dWRlID0gbmV3Q2FydG9ncmFwaGljLmxhdGl0dWRlXHJcbiAgICAgICAgICB2YXIgdXBkYXRlZFBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbVJhZGlhbnMoXHJcbiAgICAgICAgICAgIG5ld0xvbmdpdHVkZSxcclxuICAgICAgICAgICAgbmV3TGF0aXR1ZGUsXHJcbiAgICAgICAgICAgIGluaXRpYWxIZWlnaHRcclxuICAgICAgICAgIClcclxuICAgICAgICAgIHZhciBwb2ludFVwZGF0ZWRQb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21SYWRpYW5zKFxyXG4gICAgICAgICAgICBuZXdMb25naXR1ZGUsXHJcbiAgICAgICAgICAgIG5ld0xhdGl0dWRlLFxyXG4gICAgICAgICAgICAwXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVkUG9zaXRpb25cclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgICAgdGhhdC5iaWxsYm9hcmRFbnRpdHkubGFiZWwudGV4dCA9IGBMYXQ6ICR7Q2VzaXVtLk1hdGgudG9EZWdyZWVzKFxyXG4gICAgICAgICAgICBuZXdMb25naXR1ZGVcclxuICAgICAgICAgICkudG9GaXhlZCg2KX1cXG5Mb246ICR7Q2VzaXVtLk1hdGgudG9EZWdyZWVzKG5ld0xhdGl0dWRlKS50b0ZpeGVkKFxyXG4gICAgICAgICAgICA2XHJcbiAgICAgICAgICApfVxcbkFsdDogJHtpbml0aWFsSGVpZ2h0LnRvRml4ZWQoMil9bWBcclxuICAgICAgICAgIHRoYXQucG9pbnRFbnRpdHkucG9zaXRpb24gPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcG9pbnRVcGRhdGVkUG9zaXRpb25cclxuICAgICAgICAgIH0sIGZhbHNlKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNNb3VzZURvd24gJiYgSEhIKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coSEhIKVxyXG4gICAgICAgIC8vIOaUueWPmOmrmOW6plxyXG4gICAgICAgIHZhciBlbmRQb3NpdGlvbiA9IG1vdmVtZW50LmVuZFBvc2l0aW9uXHJcbiAgICAgICAgdmFyIGRlbHRhWSA9IHN0YXJ0UG9zaXRpb24ueSAtIGVuZFBvc2l0aW9uLnkgLy8g6K6h566XWei9tOaWueWQkeS4iueahOenu+WKqOi3neemu1xyXG4gICAgICAgIC8vIOagueaNrum8oOagh+enu+WKqOeahOi3neemu+adpeiwg+aVtOmrmOW6plxyXG4gICAgICAgIHZhciBuZXdIZWlnaHQgPSBpbml0aWFsSGVpZ2h0ICsgZGVsdGFZXHJcbiAgICAgICAgLy8g5pu05pawYmlsbGJvYXJk5L2N572uXHJcbiAgICAgICAgdmFyIHBvc2l0aW9uQ2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tQ2FydGVzaWFuKFxyXG4gICAgICAgICAgdGhhdC5iaWxsYm9hcmRFbnRpdHkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICAgIClcclxuICAgICAgICB2YXIgbmV3UG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIENlc2l1bS5NYXRoLnRvRGVncmVlcyhwb3NpdGlvbkNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpLFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKHBvc2l0aW9uQ2FydG9ncmFwaGljLmxhdGl0dWRlKSxcclxuICAgICAgICAgIG5ld0hlaWdodFxyXG4gICAgICAgIClcclxuICAgICAgICAvLyDnpoHnlKjnm7jmnLpcclxuICAgICAgICB0aGF0LmRpc2FibGVDYW1lcmFEcmFnKHRoYXQudmlld2VyLCBmYWxzZSlcclxuICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbiA9IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbmV3UG9zaXRpb25cclxuICAgICAgICB9LCBmYWxzZSlcclxuICAgICAgICB0aGF0LmJpbGxib2FyZEVudGl0eS5sYWJlbC50ZXh0ID0gYExhdDogJHtDZXNpdW0uTWF0aC50b0RlZ3JlZXMoXHJcbiAgICAgICAgICBwb3NpdGlvbkNhcnRvZ3JhcGhpYy5sb25naXR1ZGVcclxuICAgICAgICApLnRvRml4ZWQoNil9XFxuTG9uOiAke0Nlc2l1bS5NYXRoLnRvRGVncmVlcyhcclxuICAgICAgICAgIHBvc2l0aW9uQ2FydG9ncmFwaGljLmxhdGl0dWRlXHJcbiAgICAgICAgKS50b0ZpeGVkKDYpfVxcbkFsdDogJHtuZXdIZWlnaHQudG9GaXhlZCgyKX1tYFxyXG4gICAgICB9XHJcbiAgICB9LCBDZXNpdW0uU2NyZWVuU3BhY2VFdmVudFR5cGUuTU9VU0VfTU9WRSlcclxuICAgIC8vIOadvuW8gOm8oOagh+W3pumUrlxyXG4gICAgdGhpcy5oYW5kbGVyLnNldElucHV0QWN0aW9uKGZ1bmN0aW9uKG1vdmVtZW50KSB7XHJcbiAgICAgIHZhciBwaWNrZWRPYmplY3QgPSB0aGF0LnZpZXdlci5zY2VuZS5waWNrKG1vdmVtZW50LnBvc2l0aW9uKVxyXG4gICAgICBpc01vdXNlRG93biA9IGZhbHNlIC8vIOemgeeUqOebuOaculxyXG4gICAgICBISEggPSBmYWxzZSAvL1xyXG4gICAgICB0aGF0LmRpc2FibGVDYW1lcmFEcmFnKHRoYXQudmlld2VyLCB0cnVlKVxyXG4gICAgICAvLyDmm7TmlrBmcnVzdHVt55qE5L2N572uXHJcbiAgICAgIGlmIChcclxuICAgICAgICBDZXNpdW0uZGVmaW5lZChwaWNrZWRPYmplY3QpICYmXHJcbiAgICAgICAgQ2VzaXVtLmRlZmluZWQocGlja2VkT2JqZWN0LmlkKSAmJlxyXG4gICAgICAgIHBpY2tlZE9iamVjdC5pZCA9PT0gdGhhdC5iaWxsYm9hcmRFbnRpdHlcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zYXZlRnVuKSB7XHJcbiAgICAgICAgICB0aGF0Lm9wdGlvbnMuc2F2ZUZ1bihudWxsLCBmYWxzZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RGdW4pIHtcclxuICAgICAgICAgIHRoYXQub3B0aW9ucy5zZWxlY3RGdW4odGhhdC5iaWxsYm9hcmRFbnRpdHkuaW5kZXggLSAxKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGF0Lm9wdGlvbnMuZnJ1c3R1bS51cGRhdGVQb3NpdGlvbkhlaWdodChcclxuICAgICAgICAgIHRoYXQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH0sIENlc2l1bS5TY3JlZW5TcGFjZUV2ZW50VHlwZS5MRUZUX1VQKVxyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUNhbWVyYURyYWcodmlld2VyLCBib29sKSB7XHJcbiAgICB2aWV3ZXIuc2NlbmUuc2NyZWVuU3BhY2VDYW1lcmFDb250cm9sbGVyLmVuYWJsZVJvdGF0ZSA9IGJvb2xcclxuICAgIHZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlVHJhbnNsYXRlID0gYm9vbFxyXG4gICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVab29tID0gYm9vbFxyXG4gICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVUaWx0ID0gYm9vbFxyXG4gICAgdmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVMb29rID0gYm9vbFxyXG4gIH1cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJvb2xcclxuICAgKi9cclxuICBzZXQgc2hvdyhib29sKSB7XHJcbiAgICBpZiAodHlwZW9mIGJvb2wgPT09ICdib29sZWFuJykge1xyXG4gICAgICB0aGlzLnBvaW50RW50aXR5LnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMuYmlsbGJvYXJkRW50aXR5LnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMubGluZUVudGl0eS5zaG93ID0gYm9vbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMucG9pbnRFbnRpdHkpXHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5iaWxsYm9hcmRFbnRpdHkpXHJcbiAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5saW5lRW50aXR5KVxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBMkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUE5UEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/billord_point_line.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/AirLine/frustum.js":
-/*!************************************!*\
- !*** ./src/Obj/AirLine/frustum.js ***!
- \************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Frustum; });\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar Frustum = /*#__PURE__*/function () {\n function Frustum(options, viewer, viewer1) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Frustum);\n this.options = _objectSpread({}, options);\n this.viewer = viewer;\n this.viewer1 = viewer1;\n this.head = 0;\n this.pitch = 90;\n this.po = 0.00001;\n this.position = null;\n this.hpr = null;\n this.currentFrustumOutline = null;\n this.frustum = null;\n this.setInterval1 = null;\n this.webrtc = null;\n\n // 设置默认值\n Frustum.setDefaultValue(this);\n this.create();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Frustum, [{\n key: \"create\",\n value:\n // 初始化视锥体\n function create() {\n this.frustum = new Cesium.PerspectiveFrustum({\n fov: Cesium.Math.toRadians(this.options.fov),\n aspectRatio: this.options.aspectRatio,\n near: this.options.near,\n far: this.options.far\n });\n var _this$options$positio = this.options.position,\n lng = _this$options$positio.lng,\n lat = _this$options$positio.lat,\n alt = _this$options$positio.alt;\n var _this$options = this.options,\n heading = _this$options.heading,\n pitch = _this$options.pitch,\n roll = _this$options.roll;\n this.position = Cesium.Cartesian3.fromDegrees(lng, lat, alt + this.options.normalHeight);\n this.hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(heading), Cesium.Math.toRadians(pitch), Cesium.Math.toRadians(roll));\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n this.monitorKeyboard();\n this.updateFrustumSquareBase(40);\n this.syncHpr();\n if (this.options.videoUrl) {\n this.addVideoToFrustumTop2();\n }\n }\n\n // 监听键盘事件\n }, {\n key: \"monitorKeyboard\",\n value: function monitorKeyboard() {\n var _this = this;\n var keyActions = {\n KeyQ: function KeyQ() {\n return _this.setIntervalhpr(-0.45);\n },\n KeyE: function KeyE() {\n return _this.setIntervalhpr(0.45);\n },\n KeyB: function KeyB() {\n return _this.setIntervalhprr(-0.45);\n },\n KeyN: function KeyN() {\n return _this.setIntervalhprr(0.45);\n },\n KeyW: function KeyW() {\n return _this.updateFrustumPosition('move', -0.00001);\n },\n KeyS: function KeyS() {\n return _this.updateFrustumPosition('move', 0.00001);\n },\n KeyA: function KeyA() {\n return _this.updateFrustumPosition('move', -0.00001, 0);\n },\n KeyD: function KeyD() {\n return _this.updateFrustumPosition('move', 0.00001, 0);\n },\n KeyC: function KeyC() {\n return _this.updateFrustumHeight(1);\n },\n // 增加高度\n KeyZ: function KeyZ() {\n return _this.updateFrustumHeight(-1);\n } // 降低高度\n };\n this.keydownHandler = function (event) {\n if (keyActions[event.code]) keyActions[event.code]();\n };\n this.keyupHandler = function () {\n return _this.stopFrustumRotation();\n };\n document.addEventListener('keydown', this.keydownHandler);\n document.addEventListener('keyup', this.keyupHandler);\n }\n // 渲染视频\n }, {\n key: \"addVideoToFrustumTop\",\n value: function addVideoToFrustumTop() {\n var _this2 = this;\n // 创建视频元素\n var videoElement = document.createElement('video');\n videoElement.width = 640;\n videoElement.height = 360;\n videoElement.autoplay = true;\n videoElement.loop = true;\n videoElement.muted = true;\n // videoElement.style.display = 'none'; // 隐藏视频元素\n document.body.appendChild(videoElement);\n\n // 使用 flv.js 播放 FLV 视频\n if (flvjs.isSupported()) {\n var flvPlayer = flvjs.createPlayer({\n // url: 'http://zmkg.cqet.top:9991/live/2pUbcgTrly3mIDuxsDXN9h3hqcEKU6TlsV_YeIDyqHqXGzXafqWokXdU1q6j_S7hTCP7HynZQIsuNM6KQ5l-ag==.flv',\n type: 'flv',\n isLive: true,\n hasAudio: false,\n enableStashBuffer: true,\n //\n enableWorker: true,\n autoCleanupSourceBuffer: true,\n //自动清除缓存\n url: this.options.videoUrl\n });\n flvPlayer.attachMediaElement(videoElement);\n flvPlayer.load();\n flvPlayer.play();\n } else {\n console.error('FLV.js is not supported in this browser.');\n }\n var corners = this.computeFrustumCorners(this.frustum, this.position, this.hpr);\n // 创建 PolygonGeometry 并应用视频作为纹理\n var polygonHierarchy = new Cesium.PolygonHierarchy([corners.bottomLeft, corners.bottomRight, corners.topRight, corners.topLeft]);\n this.videoEntity = this.viewer.entities.add(new Cesium.Entity({\n id: '22222222',\n show: true,\n polygon: {\n hierarchy: polygonHierarchy\n }\n }));\n videoElement.addEventListener('loadeddata', function () {\n _this2.videoEntity.polygon.material = videoElement; // 确保视频纹理加载后再设置\n });\n }\n // 渲染视频\n }, {\n key: \"addVideoToFrustumTop2\",\n value: function () {\n var _addVideoToFrustumTop = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee() {\n var _this3 = this;\n var videoElement, corners, polygonHierarchy;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n // 创建视频元素\n videoElement = document.createElement('video');\n videoElement.width = 640;\n videoElement.height = 360;\n videoElement.autoplay = true;\n videoElement.loop = true;\n videoElement.muted = true;\n // videoElement.style.display = 'none'; // 隐藏视频元素\n document.body.appendChild(videoElement);\n _context.next = 9;\n return this.startPlay(videoElement, this.options.videoUrl);\n case 9:\n corners = this.computeFrustumCorners(this.frustum, this.position, this.hpr); // 创建 PolygonGeometry 并应用视频作为纹理\n polygonHierarchy = new Cesium.PolygonHierarchy([corners.bottomLeft, corners.bottomRight, corners.topRight, corners.topLeft]);\n this.videoEntity = this.viewer.entities.add(new Cesium.Entity({\n id: '22222222',\n show: true,\n polygon: {\n hierarchy: polygonHierarchy\n }\n }));\n videoElement.addEventListener('loadeddata', function () {\n _this3.videoEntity.polygon.material = videoElement; // 确保视频纹理加载后再设置\n });\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function addVideoToFrustumTop2() {\n return _addVideoToFrustumTop.apply(this, arguments);\n }\n return addVideoToFrustumTop2;\n }()\n }, {\n key: \"startPlay\",\n value: function () {\n var _startPlay = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.mark(function _callee2(element, url) {\n var session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n // Close existing SDK instance if any\n if (this.webrtc) {\n this.webrtc.close();\n }\n\n // Initialize a new SDK instance\n this.webrtc = new SrsRtcWhipWhepAsync();\n\n // Bind the video player to the SDK stream\n element.srcObject = this.webrtc.stream;\n _context2.prev = 3;\n _context2.next = 6;\n return this.webrtc.play(url);\n case 6:\n session = _context2.sent;\n console.log(session);\n // this.sessionId = session.sessionid\n // this.simulatorUrl = `${session.simulator}?drop=1&username=${session.sessionid}`\n _context2.next = 13;\n break;\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](3);\n // console.error('Error playing stream:', error)\n this.webrtc.close();\n // this.playerVisible = false\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this, [[3, 10]]);\n }));\n function startPlay(_x, _x2) {\n return _startPlay.apply(this, arguments);\n }\n return startPlay;\n }() // 计算视锥体远裁剪面(大面)的四个角点\n }, {\n key: \"computeFrustumCorners\",\n value: function computeFrustumCorners(frustum, position, hpr) {\n var tanFov = Math.tan(frustum.fov * 0.5);\n var farHeight = frustum.far * tanFov;\n var farWidth = farHeight * frustum.aspectRatio;\n var topLeft = new Cesium.Cartesian3(-farWidth, farHeight, -frustum.far);\n var topRight = new Cesium.Cartesian3(farWidth, farHeight, -frustum.far);\n var bottomLeft = new Cesium.Cartesian3(-farWidth, -farHeight, -frustum.far);\n var bottomRight = new Cesium.Cartesian3(farWidth, -farHeight, -frustum.far);\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(position, hpr);\n // console.log('transform111111111111111111111111', transform)\n return {\n topLeft: Cesium.Matrix4.multiplyByPoint(transform, topLeft, new Cesium.Cartesian3()),\n topRight: Cesium.Matrix4.multiplyByPoint(transform, topRight, new Cesium.Cartesian3()),\n bottomLeft: Cesium.Matrix4.multiplyByPoint(transform, bottomLeft, new Cesium.Cartesian3()),\n bottomRight: Cesium.Matrix4.multiplyByPoint(transform, bottomRight, new Cesium.Cartesian3())\n };\n }\n // 封装的函数:更新 Polygon 面的位置\n }, {\n key: \"updatePolygonPosition\",\n value: function updatePolygonPosition() {\n var corners = this.computeFrustumCorners(this.frustum, this.position, this.hpr);\n this.videoEntity.polygon.hierarchy = new Cesium.CallbackProperty(function (e) {\n return new Cesium.PolygonHierarchy([corners.bottomLeft, corners.bottomRight, corners.topRight, corners.topLeft]);\n });\n }\n // 更新锥体底部为正方形的方法\n }, {\n key: \"updateFrustumSquareBase\",\n value: function updateFrustumSquareBase(value) {\n // 将输入值范围从 56 到 1 映射到面积范围 10000 到 100\n var minArea = 100; // 最小面积\n var maxArea = 10000; // 最大面积\n\n // 映射公式(反转映射)\n var newArea = (56 - value) / (56 - 1) * (maxArea - minArea) + minArea;\n\n // 确保aspectRatio保持为1(正方形)\n this.frustum.aspectRatio = 1;\n\n // 根据面积计算正方形边长\n var sideLength = Math.sqrt(newArea);\n\n // 远平面距离\n var far = this.frustum.far;\n\n // 计算新的fov\n var fov = 2 * Math.atan(sideLength / (2 * far));\n\n // 更新视锥体的fov\n this.frustum.fov = fov;\n\n // 重新绘制视锥体轮廓和填充\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n this.syncHpr();\n }\n }, {\n key: \"updateFrustumHeight\",\n value: function updateFrustumHeight(deltaHeight) {\n var cartographic = Cesium.Cartographic.fromCartesian(this.position);\n cartographic.height += deltaHeight; // 更新高度\n this.position = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(cartographic.longitude), Cesium.Math.toDegrees(cartographic.latitude), cartographic.height);\n this.options.position.alt = cartographic.height;\n // this.options.arr[\n // this.options.index\n // ] = this.viewer.scene.globe.ellipsoid.cartographicToCartesian(cartographic)\n this.syncHpr();\n this.drawFrustumOutline(); // 重新绘制视锥体轮廓\n this.drawFrustumFilled();\n }\n // 更新position变化后的视锥体属性\n }, {\n key: \"updatePositionHeight\",\n value: function updatePositionHeight(p) {\n this.options.position = this.cartesian3Towgs84(p);\n this.syncHpr();\n this.drawFrustumOutline(); // 重新绘制视锥体轮廓\n this.drawFrustumFilled();\n }\n }, {\n key: \"cartesian3Towgs84\",\n value: function cartesian3Towgs84(cartesian) {\n var ellipsoid = this.viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n }\n }, {\n key: \"setIntervalhpr\",\n value: function setIntervalhpr(num) {\n var _this4 = this;\n this.stopFrustumRotation(); // 先停止当前的定时器\n this.setInterval1 = setInterval(function () {\n _this4.head += num;\n _this4.updateFrustumHPR(Cesium.Math.toRadians(_this4.head), _this4.pitch);\n }, 10);\n }\n }, {\n key: \"setIntervalhprr\",\n value: function setIntervalhprr(num) {\n var _this5 = this;\n this.stopFrustumRotation(); // 先停止当前的定时器\n this.setInterval1 = setInterval(function () {\n // 限制 pitch 在 [60, 180] 范围内\n _this5.pitch = Math.max(60, Math.min(180, _this5.pitch + num));\n _this5.updateFrustumHPR(_this5.head, Cesium.Math.toRadians(_this5.pitch));\n }, 10);\n }\n // 停止视锥体旋转\n }, {\n key: \"stopFrustumRotation\",\n value: function stopFrustumRotation() {\n if (this.setInterval1) {\n clearInterval(this.setInterval1);\n this.setInterval1 = null;\n }\n }\n // 新增:绘制填充的视锥体\n }, {\n key: \"drawFrustumFilled\",\n value: function drawFrustumFilled() {\n var that = this;\n // console.log('that.options.show', that.options.show)\n\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(this.position, this.hpr);\n var frustumGeometry = new Cesium.FrustumGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n if (this.currentFrustumFilled) {\n this.viewer.scene.primitives.remove(this.currentFrustumFilled);\n }\n this.currentFrustumFilled = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: frustumGeometry,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.fromAlpha(Cesium.Color.YELLOW, 0.4) // 半透明黄色填充\n )\n }\n }),\n appearance: new Cesium.MaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.fromAlpha(Cesium.Color.YELLOW, 0.4) // 填充颜色\n }),\n translucent: true\n }),\n asynchronous: false,\n // show: false\n show: that.options.show\n });\n this.viewer.scene.primitives.add(this.currentFrustumFilled);\n }\n // 绘制视锥体轮廓\n }, {\n key: \"drawFrustumOutline\",\n value: function drawFrustumOutline() {\n var that = this;\n // console.log('that.options.show', that.options.show)\n\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(this.position, this.hpr);\n var frustumOutlineGeometry = new Cesium.FrustumOutlineGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n if (this.currentFrustumOutline) {\n this.viewer.scene.primitives.remove(this.currentFrustumOutline);\n }\n this.currentFrustumOutline = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: frustumOutlineGeometry,\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW)\n }\n }),\n appearance: new Cesium.PolylineColorAppearance({\n translucent: false\n }),\n asynchronous: false,\n show: that.options.show\n // show: false\n });\n this.viewer.scene.primitives.add(this.currentFrustumOutline);\n }\n // 更新视锥体位置\n }, {\n key: \"updateFrustumPosition\",\n value: function updateFrustumPosition() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'move';\n var p = arguments.length > 1 ? arguments[1] : undefined;\n var deg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 90;\n var flag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n if (type === 'move') {\n // eslint-disable-next-line no-undef\n var point = turf.point([this.options.position.lng, this.options.position.lat]);\n var degreesValue = Cesium.Math.toDegrees(this.hpr.heading);\n var bearing = degreesValue + deg;\n var options = {\n units: 'degrees'\n };\n // eslint-disable-next-line no-undef\n var destination = turf.destination(point, p, bearing, options).geometry.coordinates;\n this.position = Cesium.Cartesian3.fromDegrees(destination[0], destination[1], this.options.position.alt + this.options.normalHeight);\n this.options.position.lng = destination[0];\n this.options.position.lat = destination[1];\n this.viewer.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(destination[0], destination[1], this.viewer.camera.positionCartographic.height)\n });\n }\n if (type === 'update') {\n this.position = p;\n this.options.videoUrl && this.updatePolygonPosition();\n }\n if (flag) {\n this.syncHpr();\n this.updateFrustumAttributes();\n }\n }\n // 同步视角\n }, {\n key: \"syncHpr\",\n value: function syncHpr() {\n // console.log('this.viewer1', this.viewer1);\n if (this.viewer1) {\n var _this$options$positio2 = this.options.position,\n lng = _this$options$positio2.lng,\n lat = _this$options$positio2.lat,\n alt = _this$options$positio2.alt;\n var pitch = -this.hpr.pitch - Cesium.Math.toRadians(-90.0);\n this.viewer1.camera.setView({\n destination: Cesium.Cartesian3.fromDegrees(lng, lat, alt + this.options.normalHeight),\n orientation: {\n heading: this.hpr.heading + Cesium.Math.toRadians(-90.0),\n pitch: pitch,\n roll: this.hpr.roll\n }\n });\n }\n }\n // 更新视锥体的 HeadingPitchRoll\n }, {\n key: \"updateFrustumHPR\",\n value: function updateFrustumHPR() {\n var h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.head;\n var p = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.pitch;\n var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var flag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n function degreesToRadians(degrees) {\n return degrees * Math.PI / 180.0;\n }\n if (type == 'alone') {\n this.hpr.heading = degreesToRadians(h);\n this.hpr.pitch = degreesToRadians(p);\n this.hpr.roll = degreesToRadians(r);\n } else {\n this.hpr.heading = Cesium.Math.negativePiToPi(h);\n this.hpr.pitch = Cesium.Math.negativePiToPi(p);\n this.hpr.roll = Cesium.Math.negativePiToPi(r);\n }\n if (flag) {\n this.syncHpr();\n this.updateFrustumAttributes();\n }\n }\n // 用于更新\n }, {\n key: \"updateFrustumAttributes\",\n value: function updateFrustumAttributes() {\n var that = this;\n // 检查 position 和 hpr 是否已初始化\n if (!this.position || !this.hpr) {\n // eslint-disable-next-line no-console\n console.error('Position or HPR is not defined:', this.position, this.hpr);\n return;\n }\n\n // 生成变换矩阵\n var transform = Cesium.Transforms.headingPitchRollToFixedFrame(this.position, this.hpr);\n if (!transform) {\n // eslint-disable-next-line no-console\n console.error('Transform generation failed.');\n return;\n }\n try {\n // 准备轮廓几何体和外观\n var outlineGeometry = new Cesium.FrustumOutlineGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n var outlineAppearance = new Cesium.PolylineColorAppearance({\n translucent: false\n });\n var outlineColor = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.YELLOW);\n\n // 准备填充几何体和外观\n var filledGeometry = new Cesium.FrustumGeometry({\n frustum: this.frustum,\n origin: Cesium.Matrix4.getTranslation(transform, new Cesium.Cartesian3()),\n orientation: Cesium.Quaternion.fromRotationMatrix(Cesium.Matrix4.getRotation(transform, new Cesium.Matrix3()))\n });\n var filledAppearance = new Cesium.MaterialAppearance({\n material: Cesium.Material.fromType('Color', {\n color: Cesium.Color.YELLOW.withAlpha(0.5)\n }),\n translucent: true\n });\n var filledColor = Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED.withAlpha(0.5));\n\n // 删除旧的 Primitive\n if (this.currentFrustumOutline) {\n this.viewer.scene.primitives.remove(this.currentFrustumOutline);\n }\n if (this.currentFrustumFilled) {\n this.viewer.scene.primitives.remove(this.currentFrustumFilled);\n }\n\n // 创建并添加新的轮廓 Primitive\n this.currentFrustumOutline = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: outlineGeometry,\n attributes: {\n color: outlineColor\n }\n }),\n appearance: outlineAppearance,\n asynchronous: false,\n show: that.options.show\n });\n this.viewer.scene.primitives.add(this.currentFrustumOutline);\n\n // 创建并添加新的填充 Primitive\n this.currentFrustumFilled = new Cesium.Primitive({\n geometryInstances: new Cesium.GeometryInstance({\n geometry: filledGeometry,\n attributes: {\n color: filledColor\n }\n }),\n appearance: filledAppearance,\n asynchronous: false,\n show: that.options.show\n });\n this.viewer.scene.primitives.add(this.currentFrustumFilled);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error in drawFrustum:', error);\n }\n }\n // 调整视锥体的 near 和 far 平面\n }, {\n key: \"updateFrustumNearFar\",\n value: function updateFrustumNearFar(newNear, newFar) {\n this.frustum.near = newNear;\n this.frustum.far = newFar;\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n }\n // 调整视锥体的 fov\n }, {\n key: \"updateFrustumFov\",\n value: function updateFrustumFov(newFov) {\n this.frustum.fov = Cesium.Math.toRadians(newFov);\n this.drawFrustumOutline();\n this.drawFrustumFilled();\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this.options.show = bool;\n this.currentFrustumOutline.show = bool;\n this.currentFrustumFilled.show = bool;\n }\n }\n }, {\n key: \"remove\",\n value: function remove() {\n document.removeEventListener('keydown', this.keydownHandler);\n document.removeEventListener('keyup', this.keyupHandler);\n if (this.currentFrustumFilled) {\n this.viewer.scene.primitives.remove(this.currentFrustumFilled);\n }\n if (this.currentFrustumOutline) {\n this.viewer.scene.primitives.remove(this.currentFrustumOutline);\n }\n if (this.videoEntity) {\n this.viewer.entities.remove(this.videoEntity);\n }\n }\n }], [{\n key: \"setDefaultValue\",\n value: function setDefaultValue(that) {\n var _that$options$show;\n that.options.position = that.options.position || {};\n that.options.fov = that.options.fov || 30;\n that.options.aspectRatio = that.options.aspectRatio || 1;\n that.options.near = that.options.near || 1;\n that.options.far = that.options.far || 120;\n that.options.heading = that.options.heading || 0;\n that.options.pitch = that.options.pitch || 90;\n that.options.roll = that.options.roll || 0;\n that.options.show = (_that$options$show = that.options.show) !== null && _that$options$show !== void 0 ? _that$options$show : true;\n that.options.videoUrl = that.options.videoUrl || '';\n that.options.index = that.options.index || 0;\n that.options.arr = that.options.arr || [];\n that.options.normalHeight = that.options.normalHeight || 100;\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvZnJ1c3R1bS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQWlyTGluZS9mcnVzdHVtLmpzPzEyMjIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJ1c3R1bSB7XHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucywgdmlld2VyLCB2aWV3ZXIxKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy52aWV3ZXIgPSB2aWV3ZXJcclxuICAgIHRoaXMudmlld2VyMSA9IHZpZXdlcjFcclxuICAgIHRoaXMuaGVhZCA9IDBcclxuICAgIHRoaXMucGl0Y2ggPSA5MFxyXG4gICAgdGhpcy5wbyA9IDAuMDAwMDFcclxuICAgIHRoaXMucG9zaXRpb24gPSBudWxsXHJcbiAgICB0aGlzLmhwciA9IG51bGxcclxuICAgIHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lID0gbnVsbFxyXG4gICAgdGhpcy5mcnVzdHVtID0gbnVsbFxyXG4gICAgdGhpcy5zZXRJbnRlcnZhbDEgPSBudWxsXHJcbiAgICB0aGlzLndlYnJ0YyA9IG51bGxcclxuXHJcbiAgICAvLyDorr7nva7pu5jorqTlgLxcclxuICAgIEZydXN0dW0uc2V0RGVmYXVsdFZhbHVlKHRoaXMpXHJcbiAgICB0aGlzLmNyZWF0ZSgpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0RGVmYXVsdFZhbHVlKHRoYXQpIHtcclxuICAgIHRoYXQub3B0aW9ucy5wb3NpdGlvbiA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbiB8fCB7fVxyXG4gICAgdGhhdC5vcHRpb25zLmZvdiA9IHRoYXQub3B0aW9ucy5mb3YgfHwgMzBcclxuICAgIHRoYXQub3B0aW9ucy5hc3BlY3RSYXRpbyA9IHRoYXQub3B0aW9ucy5hc3BlY3RSYXRpbyB8fCAxXHJcbiAgICB0aGF0Lm9wdGlvbnMubmVhciA9IHRoYXQub3B0aW9ucy5uZWFyIHx8IDFcclxuICAgIHRoYXQub3B0aW9ucy5mYXIgPSB0aGF0Lm9wdGlvbnMuZmFyIHx8IDEyMFxyXG4gICAgdGhhdC5vcHRpb25zLmhlYWRpbmcgPSB0aGF0Lm9wdGlvbnMuaGVhZGluZyB8fCAwXHJcbiAgICB0aGF0Lm9wdGlvbnMucGl0Y2ggPSB0aGF0Lm9wdGlvbnMucGl0Y2ggfHwgOTBcclxuICAgIHRoYXQub3B0aW9ucy5yb2xsID0gdGhhdC5vcHRpb25zLnJvbGwgfHwgMFxyXG4gICAgdGhhdC5vcHRpb25zLnNob3cgPSB0aGF0Lm9wdGlvbnMuc2hvdyA/PyB0cnVlXHJcbiAgICB0aGF0Lm9wdGlvbnMudmlkZW9VcmwgPSB0aGF0Lm9wdGlvbnMudmlkZW9VcmwgfHwgJydcclxuICAgIHRoYXQub3B0aW9ucy5pbmRleCA9IHRoYXQub3B0aW9ucy5pbmRleCB8fCAwXHJcbiAgICB0aGF0Lm9wdGlvbnMuYXJyID0gdGhhdC5vcHRpb25zLmFyciB8fCBbXVxyXG4gICAgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodCA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQgfHwgMTAwXHJcbiAgfVxyXG5cclxuICAvLyDliJ3lp4vljJbop4bplKXkvZNcclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLmZydXN0dW0gPSBuZXcgQ2VzaXVtLlBlcnNwZWN0aXZlRnJ1c3R1bSh7XHJcbiAgICAgIGZvdjogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMub3B0aW9ucy5mb3YpLFxyXG4gICAgICBhc3BlY3RSYXRpbzogdGhpcy5vcHRpb25zLmFzcGVjdFJhdGlvLFxyXG4gICAgICBuZWFyOiB0aGlzLm9wdGlvbnMubmVhcixcclxuICAgICAgZmFyOiB0aGlzLm9wdGlvbnMuZmFyXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IHsgbG5nLCBsYXQsIGFsdCB9ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uXHJcbiAgICBjb25zdCB7IGhlYWRpbmcsIHBpdGNoLCByb2xsIH0gPSB0aGlzLm9wdGlvbnNcclxuICAgIHRoaXMucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgbG5nLFxyXG4gICAgICBsYXQsXHJcbiAgICAgIGFsdCArIHRoaXMub3B0aW9ucy5ub3JtYWxIZWlnaHRcclxuICAgIClcclxuICAgIHRoaXMuaHByID0gbmV3IENlc2l1bS5IZWFkaW5nUGl0Y2hSb2xsKFxyXG4gICAgICBDZXNpdW0uTWF0aC50b1JhZGlhbnMoaGVhZGluZyksXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhwaXRjaCksXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyhyb2xsKVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuZHJhd0ZydXN0dW1PdXRsaW5lKClcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1GaWxsZWQoKVxyXG4gICAgdGhpcy5tb25pdG9yS2V5Ym9hcmQoKVxyXG4gICAgdGhpcy51cGRhdGVGcnVzdHVtU3F1YXJlQmFzZSg0MClcclxuICAgIHRoaXMuc3luY0hwcigpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnZpZGVvVXJsKSB7XHJcbiAgICAgIHRoaXMuYWRkVmlkZW9Ub0ZydXN0dW1Ub3AyKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOebkeWQrOmUruebmOS6i+S7tlxyXG4gIG1vbml0b3JLZXlib2FyZCgpIHtcclxuICAgIGNvbnN0IGtleUFjdGlvbnMgPSB7XHJcbiAgICAgIEtleVE6ICgpID0+IHRoaXMuc2V0SW50ZXJ2YWxocHIoLTAuNDUpLFxyXG4gICAgICBLZXlFOiAoKSA9PiB0aGlzLnNldEludGVydmFsaHByKDAuNDUpLFxyXG4gICAgICBLZXlCOiAoKSA9PiB0aGlzLnNldEludGVydmFsaHBycigtMC40NSksXHJcbiAgICAgIEtleU46ICgpID0+IHRoaXMuc2V0SW50ZXJ2YWxocHJyKDAuNDUpLFxyXG4gICAgICBLZXlXOiAoKSA9PiB0aGlzLnVwZGF0ZUZydXN0dW1Qb3NpdGlvbignbW92ZScsIC0wLjAwMDAxKSxcclxuICAgICAgS2V5UzogKCkgPT4gdGhpcy51cGRhdGVGcnVzdHVtUG9zaXRpb24oJ21vdmUnLCAwLjAwMDAxKSxcclxuICAgICAgS2V5QTogKCkgPT4gdGhpcy51cGRhdGVGcnVzdHVtUG9zaXRpb24oJ21vdmUnLCAtMC4wMDAwMSwgMCksXHJcbiAgICAgIEtleUQ6ICgpID0+IHRoaXMudXBkYXRlRnJ1c3R1bVBvc2l0aW9uKCdtb3ZlJywgMC4wMDAwMSwgMCksXHJcbiAgICAgIEtleUM6ICgpID0+IHRoaXMudXBkYXRlRnJ1c3R1bUhlaWdodCgxKSwgLy8g5aKe5Yqg6auY5bqmXHJcbiAgICAgIEtleVo6ICgpID0+IHRoaXMudXBkYXRlRnJ1c3R1bUhlaWdodCgtMSkgLy8g6ZmN5L2O6auY5bqmXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5rZXlkb3duSGFuZGxlciA9IGV2ZW50ID0+IHtcclxuICAgICAgaWYgKGtleUFjdGlvbnNbZXZlbnQuY29kZV0pIGtleUFjdGlvbnNbZXZlbnQuY29kZV0oKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMua2V5dXBIYW5kbGVyID0gKCkgPT4gdGhpcy5zdG9wRnJ1c3R1bVJvdGF0aW9uKClcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5rZXlkb3duSGFuZGxlcilcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMua2V5dXBIYW5kbGVyKVxyXG4gIH1cclxuICAvLyDmuLLmn5Pop4bpopFcclxuICBhZGRWaWRlb1RvRnJ1c3R1bVRvcCgpIHtcclxuICAgIC8vIOWIm+W7uuinhumikeWFg+e0oFxyXG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKVxyXG4gICAgdmlkZW9FbGVtZW50LndpZHRoID0gNjQwXHJcbiAgICB2aWRlb0VsZW1lbnQuaGVpZ2h0ID0gMzYwXHJcbiAgICB2aWRlb0VsZW1lbnQuYXV0b3BsYXkgPSB0cnVlXHJcbiAgICB2aWRlb0VsZW1lbnQubG9vcCA9IHRydWVcclxuICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWVcclxuICAgIC8vIHZpZGVvRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyAvLyDpmpDol4/op4bpopHlhYPntKBcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW9FbGVtZW50KVxyXG5cclxuICAgIC8vIOS9v+eUqCBmbHYuanMg5pKt5pS+IEZMViDop4bpopFcclxuICAgIGlmIChmbHZqcy5pc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgIGNvbnN0IGZsdlBsYXllciA9IGZsdmpzLmNyZWF0ZVBsYXllcih7XHJcbiAgICAgICAgLy8gIHVybDogJ2h0dHA6Ly96bWtnLmNxZXQudG9wOjk5OTEvbGl2ZS8ycFViY2dUcmx5M21JRHV4c0RYTjloM2hxY0VLVTZUbHNWX1llSUR5cUhxWEd6WGFmcVdva1hkVTFxNmpfUzdoVENQN0h5blpRSXN1Tk02S1E1bC1hZz09LmZsdicsXHJcbiAgICAgICAgdHlwZTogJ2ZsdicsXHJcbiAgICAgICAgaXNMaXZlOiB0cnVlLFxyXG4gICAgICAgIGhhc0F1ZGlvOiBmYWxzZSxcclxuICAgICAgICBlbmFibGVTdGFzaEJ1ZmZlcjogdHJ1ZSwgLy9cclxuICAgICAgICBlbmFibGVXb3JrZXI6IHRydWUsXHJcbiAgICAgICAgYXV0b0NsZWFudXBTb3VyY2VCdWZmZXI6IHRydWUsIC8v6Ieq5Yqo5riF6Zmk57yT5a2YXHJcbiAgICAgICAgdXJsOiB0aGlzLm9wdGlvbnMudmlkZW9VcmxcclxuICAgICAgfSlcclxuICAgICAgZmx2UGxheWVyLmF0dGFjaE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpXHJcbiAgICAgIGZsdlBsYXllci5sb2FkKClcclxuICAgICAgZmx2UGxheWVyLnBsYXkoKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRkxWLmpzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29ybmVycyA9IHRoaXMuY29tcHV0ZUZydXN0dW1Db3JuZXJzKFxyXG4gICAgICB0aGlzLmZydXN0dW0sXHJcbiAgICAgIHRoaXMucG9zaXRpb24sXHJcbiAgICAgIHRoaXMuaHByXHJcbiAgICApXHJcbiAgICAvLyDliJvlu7ogUG9seWdvbkdlb21ldHJ5IOW5tuW6lOeUqOinhumikeS9nOS4uue6ueeQhlxyXG4gICAgY29uc3QgcG9seWdvbkhpZXJhcmNoeSA9IG5ldyBDZXNpdW0uUG9seWdvbkhpZXJhcmNoeShbXHJcbiAgICAgIGNvcm5lcnMuYm90dG9tTGVmdCxcclxuICAgICAgY29ybmVycy5ib3R0b21SaWdodCxcclxuICAgICAgY29ybmVycy50b3BSaWdodCxcclxuICAgICAgY29ybmVycy50b3BMZWZ0XHJcbiAgICBdKVxyXG4gICAgdGhpcy52aWRlb0VudGl0eSA9IHRoaXMudmlld2VyLmVudGl0aWVzLmFkZChcclxuICAgICAgbmV3IENlc2l1bS5FbnRpdHkoe1xyXG4gICAgICAgIGlkOiAnMjIyMjIyMjInLFxyXG4gICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgaGllcmFyY2h5OiBwb2x5Z29uSGllcmFyY2h5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMudmlkZW9FbnRpdHkucG9seWdvbi5tYXRlcmlhbCA9IHZpZGVvRWxlbWVudCAvLyDnoa7kv53op4bpopHnurnnkIbliqDovb3lkI7lho3orr7nva5cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIOa4suafk+inhumikVxyXG4gIGFzeW5jIGFkZFZpZGVvVG9GcnVzdHVtVG9wMigpIHtcclxuICAgIC8vIOWIm+W7uuinhumikeWFg+e0oFxyXG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKVxyXG4gICAgdmlkZW9FbGVtZW50LndpZHRoID0gNjQwXHJcbiAgICB2aWRlb0VsZW1lbnQuaGVpZ2h0ID0gMzYwXHJcbiAgICB2aWRlb0VsZW1lbnQuYXV0b3BsYXkgPSB0cnVlXHJcbiAgICB2aWRlb0VsZW1lbnQubG9vcCA9IHRydWVcclxuICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IHRydWVcclxuICAgIC8vIHZpZGVvRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyAvLyDpmpDol4/op4bpopHlhYPntKBcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW9FbGVtZW50KVxyXG4gICAgYXdhaXQgdGhpcy5zdGFydFBsYXkodmlkZW9FbGVtZW50LCB0aGlzLm9wdGlvbnMudmlkZW9VcmwpXHJcbiAgICBjb25zdCBjb3JuZXJzID0gdGhpcy5jb21wdXRlRnJ1c3R1bUNvcm5lcnMoXHJcbiAgICAgIHRoaXMuZnJ1c3R1bSxcclxuICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgdGhpcy5ocHJcclxuICAgIClcclxuICAgIC8vIOWIm+W7uiBQb2x5Z29uR2VvbWV0cnkg5bm25bqU55So6KeG6aKR5L2c5Li657q555CGXHJcbiAgICBjb25zdCBwb2x5Z29uSGllcmFyY2h5ID0gbmV3IENlc2l1bS5Qb2x5Z29uSGllcmFyY2h5KFtcclxuICAgICAgY29ybmVycy5ib3R0b21MZWZ0LFxyXG4gICAgICBjb3JuZXJzLmJvdHRvbVJpZ2h0LFxyXG4gICAgICBjb3JuZXJzLnRvcFJpZ2h0LFxyXG4gICAgICBjb3JuZXJzLnRvcExlZnRcclxuICAgIF0pXHJcbiAgICB0aGlzLnZpZGVvRW50aXR5ID0gdGhpcy52aWV3ZXIuZW50aXRpZXMuYWRkKFxyXG4gICAgICBuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgaWQ6ICcyMjIyMjIyMicsXHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBwb2x5Z29uOiB7XHJcbiAgICAgICAgICBoaWVyYXJjaHk6IHBvbHlnb25IaWVyYXJjaHlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICB2aWRlb0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsICgpID0+IHtcclxuICAgICAgdGhpcy52aWRlb0VudGl0eS5wb2x5Z29uLm1hdGVyaWFsID0gdmlkZW9FbGVtZW50IC8vIOehruS/neinhumikee6ueeQhuWKoOi9veWQjuWGjeiuvue9rlxyXG4gICAgfSlcclxuICB9XHJcbiAgYXN5bmMgc3RhcnRQbGF5KGVsZW1lbnQsIHVybCkge1xyXG4gICAgLy8gQ2xvc2UgZXhpc3RpbmcgU0RLIGluc3RhbmNlIGlmIGFueVxyXG4gICAgaWYgKHRoaXMud2VicnRjKSB7XHJcbiAgICAgIHRoaXMud2VicnRjLmNsb3NlKClcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbml0aWFsaXplIGEgbmV3IFNESyBpbnN0YW5jZVxyXG4gICAgdGhpcy53ZWJydGMgPSBuZXcgU3JzUnRjV2hpcFdoZXBBc3luYygpXHJcblxyXG4gICAgLy8gQmluZCB0aGUgdmlkZW8gcGxheWVyIHRvIHRoZSBTREsgc3RyZWFtXHJcbiAgICBlbGVtZW50LnNyY09iamVjdCA9IHRoaXMud2VicnRjLnN0cmVhbVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCB0aGlzLndlYnJ0Yy5wbGF5KHVybClcclxuICAgICAgY29uc29sZS5sb2coc2Vzc2lvbilcclxuICAgICAgLy8gdGhpcy5zZXNzaW9uSWQgPSBzZXNzaW9uLnNlc3Npb25pZFxyXG4gICAgICAvLyB0aGlzLnNpbXVsYXRvclVybCA9IGAke3Nlc3Npb24uc2ltdWxhdG9yfT9kcm9wPTEmdXNlcm5hbWU9JHtzZXNzaW9uLnNlc3Npb25pZH1gXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBwbGF5aW5nIHN0cmVhbTonLCBlcnJvcilcclxuICAgICAgdGhpcy53ZWJydGMuY2xvc2UoKVxyXG4gICAgICAvLyB0aGlzLnBsYXllclZpc2libGUgPSBmYWxzZVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyDorqHnrpfop4bplKXkvZPov5zoo4HliarpnaLvvIjlpKfpnaLvvInnmoTlm5vkuKrop5LngrlcclxuICBjb21wdXRlRnJ1c3R1bUNvcm5lcnMoZnJ1c3R1bSwgcG9zaXRpb24sIGhwcikge1xyXG4gICAgY29uc3QgdGFuRm92ID0gTWF0aC50YW4oZnJ1c3R1bS5mb3YgKiAwLjUpXHJcbiAgICBjb25zdCBmYXJIZWlnaHQgPSBmcnVzdHVtLmZhciAqIHRhbkZvdlxyXG4gICAgY29uc3QgZmFyV2lkdGggPSBmYXJIZWlnaHQgKiBmcnVzdHVtLmFzcGVjdFJhdGlvXHJcblxyXG4gICAgY29uc3QgdG9wTGVmdCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMygtZmFyV2lkdGgsIGZhckhlaWdodCwgLWZydXN0dW0uZmFyKVxyXG4gICAgY29uc3QgdG9wUmlnaHQgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoZmFyV2lkdGgsIGZhckhlaWdodCwgLWZydXN0dW0uZmFyKVxyXG4gICAgY29uc3QgYm90dG9tTGVmdCA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhcclxuICAgICAgLWZhcldpZHRoLFxyXG4gICAgICAtZmFySGVpZ2h0LFxyXG4gICAgICAtZnJ1c3R1bS5mYXJcclxuICAgIClcclxuICAgIGNvbnN0IGJvdHRvbVJpZ2h0ID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgICBmYXJXaWR0aCxcclxuICAgICAgLWZhckhlaWdodCxcclxuICAgICAgLWZydXN0dW0uZmFyXHJcbiAgICApXHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKFxyXG4gICAgICBwb3NpdGlvbixcclxuICAgICAgaHByXHJcbiAgICApXHJcbiAgICAvLyBjb25zb2xlLmxvZygndHJhbnNmb3JtMTExMTExMTExMTExMTExMTExMTExMTExJywgdHJhbnNmb3JtKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG9wTGVmdDogQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICB0b3BMZWZ0LFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICksXHJcbiAgICAgIHRvcFJpZ2h0OiBDZXNpdW0uTWF0cml4NC5tdWx0aXBseUJ5UG9pbnQoXHJcbiAgICAgICAgdHJhbnNmb3JtLFxyXG4gICAgICAgIHRvcFJpZ2h0LFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICksXHJcbiAgICAgIGJvdHRvbUxlZnQ6IENlc2l1bS5NYXRyaXg0Lm11bHRpcGx5QnlQb2ludChcclxuICAgICAgICB0cmFuc2Zvcm0sXHJcbiAgICAgICAgYm90dG9tTGVmdCxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApLFxyXG4gICAgICBib3R0b21SaWdodDogQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICBib3R0b21SaWdodCxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOWwgeijheeahOWHveaVsO+8muabtOaWsCBQb2x5Z29uIOmdoueahOS9jee9rlxyXG4gIHVwZGF0ZVBvbHlnb25Qb3NpdGlvbigpIHtcclxuICAgIGNvbnN0IGNvcm5lcnMgPSB0aGlzLmNvbXB1dGVGcnVzdHVtQ29ybmVycyhcclxuICAgICAgdGhpcy5mcnVzdHVtLFxyXG4gICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICB0aGlzLmhwclxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMudmlkZW9FbnRpdHkucG9seWdvbi5oaWVyYXJjaHkgPSBuZXcgQ2VzaXVtLkNhbGxiYWNrUHJvcGVydHkoZSA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgQ2VzaXVtLlBvbHlnb25IaWVyYXJjaHkoW1xyXG4gICAgICAgIGNvcm5lcnMuYm90dG9tTGVmdCxcclxuICAgICAgICBjb3JuZXJzLmJvdHRvbVJpZ2h0LFxyXG4gICAgICAgIGNvcm5lcnMudG9wUmlnaHQsXHJcbiAgICAgICAgY29ybmVycy50b3BMZWZ0XHJcbiAgICAgIF0pXHJcbiAgICB9KVxyXG4gIH1cclxuICAvLyDmm7TmlrDplKXkvZPlupXpg6jkuLrmraPmlrnlvaLnmoTmlrnms5VcclxuICB1cGRhdGVGcnVzdHVtU3F1YXJlQmFzZSh2YWx1ZSkge1xyXG4gICAgLy8g5bCG6L6T5YWl5YC86IyD5Zu05LuOIDU2IOWIsCAxIOaYoOWwhOWIsOmdouenr+iMg+WbtCAxMDAwMCDliLAgMTAwXHJcbiAgICBjb25zdCBtaW5BcmVhID0gMTAwIC8vIOacgOWwj+mdouenr1xyXG4gICAgY29uc3QgbWF4QXJlYSA9IDEwMDAwIC8vIOacgOWkp+mdouenr1xyXG5cclxuICAgIC8vIOaYoOWwhOWFrOW8j++8iOWPjei9rOaYoOWwhO+8iVxyXG4gICAgY29uc3QgbmV3QXJlYSA9ICgoNTYgLSB2YWx1ZSkgLyAoNTYgLSAxKSkgKiAobWF4QXJlYSAtIG1pbkFyZWEpICsgbWluQXJlYVxyXG5cclxuICAgIC8vIOehruS/nWFzcGVjdFJhdGlv5L+d5oyB5Li6Me+8iOato+aWueW9ou+8iVxyXG4gICAgdGhpcy5mcnVzdHVtLmFzcGVjdFJhdGlvID0gMVxyXG5cclxuICAgIC8vIOagueaNrumdouenr+iuoeeul+ato+aWueW9oui+uemVv1xyXG4gICAgY29uc3Qgc2lkZUxlbmd0aCA9IE1hdGguc3FydChuZXdBcmVhKVxyXG5cclxuICAgIC8vIOi/nOW5s+mdoui3neemu1xyXG4gICAgY29uc3QgZmFyID0gdGhpcy5mcnVzdHVtLmZhclxyXG5cclxuICAgIC8vIOiuoeeul+aWsOeahGZvdlxyXG4gICAgY29uc3QgZm92ID0gMiAqIE1hdGguYXRhbihzaWRlTGVuZ3RoIC8gKDIgKiBmYXIpKVxyXG5cclxuICAgIC8vIOabtOaWsOinhumUpeS9k+eahGZvdlxyXG4gICAgdGhpcy5mcnVzdHVtLmZvdiA9IGZvdlxyXG5cclxuICAgIC8vIOmHjeaWsOe7mOWItuinhumUpeS9k+i9ruW7k+WSjOWhq+WFhVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bU91dGxpbmUoKVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bUZpbGxlZCgpXHJcbiAgICB0aGlzLnN5bmNIcHIoKVxyXG4gIH1cclxuICB1cGRhdGVGcnVzdHVtSGVpZ2h0KGRlbHRhSGVpZ2h0KSB7XHJcbiAgICBjb25zdCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4odGhpcy5wb3NpdGlvbilcclxuICAgIGNhcnRvZ3JhcGhpYy5oZWlnaHQgKz0gZGVsdGFIZWlnaHQgLy8g5pu05paw6auY5bqmXHJcbiAgICB0aGlzLnBvc2l0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgIENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKSxcclxuICAgICAgQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSksXHJcbiAgICAgIGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAgIClcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5hbHQgPSBjYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICAvLyB0aGlzLm9wdGlvbnMuYXJyW1xyXG4gICAgLy8gICB0aGlzLm9wdGlvbnMuaW5kZXhcclxuICAgIC8vIF0gPSB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oY2FydG9ncmFwaGljKVxyXG4gICAgdGhpcy5zeW5jSHByKClcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1PdXRsaW5lKCkgLy8g6YeN5paw57uY5Yi26KeG6ZSl5L2T6L2u5buTXHJcbiAgICB0aGlzLmRyYXdGcnVzdHVtRmlsbGVkKClcclxuICB9XHJcbiAgLy8g5pu05pawcG9zaXRpb27lj5jljJblkI7nmoTop4bplKXkvZPlsZ7mgKdcclxuICB1cGRhdGVQb3NpdGlvbkhlaWdodChwKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KHApXHJcbiAgICB0aGlzLnN5bmNIcHIoKVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bU91dGxpbmUoKSAvLyDph43mlrDnu5jliLbop4bplKXkvZPova7lu5NcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1GaWxsZWQoKVxyXG4gIH1cclxuICBjYXJ0ZXNpYW4zVG93Z3M4NChjYXJ0ZXNpYW4pIHtcclxuICAgIHZhciBlbGxpcHNvaWQgPSB0aGlzLnZpZXdlci5zY2VuZS5nbG9iZS5lbGxpcHNvaWRcclxuICAgIHZhciBjYXJ0ZXNpYW4zID0gbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKFxyXG4gICAgICBjYXJ0ZXNpYW4ueCxcclxuICAgICAgY2FydGVzaWFuLnksXHJcbiAgICAgIGNhcnRlc2lhbi56XHJcbiAgICApXHJcbiAgICB2YXIgY2FydG9ncmFwaGljID0gZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGNhcnRlc2lhbjMpXHJcbiAgICB2YXIgbGF0ID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSlcclxuICAgIHZhciBsbmcgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxvbmdpdHVkZSlcclxuICAgIHZhciBhbHQgPSBjYXJ0b2dyYXBoaWMuaGVpZ2h0IDwgMCA/IDAgOiBjYXJ0b2dyYXBoaWMuaGVpZ2h0XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsbmc6IGxuZyxcclxuICAgICAgbGF0OiBsYXQsXHJcbiAgICAgIGFsdDogYWx0XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldEludGVydmFsaHByKG51bSkge1xyXG4gICAgdGhpcy5zdG9wRnJ1c3R1bVJvdGF0aW9uKCkgLy8g5YWI5YGc5q2i5b2T5YmN55qE5a6a5pe25ZmoXHJcbiAgICB0aGlzLnNldEludGVydmFsMSA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgdGhpcy5oZWFkICs9IG51bVxyXG4gICAgICB0aGlzLnVwZGF0ZUZydXN0dW1IUFIoQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMuaGVhZCksIHRoaXMucGl0Y2gpXHJcbiAgICB9LCAxMClcclxuICB9XHJcbiAgc2V0SW50ZXJ2YWxocHJyKG51bSkge1xyXG4gICAgdGhpcy5zdG9wRnJ1c3R1bVJvdGF0aW9uKCkgLy8g5YWI5YGc5q2i5b2T5YmN55qE5a6a5pe25ZmoXHJcbiAgICB0aGlzLnNldEludGVydmFsMSA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgLy8g6ZmQ5Yi2IHBpdGNoIOWcqCBbNjAsIDE4MF0g6IyD5Zu05YaFXHJcbiAgICAgIHRoaXMucGl0Y2ggPSBNYXRoLm1heCg2MCwgTWF0aC5taW4oMTgwLCB0aGlzLnBpdGNoICsgbnVtKSlcclxuICAgICAgdGhpcy51cGRhdGVGcnVzdHVtSFBSKHRoaXMuaGVhZCwgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMucGl0Y2gpKVxyXG4gICAgfSwgMTApXHJcbiAgfVxyXG4gIC8vIOWBnOatouinhumUpeS9k+aXi+i9rFxyXG4gIHN0b3BGcnVzdHVtUm90YXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zZXRJbnRlcnZhbDEpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnNldEludGVydmFsMSlcclxuICAgICAgdGhpcy5zZXRJbnRlcnZhbDEgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOaWsOWinu+8mue7mOWItuWhq+WFheeahOinhumUpeS9k1xyXG4gIGRyYXdGcnVzdHVtRmlsbGVkKCkge1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzXHJcbiAgICAvLyBjb25zb2xlLmxvZygndGhhdC5vcHRpb25zLnNob3cnLCB0aGF0Lm9wdGlvbnMuc2hvdylcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKFxyXG4gICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICB0aGlzLmhwclxyXG4gICAgKVxyXG5cclxuICAgIGNvbnN0IGZydXN0dW1HZW9tZXRyeSA9IG5ldyBDZXNpdW0uRnJ1c3R1bUdlb21ldHJ5KHtcclxuICAgICAgZnJ1c3R1bTogdGhpcy5mcnVzdHVtLFxyXG4gICAgICBvcmlnaW46IENlc2l1bS5NYXRyaXg0LmdldFRyYW5zbGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLFxyXG4gICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgIENlc2l1bS5NYXRyaXg0LmdldFJvdGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5NYXRyaXgzKCkpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpIHtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5jdXJyZW50RnJ1c3R1bUZpbGxlZClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICBnZW9tZXRyeTogZnJ1c3R1bUdlb21ldHJ5LFxyXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICAgICAgQ2VzaXVtLkNvbG9yLmZyb21BbHBoYShDZXNpdW0uQ29sb3IuWUVMTE9XLCAwLjQpIC8vIOWNiumAj+aYjum7hOiJsuWhq+WFhVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIGFwcGVhcmFuY2U6IG5ldyBDZXNpdW0uTWF0ZXJpYWxBcHBlYXJhbmNlKHtcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLk1hdGVyaWFsLmZyb21UeXBlKCdDb2xvcicsIHtcclxuICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUFscGhhKENlc2l1bS5Db2xvci5ZRUxMT1csIDAuNCkgLy8g5aGr5YWF6aKc6ImyXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdHJhbnNsdWNlbnQ6IHRydWVcclxuICAgICAgfSksXHJcbiAgICAgIGFzeW5jaHJvbm91czogZmFsc2UsXHJcbiAgICAgIC8vIHNob3c6IGZhbHNlXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpXHJcbiAgfVxyXG4gIC8vIOe7mOWItuinhumUpeS9k+i9ruW7k1xyXG4gIGRyYXdGcnVzdHVtT3V0bGluZSgpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3RoYXQub3B0aW9ucy5zaG93JywgdGhhdC5vcHRpb25zLnNob3cpXHJcblxyXG4gICAgY29uc3QgdHJhbnNmb3JtID0gQ2VzaXVtLlRyYW5zZm9ybXMuaGVhZGluZ1BpdGNoUm9sbFRvRml4ZWRGcmFtZShcclxuICAgICAgdGhpcy5wb3NpdGlvbixcclxuICAgICAgdGhpcy5ocHJcclxuICAgIClcclxuXHJcbiAgICBjb25zdCBmcnVzdHVtT3V0bGluZUdlb21ldHJ5ID0gbmV3IENlc2l1bS5GcnVzdHVtT3V0bGluZUdlb21ldHJ5KHtcclxuICAgICAgZnJ1c3R1bTogdGhpcy5mcnVzdHVtLFxyXG4gICAgICBvcmlnaW46IENlc2l1bS5NYXRyaXg0LmdldFRyYW5zbGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5DYXJ0ZXNpYW4zKCkpLFxyXG4gICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgIENlc2l1bS5NYXRyaXg0LmdldFJvdGF0aW9uKHRyYW5zZm9ybSwgbmV3IENlc2l1bS5NYXRyaXgzKCkpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICBnZW9tZXRyeUluc3RhbmNlczogbmV3IENlc2l1bS5HZW9tZXRyeUluc3RhbmNlKHtcclxuICAgICAgICBnZW9tZXRyeTogZnJ1c3R1bU91dGxpbmVHZW9tZXRyeSxcclxuICAgICAgICBhdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoXHJcbiAgICAgICAgICAgIENlc2l1bS5Db2xvci5ZRUxMT1dcclxuICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBhcHBlYXJhbmNlOiBuZXcgQ2VzaXVtLlBvbHlsaW5lQ29sb3JBcHBlYXJhbmNlKHtcclxuICAgICAgICB0cmFuc2x1Y2VudDogZmFsc2VcclxuICAgICAgfSksXHJcbiAgICAgIGFzeW5jaHJvbm91czogZmFsc2UsXHJcbiAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICAgIC8vIHNob3c6IGZhbHNlXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKVxyXG4gIH1cclxuICAvLyDmm7TmlrDop4bplKXkvZPkvY3nva5cclxuICB1cGRhdGVGcnVzdHVtUG9zaXRpb24odHlwZSA9ICdtb3ZlJywgcCwgZGVnID0gOTAsIGZsYWcgPSB0cnVlKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ21vdmUnKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgICBjb25zdCBwb2ludCA9IHR1cmYucG9pbnQoW1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uLmxhdFxyXG4gICAgICBdKVxyXG4gICAgICBjb25zdCBkZWdyZWVzVmFsdWUgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXModGhpcy5ocHIuaGVhZGluZylcclxuICAgICAgY29uc3QgYmVhcmluZyA9IGRlZ3JlZXNWYWx1ZSArIGRlZ1xyXG4gICAgICBjb25zdCBvcHRpb25zID0geyB1bml0czogJ2RlZ3JlZXMnIH1cclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gdHVyZi5kZXN0aW5hdGlvbihwb2ludCwgcCwgYmVhcmluZywgb3B0aW9ucykuZ2VvbWV0cnlcclxuICAgICAgICAuY29vcmRpbmF0ZXNcclxuXHJcbiAgICAgIHRoaXMucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICBkZXN0aW5hdGlvblswXSxcclxuICAgICAgICBkZXN0aW5hdGlvblsxXSxcclxuICAgICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24uYWx0ICsgdGhpcy5vcHRpb25zLm5vcm1hbEhlaWdodFxyXG4gICAgICApXHJcbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbi5sbmcgPSBkZXN0aW5hdGlvblswXVxyXG4gICAgICB0aGlzLm9wdGlvbnMucG9zaXRpb24ubGF0ID0gZGVzdGluYXRpb25bMV1cclxuXHJcbiAgICAgIHRoaXMudmlld2VyLmNhbWVyYS5zZXRWaWV3KHtcclxuICAgICAgICBkZXN0aW5hdGlvbjogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoXHJcbiAgICAgICAgICBkZXN0aW5hdGlvblswXSxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uWzFdLFxyXG4gICAgICAgICAgdGhpcy52aWV3ZXIuY2FtZXJhLnBvc2l0aW9uQ2FydG9ncmFwaGljLmhlaWdodFxyXG4gICAgICAgIClcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09PSAndXBkYXRlJykge1xyXG4gICAgICB0aGlzLnBvc2l0aW9uID0gcFxyXG4gICAgICB0aGlzLm9wdGlvbnMudmlkZW9VcmwgJiYgdGhpcy51cGRhdGVQb2x5Z29uUG9zaXRpb24oKVxyXG4gICAgfVxyXG4gICAgaWYgKGZsYWcpIHtcclxuICAgICAgdGhpcy5zeW5jSHByKClcclxuICAgICAgdGhpcy51cGRhdGVGcnVzdHVtQXR0cmlidXRlcygpXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOWQjOatpeinhuinklxyXG4gIHN5bmNIcHIoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygndGhpcy52aWV3ZXIxJywgdGhpcy52aWV3ZXIxKTtcclxuICAgIGlmICh0aGlzLnZpZXdlcjEpIHtcclxuICAgICAgY29uc3QgeyBsbmcsIGxhdCwgYWx0IH0gPSB0aGlzLm9wdGlvbnMucG9zaXRpb25cclxuICAgICAgbGV0IHBpdGNoID0gLXRoaXMuaHByLnBpdGNoIC0gQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKVxyXG4gICAgICB0aGlzLnZpZXdlcjEuY2FtZXJhLnNldFZpZXcoe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIGxuZyxcclxuICAgICAgICAgIGxhdCxcclxuICAgICAgICAgIGFsdCArIHRoaXMub3B0aW9ucy5ub3JtYWxIZWlnaHRcclxuICAgICAgICApLFxyXG4gICAgICAgIG9yaWVudGF0aW9uOiB7XHJcbiAgICAgICAgICBoZWFkaW5nOiB0aGlzLmhwci5oZWFkaW5nICsgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHBpdGNoLFxyXG4gICAgICAgICAgcm9sbDogdGhpcy5ocHIucm9sbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbiAgLy8g5pu05paw6KeG6ZSl5L2T55qEIEhlYWRpbmdQaXRjaFJvbGxcclxuICB1cGRhdGVGcnVzdHVtSFBSKFxyXG4gICAgaCA9IHRoaXMuaGVhZCxcclxuICAgIHAgPSB0aGlzLnBpdGNoLFxyXG4gICAgciA9IDAsXHJcbiAgICBmbGFnID0gdHJ1ZSxcclxuICAgIHR5cGUgPSAnJ1xyXG4gICkge1xyXG4gICAgZnVuY3Rpb24gZGVncmVlc1RvUmFkaWFucyhkZWdyZWVzKSB7XHJcbiAgICAgIHJldHVybiAoZGVncmVlcyAqIE1hdGguUEkpIC8gMTgwLjBcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09ICdhbG9uZScpIHtcclxuICAgICAgdGhpcy5ocHIuaGVhZGluZyA9IGRlZ3JlZXNUb1JhZGlhbnMoaClcclxuICAgICAgdGhpcy5ocHIucGl0Y2ggPSBkZWdyZWVzVG9SYWRpYW5zKHApXHJcbiAgICAgIHRoaXMuaHByLnJvbGwgPSBkZWdyZWVzVG9SYWRpYW5zKHIpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhwci5oZWFkaW5nID0gQ2VzaXVtLk1hdGgubmVnYXRpdmVQaVRvUGkoaClcclxuICAgICAgdGhpcy5ocHIucGl0Y2ggPSBDZXNpdW0uTWF0aC5uZWdhdGl2ZVBpVG9QaShwKVxyXG4gICAgICB0aGlzLmhwci5yb2xsID0gQ2VzaXVtLk1hdGgubmVnYXRpdmVQaVRvUGkocilcclxuICAgIH1cclxuICAgIGlmIChmbGFnKSB7XHJcbiAgICAgIHRoaXMuc3luY0hwcigpXHJcbiAgICAgIHRoaXMudXBkYXRlRnJ1c3R1bUF0dHJpYnV0ZXMoKVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyDnlKjkuo7mm7TmlrBcclxuICB1cGRhdGVGcnVzdHVtQXR0cmlidXRlcygpIHtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgLy8g5qOA5p+lIHBvc2l0aW9uIOWSjCBocHIg5piv5ZCm5bey5Yid5aeL5YyWXHJcbiAgICBpZiAoIXRoaXMucG9zaXRpb24gfHwgIXRoaXMuaHByKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1Bvc2l0aW9uIG9yIEhQUiBpcyBub3QgZGVmaW5lZDonLCB0aGlzLnBvc2l0aW9uLCB0aGlzLmhwcilcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgLy8g55Sf5oiQ5Y+Y5o2i55+p6Zi1XHJcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBDZXNpdW0uVHJhbnNmb3Jtcy5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKFxyXG4gICAgICB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICB0aGlzLmhwclxyXG4gICAgKVxyXG5cclxuICAgIGlmICghdHJhbnNmb3JtKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RyYW5zZm9ybSBnZW5lcmF0aW9uIGZhaWxlZC4nKVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDlh4blpIfova7lu5Plh6DkvZXkvZPlkozlpJbop4JcclxuICAgICAgY29uc3Qgb3V0bGluZUdlb21ldHJ5ID0gbmV3IENlc2l1bS5GcnVzdHVtT3V0bGluZUdlb21ldHJ5KHtcclxuICAgICAgICBmcnVzdHVtOiB0aGlzLmZydXN0dW0sXHJcbiAgICAgICAgb3JpZ2luOiBDZXNpdW0uTWF0cml4NC5nZXRUcmFuc2xhdGlvbihcclxuICAgICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdHJpeDQuZ2V0Um90YXRpb24odHJhbnNmb3JtLCBuZXcgQ2VzaXVtLk1hdHJpeDMoKSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBvdXRsaW5lQXBwZWFyYW5jZSA9IG5ldyBDZXNpdW0uUG9seWxpbmVDb2xvckFwcGVhcmFuY2Uoe1xyXG4gICAgICAgIHRyYW5zbHVjZW50OiBmYWxzZVxyXG4gICAgICB9KVxyXG4gICAgICBjb25zdCBvdXRsaW5lQ29sb3IgPSBDZXNpdW0uQ29sb3JHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlLmZyb21Db2xvcihcclxuICAgICAgICBDZXNpdW0uQ29sb3IuWUVMTE9XXHJcbiAgICAgIClcclxuXHJcbiAgICAgIC8vIOWHhuWkh+Whq+WFheWHoOS9leS9k+WSjOWkluinglxyXG4gICAgICBjb25zdCBmaWxsZWRHZW9tZXRyeSA9IG5ldyBDZXNpdW0uRnJ1c3R1bUdlb21ldHJ5KHtcclxuICAgICAgICBmcnVzdHVtOiB0aGlzLmZydXN0dW0sXHJcbiAgICAgICAgb3JpZ2luOiBDZXNpdW0uTWF0cml4NC5nZXRUcmFuc2xhdGlvbihcclxuICAgICAgICAgIHRyYW5zZm9ybSxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBvcmllbnRhdGlvbjogQ2VzaXVtLlF1YXRlcm5pb24uZnJvbVJvdGF0aW9uTWF0cml4KFxyXG4gICAgICAgICAgQ2VzaXVtLk1hdHJpeDQuZ2V0Um90YXRpb24odHJhbnNmb3JtLCBuZXcgQ2VzaXVtLk1hdHJpeDMoKSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCBmaWxsZWRBcHBlYXJhbmNlID0gbmV3IENlc2l1bS5NYXRlcmlhbEFwcGVhcmFuY2Uoe1xyXG4gICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uTWF0ZXJpYWwuZnJvbVR5cGUoJ0NvbG9yJywge1xyXG4gICAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5ZRUxMT1cud2l0aEFscGhhKDAuNSlcclxuICAgICAgICB9KSxcclxuICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgICBjb25zdCBmaWxsZWRDb2xvciA9IENlc2l1bS5Db2xvckdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGUuZnJvbUNvbG9yKFxyXG4gICAgICAgIENlc2l1bS5Db2xvci5SRUQud2l0aEFscGhhKDAuNSlcclxuICAgICAgKVxyXG5cclxuICAgICAgLy8g5Yig6Zmk5pen55qEIFByaW1pdGl2ZVxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUpIHtcclxuICAgICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLmN1cnJlbnRGcnVzdHVtT3V0bGluZSlcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50RnJ1c3R1bUZpbGxlZCkge1xyXG4gICAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWIm+W7uuW5tua3u+WKoOaWsOeahOi9ruW7kyBQcmltaXRpdmVcclxuICAgICAgdGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUgPSBuZXcgQ2VzaXVtLlByaW1pdGl2ZSh7XHJcbiAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeTogb3V0bGluZUdlb21ldHJ5LFxyXG4gICAgICAgICAgYXR0cmlidXRlczogeyBjb2xvcjogb3V0bGluZUNvbG9yIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBhcHBlYXJhbmNlOiBvdXRsaW5lQXBwZWFyYW5jZSxcclxuICAgICAgICBhc3luY2hyb25vdXM6IGZhbHNlLFxyXG4gICAgICAgIHNob3c6IHRoYXQub3B0aW9ucy5zaG93XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lKVxyXG5cclxuICAgICAgLy8g5Yib5bu65bm25re75Yqg5paw55qE5aGr5YWFIFByaW1pdGl2ZVxyXG4gICAgICB0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkID0gbmV3IENlc2l1bS5QcmltaXRpdmUoe1xyXG4gICAgICAgIGdlb21ldHJ5SW5zdGFuY2VzOiBuZXcgQ2VzaXVtLkdlb21ldHJ5SW5zdGFuY2Uoe1xyXG4gICAgICAgICAgZ2VvbWV0cnk6IGZpbGxlZEdlb21ldHJ5LFxyXG4gICAgICAgICAgYXR0cmlidXRlczogeyBjb2xvcjogZmlsbGVkQ29sb3IgfVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6IGZpbGxlZEFwcGVhcmFuY2UsXHJcbiAgICAgICAgYXN5bmNocm9ub3VzOiBmYWxzZSxcclxuICAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvd1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZCh0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gZHJhd0ZydXN0dW06JywgZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOiwg+aVtOinhumUpeS9k+eahCBuZWFyIOWSjCBmYXIg5bmz6Z2iXHJcbiAgdXBkYXRlRnJ1c3R1bU5lYXJGYXIobmV3TmVhciwgbmV3RmFyKSB7XHJcbiAgICB0aGlzLmZydXN0dW0ubmVhciA9IG5ld05lYXJcclxuICAgIHRoaXMuZnJ1c3R1bS5mYXIgPSBuZXdGYXJcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1PdXRsaW5lKClcclxuICAgIHRoaXMuZHJhd0ZydXN0dW1GaWxsZWQoKVxyXG4gIH1cclxuICAvLyDosIPmlbTop4bplKXkvZPnmoQgZm92XHJcbiAgdXBkYXRlRnJ1c3R1bUZvdihuZXdGb3YpIHtcclxuICAgIHRoaXMuZnJ1c3R1bS5mb3YgPSBDZXNpdW0uTWF0aC50b1JhZGlhbnMobmV3Rm92KVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bU91dGxpbmUoKVxyXG4gICAgdGhpcy5kcmF3RnJ1c3R1bUZpbGxlZCgpXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3coYm9vbCkge1xyXG4gICAgaWYgKHR5cGVvZiBib29sID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMuY3VycmVudEZydXN0dW1PdXRsaW5lLnNob3cgPSBib29sXHJcbiAgICAgIHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQuc2hvdyA9IGJvb2xcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmtleWRvd25IYW5kbGVyKVxyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmtleXVwSGFuZGxlcilcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGcnVzdHVtRmlsbGVkKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMuY3VycmVudEZydXN0dW1GaWxsZWQpXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUpIHtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy5jdXJyZW50RnJ1c3R1bU91dGxpbmUpXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy52aWRlb0VudGl0eSkge1xyXG4gICAgICB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy52aWRlb0VudGl0eSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFNQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9DQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQXVCQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFLQTtBQUtBO0FBSUE7QUFDQTtBQUNBO0FBS0E7QUFLQTtBQUtBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFNQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFMQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUEzb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/frustum.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/AirLine/pointRoute.js":
-/*!***************************************!*\
- !*** ./src/Obj/AirLine/pointRoute.js ***!
- \***************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PointRoute; });\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/readOnlyError */ \"./node_modules/@babel/runtime/helpers/readOnlyError.js\");\n/* harmony import */ var _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _frustum_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./frustum.js */ \"./src/Obj/AirLine/frustum.js\");\n/* harmony import */ var _billord_point_line__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./billord_point_line */ \"./src/Obj/AirLine/billord_point_line.js\");\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\nvar PointRoute = /*#__PURE__*/function () {\n function PointRoute() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var viewer = arguments.length > 1 ? arguments[1] : undefined;\n var viewer1 = arguments.length > 2 ? arguments[2] : undefined;\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, PointRoute);\n this.options = _objectSpread({}, options);\n this.viewer = viewer;\n this.viewer1 = viewer1;\n this.entity = null;\n this.frustum = null;\n this.billordPointLineMaps = [];\n this.index = 0;\n this.positions = [];\n PointRoute.setDefaultValue(this);\n this.create();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(PointRoute, [{\n key: \"create\",\n value: function create() {\n var _this = this;\n if (this.options.positions.length < 2) {\n return;\n }\n var that = this;\n var frustumShow = that.options.frustumShow;\n this.entity = this.viewer.entities.add({\n show: this.options.show,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n var positions = [];\n for (var i = 0; i < _this.billordPointLineMaps.length; i++) {\n var element = _this.billordPointLineMaps[i];\n positions.push(element.billboardEntity.position.getValue());\n }\n return positions;\n }, false),\n width: 3,\n material: Cesium.Color.fromCssColorString(this.options.color)\n }\n });\n // 创建点、线、billbord\n for (var i = 0; i < this.options.positions.length; i++) {\n var element = this.options.positions[i];\n // console.log(\"elementelementelement\", element);\n if (frustumShow && i == this.index) {\n this.frustum = new _frustum_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n position: element,\n show: false,\n arr: this.options.positions,\n index: i,\n normalHeight: this.options.normalHeight\n }, this.viewer, this.viewer1);\n }\n var op = new _billord_point_line__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n positions: element,\n index: i + 1,\n saveFun: that.options.saveFun,\n selectFun: that.options.selectFun,\n keyboard: that.options.keyboard,\n updateFrustumFun: that.updateFrustumPosition,\n normalHeight: that.options.normalHeight,\n frustum: that.frustum,\n airHeight: that.options.airHeight\n }, this.viewer);\n this.billordPointLineMaps.push(op);\n }\n this.onKey();\n }\n }, {\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this.frustum.currentFrustumOutline.show = bool;\n this.billordPointLineMaps.forEach(function (item) {\n item.show = bool;\n });\n this.entity.show = bool;\n }\n }\n // 监听键盘事件\n }, {\n key: \"onKey\",\n value: function onKey() {\n var that = this;\n document.addEventListener('keydown', function (event) {\n switch (event.key) {\n case 'ArrowUp':\n that.index += 1;\n that.updateFrustum(true);\n break;\n case 'ArrowDown':\n that.index -= 1;\n that.updateFrustum(false);\n break;\n }\n });\n }\n // 更新frustum\n }, {\n key: \"updateFrustum\",\n value: function updateFrustum(flag) {\n console.log(this.index);\n var obj;\n if (this.index > this.options.positions.length - 1 || this.index < 0) {\n var str = this.index > 0 ? '已选中最后一个航点' : '已选中第一个航点';\n alert(str);\n return;\n }\n for (var i = 0; i < this.billordPointLineMaps.length; i++) {\n var element = this.billordPointLineMaps[i];\n var hpr = null;\n if (i == this.index) {\n var position = element.billboardEntity.position.getValue();\n if (this.index !== 0) {\n obj = this.direction(this.billordPointLineMaps[i - 1].billboardEntity.position.getValue(), element.billboardEntity.position.getValue());\n obj.hpr, _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0___default()(\"hpr\");\n }\n if (this.index == 0) {\n obj = this.direction(this.billordPointLineMaps[0].billboardEntity.position.getValue(), this.billordPointLineMaps[1].billboardEntity.position.getValue());\n obj.hpr, _babel_runtime_helpers_readOnlyError__WEBPACK_IMPORTED_MODULE_0___default()(\"hpr\");\n }\n if (hpr) {\n this.frustum.updateFrustumHPR(hpr.heading, this.frustum.pitch, hpr.roll);\n }\n if (position) {\n this.frustum.updateFrustumPosition('update', position);\n }\n }\n }\n }\n }, {\n key: \"cartesian3Towgs84\",\n value: function cartesian3Towgs84(cartesian) {\n var ellipsoid = this.viewer.scene.globe.ellipsoid;\n var cartesian3 = new Cesium.Cartesian3(cartesian.x, cartesian.y, cartesian.z);\n var cartographic = ellipsoid.cartesianToCartographic(cartesian3);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n var alt = cartographic.height < 0 ? 0 : cartographic.height;\n return {\n lng: lng,\n lat: lat,\n alt: alt\n };\n }\n // 计算一个到另一个点的方向\n }, {\n key: \"direction\",\n value: function direction(pointA, pointB) {\n //向量AB\n var vector2 = Cesium.Cartesian3.subtract(pointA, pointB, new Cesium.Cartesian3());\n //归一化\n var normal = Cesium.Cartesian3.normalize(vector2, new Cesium.Cartesian3());\n //旋转矩阵 rotationMatrixFromPositionVelocity源码中有,并未出现在cesiumAPI中\n var rotationMatrix3 = Cesium.Transforms.rotationMatrixFromPositionVelocity(pointA, normal, Cesium.Ellipsoid.WGS84);\n var modelMatrix4 = Cesium.Matrix4.fromRotationTranslation(rotationMatrix3, pointA);\n // 获取getHeadingPitchRoll\n var m1 = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Matrix4.getTranslation(modelMatrix4, new Cesium.Cartesian3()), Cesium.Ellipsoid.WGS84, new Cesium.Matrix4());\n // 矩阵相除\n var m3 = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(m1, new Cesium.Matrix4()), modelMatrix4, new Cesium.Matrix4());\n // 得到旋转矩阵\n var mat3 = Cesium.Matrix4.getMatrix3(m3, new Cesium.Matrix3());\n // 计算四元数\n var q = Cesium.Quaternion.fromRotationMatrix(mat3);\n // 计算旋转角(弧度)\n var hpr = Cesium.HeadingPitchRoll.fromQuaternion(q);\n // hpr.pitch = hpr.pitch + 3.14 / 2 + 3.14;\n hpr.pitch = 90;\n var orientation = Cesium.Transforms.headingPitchRollQuaternion(pointA, hpr);\n return {\n hpr: hpr,\n orientation: orientation\n };\n }\n /**\r\n *\r\n * @param {index} 索引\r\n */\n // 删除航点\n }, {\n key: \"delPosition\",\n value: function delPosition(index) {\n this.options.positions.splice(index, 1);\n // this.options.positions = this.options.positions.filter((item, index) => index !== i);\n this.remove();\n this.create();\n }\n // 获取最新的positions\n }, {\n key: \"getNewPositions\",\n value: function getNewPositions() {\n var positions = [];\n for (var i = 0; i < this.billordPointLineMaps.length; i++) {\n var element = this.billordPointLineMaps[i];\n var position = this.cartesian3Towgs84(element.billboardEntity.position.getValue());\n positions.push(position);\n }\n return positions;\n }\n // 删除\n }, {\n key: \"remove\",\n value: function remove() {\n this.billordPointLineMaps.forEach(function (item, i) {\n item.remove();\n });\n if (this.frustum) {\n this.frustum.remove();\n }\n this.viewer.entities.remove(this.entity);\n this.billordPointLineMaps = [];\n }\n /**\r\n *\r\n * @param {String} type\r\n * @param {Number} index\r\n * @param {Array} position\r\n */\n // 新增航点 (before,after,end)\n }, {\n key: \"addPoint\",\n value: function addPoint(positions) {\n this.options.positions = positions;\n this.remove();\n this.create();\n }\n // 根据选中的点更新视锥的位置\n }, {\n key: \"updateFrustumPosition\",\n value: function updateFrustumPosition(index) {\n if (!this.billordPointLineMaps || this.billordPointLineMaps.length === 0) return;\n if (this.frustum) {\n this.frustum.show = true;\n }\n var current = this.billordPointLineMaps[index].billboardEntity.position.getValue();\n if (index !== 0) {\n var obj;\n var after = index === this.billordPointLineMaps.length - 1 ? this.billordPointLineMaps[index - 1].billboardEntity.position.getValue() // 获取前一个位置\n : this.billordPointLineMaps[index + 1].billboardEntity.position.getValue(); // 获取下一个位置\n obj = this.direction(index === this.billordPointLineMaps.length - 1 ? after : current, index === this.billordPointLineMaps.length - 1 ? current : after);\n var _obj = obj,\n hpr = _obj.hpr;\n this.frustum.updateFrustumHPR(hpr.heading, Cesium.Math.toRadians(this.frustum.pitch), hpr.roll);\n } else {\n var _obj2;\n var _after = this.billordPointLineMaps[1].billboardEntity.position.getValue();\n _obj2 = this.direction(current, _after);\n var _obj3 = _obj2,\n _hpr = _obj3.hpr;\n this.frustum.updateFrustumHPR(_hpr.heading, Cesium.Math.toRadians(this.frustum.pitch), _hpr.roll);\n }\n if (current) {\n this.frustum.updateFrustumPosition('update', current);\n }\n var position = this.cartesian3Towgs84(current);\n this.billordPointLineMaps.forEach(function (item) {\n item.billboardEntity.label.show = false; // 先将所有元素的 label.show 设置为 false\n });\n var targetItem = this.billordPointLineMaps.find(function (item) {\n return item.billboardEntity.index == index + 1;\n });\n if (targetItem) {\n targetItem.billboardEntity.label.show = true; // 然后找到匹配的 index 设置为 true\n }\n return position;\n }\n }, {\n key: \"flyTo\",\n value: function flyTo() {\n var positionArray = [];\n for (var i = 0; i < this.options.positions.length; i++) {\n var a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.options.positions[i].alt + this.options.height);\n positionArray.push(a.x, a.y, a.z);\n }\n var BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-80.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n }\n //计算航线的长度\n }, {\n key: \"countLength\",\n value: function countLength() {\n if (this.options.positions.length < 2) {\n return 0;\n } else {\n var lineString = [];\n this.options.positions.forEach(function (item) {\n lineString.push([item.lng, item.lat]);\n });\n var line = turf.lineString(lineString);\n return (turf.length(line) * 1000).toFixed(2);\n }\n }\n //计算航线时间\n }, {\n key: \"countTime\",\n value: function countTime() {\n var time = Math.floor(Number(this.countLength())) / this.options.speed;\n var s = Math.floor(time % 60);\n var m = Math.floor(time / 60);\n var str = m + '分' + s + '秒';\n return str;\n }\n }], [{\n key: \"setDefaultValue\",\n value: function setDefaultValue(that) {\n var _that$options$frustum, _that$options$keyboar;\n that.options.positions = that.options.positions || [];\n that.options.show = that.options.show || true;\n that.options.color = that.options.color || '#00d590';\n that.options.height = that.options.height || 500;\n that.options.speed = that.options.speed || 1;\n that.options.frustumShow = (_that$options$frustum = that.options.frustumShow) !== null && _that$options$frustum !== void 0 ? _that$options$frustum : true;\n that.options.saveFun = that.options.saveFun || null;\n that.options.selectFun = that.options.selectFun || null;\n that.options.keyboard = (_that$options$keyboar = that.options.keyboard) !== null && _that$options$keyboar !== void 0 ? _that$options$keyboar : true;\n that.options.normalHeight = that.options.normalHeight || 100;\n that.options.airHeight = that.options.airHeight || 100;\n }\n }]);\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FpckxpbmUvcG9pbnRSb3V0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9PYmovQWlyTGluZS9wb2ludFJvdXRlLmpzPzU1ZjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZSVVNUVU4gZnJvbSAnLi9mcnVzdHVtLmpzJ1xyXG5pbXBvcnQgQmlsbG9yZFBvaW50TGluZSBmcm9tICcuL2JpbGxvcmRfcG9pbnRfbGluZSdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvaW50Um91dGUge1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSwgdmlld2VyLCB2aWV3ZXIxKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy52aWV3ZXIgPSB2aWV3ZXJcclxuICAgIHRoaXMudmlld2VyMSA9IHZpZXdlcjFcclxuICAgIHRoaXMuZW50aXR5ID0gbnVsbFxyXG4gICAgdGhpcy5mcnVzdHVtID0gbnVsbFxyXG4gICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcyA9IFtdXHJcbiAgICB0aGlzLmluZGV4ID0gMFxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXVxyXG4gICAgUG9pbnRSb3V0ZS5zZXREZWZhdWx0VmFsdWUodGhpcylcclxuICAgIHRoaXMuY3JlYXRlKClcclxuICB9XHJcbiAgc3RhdGljIHNldERlZmF1bHRWYWx1ZSh0aGF0KSB7XHJcbiAgICB0aGF0Lm9wdGlvbnMucG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9ucyB8fCBbXVxyXG4gICAgdGhhdC5vcHRpb25zLnNob3cgPSB0aGF0Lm9wdGlvbnMuc2hvdyB8fCB0cnVlXHJcbiAgICB0aGF0Lm9wdGlvbnMuY29sb3IgPSB0aGF0Lm9wdGlvbnMuY29sb3IgfHwgJyMwMGQ1OTAnXHJcbiAgICB0aGF0Lm9wdGlvbnMuaGVpZ2h0ID0gdGhhdC5vcHRpb25zLmhlaWdodCB8fCA1MDBcclxuICAgIHRoYXQub3B0aW9ucy5zcGVlZCA9IHRoYXQub3B0aW9ucy5zcGVlZCB8fCAxXHJcbiAgICB0aGF0Lm9wdGlvbnMuZnJ1c3R1bVNob3cgPSB0aGF0Lm9wdGlvbnMuZnJ1c3R1bVNob3cgPz8gdHJ1ZVxyXG4gICAgdGhhdC5vcHRpb25zLnNhdmVGdW4gPSB0aGF0Lm9wdGlvbnMuc2F2ZUZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMuc2VsZWN0RnVuID0gdGhhdC5vcHRpb25zLnNlbGVjdEZ1biB8fCBudWxsXHJcbiAgICB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPSB0aGF0Lm9wdGlvbnMua2V5Ym9hcmQgPz8gdHJ1ZVxyXG4gICAgdGhhdC5vcHRpb25zLm5vcm1hbEhlaWdodCA9IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQgfHwgMTAwXHJcbiAgICB0aGF0Lm9wdGlvbnMuYWlySGVpZ2h0ID0gdGhhdC5vcHRpb25zLmFpckhlaWdodCB8fCAxMDBcclxuICB9XHJcbiAgY3JlYXRlKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgbGV0IHsgZnJ1c3R1bVNob3cgfSA9IHRoYXQub3B0aW9uc1xyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICBzaG93OiB0aGlzLm9wdGlvbnMuc2hvdyxcclxuICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICBwb3NpdGlvbnM6IG5ldyBDZXNpdW0uQ2FsbGJhY2tQcm9wZXJ0eSgoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1tpXVxyXG4gICAgICAgICAgICBwb3NpdGlvbnMucHVzaChlbGVtZW50LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbi5nZXRWYWx1ZSgpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHBvc2l0aW9uc1xyXG4gICAgICAgIH0sIGZhbHNlKSxcclxuICAgICAgICB3aWR0aDogMyxcclxuICAgICAgICBtYXRlcmlhbDogQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyh0aGlzLm9wdGlvbnMuY29sb3IpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyDliJvlu7rngrnjgIHnur/jgIFiaWxsYm9yZFxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiZWxlbWVudGVsZW1lbnRlbGVtZW50XCIsIGVsZW1lbnQpO1xyXG4gICAgICBpZiAoZnJ1c3R1bVNob3cgJiYgaSA9PSB0aGlzLmluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5mcnVzdHVtID0gbmV3IEZSVVNUVU4oXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBlbGVtZW50LFxyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgYXJyOiB0aGlzLm9wdGlvbnMucG9zaXRpb25zLFxyXG4gICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgbm9ybWFsSGVpZ2h0OiB0aGlzLm9wdGlvbnMubm9ybWFsSGVpZ2h0XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy52aWV3ZXIsXHJcbiAgICAgICAgICB0aGlzLnZpZXdlcjFcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgbGV0IG9wID0gbmV3IEJpbGxvcmRQb2ludExpbmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcG9zaXRpb25zOiBlbGVtZW50LFxyXG4gICAgICAgICAgaW5kZXg6IGkgKyAxLFxyXG4gICAgICAgICAgc2F2ZUZ1bjogdGhhdC5vcHRpb25zLnNhdmVGdW4sXHJcbiAgICAgICAgICBzZWxlY3RGdW46IHRoYXQub3B0aW9ucy5zZWxlY3RGdW4sXHJcbiAgICAgICAgICBrZXlib2FyZDogdGhhdC5vcHRpb25zLmtleWJvYXJkLFxyXG4gICAgICAgICAgdXBkYXRlRnJ1c3R1bUZ1bjogdGhhdC51cGRhdGVGcnVzdHVtUG9zaXRpb24sXHJcbiAgICAgICAgICBub3JtYWxIZWlnaHQ6IHRoYXQub3B0aW9ucy5ub3JtYWxIZWlnaHQsXHJcbiAgICAgICAgICBmcnVzdHVtOiB0aGF0LmZydXN0dW0sXHJcbiAgICAgICAgICBhaXJIZWlnaHQ6IHRoYXQub3B0aW9ucy5haXJIZWlnaHRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRoaXMudmlld2VyXHJcbiAgICAgIClcclxuICAgICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5wdXNoKG9wKVxyXG4gICAgfVxyXG4gICAgdGhpcy5vbktleSgpXHJcbiAgfVxyXG4gIGdldCBzaG93KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zaG93XHJcbiAgfVxyXG4gIHNldCBzaG93KGJvb2wpIHtcclxuICAgIGlmICh0eXBlb2YgYm9vbCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuZnJ1c3R1bS5jdXJyZW50RnJ1c3R1bU91dGxpbmUuc2hvdyA9IGJvb2xcclxuICAgICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uc2hvdyA9IGJvb2xcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5lbnRpdHkuc2hvdyA9IGJvb2xcclxuICAgIH1cclxuICB9XHJcbiAgLy8g55uR5ZCs6ZSu55uY5LqL5Lu2XHJcbiAgb25LZXkoKSB7XHJcbiAgICBsZXQgdGhhdCA9IHRoaXNcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgICAgdGhhdC5pbmRleCArPSAxXHJcbiAgICAgICAgICB0aGF0LnVwZGF0ZUZydXN0dW0odHJ1ZSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICAgIHRoYXQuaW5kZXggLT0gMVxyXG4gICAgICAgICAgdGhhdC51cGRhdGVGcnVzdHVtKGZhbHNlKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy8g5pu05pawZnJ1c3R1bVxyXG4gIHVwZGF0ZUZydXN0dW0oZmxhZykge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5pbmRleClcclxuICAgIGxldCBvYmpcclxuICAgIGlmICh0aGlzLmluZGV4ID4gdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGggLSAxIHx8IHRoaXMuaW5kZXggPCAwKSB7XHJcbiAgICAgIGxldCBzdHIgPSB0aGlzLmluZGV4ID4gMCA/ICflt7LpgInkuK3mnIDlkI7kuIDkuKroiKrngrknIDogJ+W3sumAieS4reesrOS4gOS4quiIqueCuSdcclxuICAgICAgYWxlcnQoc3RyKVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1tpXVxyXG4gICAgICBjb25zdCBocHIgPSBudWxsXHJcbiAgICAgIGlmIChpID09IHRoaXMuaW5kZXgpIHtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSBlbGVtZW50LmJpbGxib2FyZEVudGl0eS5wb3NpdGlvbi5nZXRWYWx1ZSgpXHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXggIT09IDApIHtcclxuICAgICAgICAgIG9iaiA9IHRoaXMuZGlyZWN0aW9uKFxyXG4gICAgICAgICAgICB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzW1xyXG4gICAgICAgICAgICAgIGkgLSAxXHJcbiAgICAgICAgICAgIF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVsZW1lbnQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGhwciA9IG9iai5ocHJcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgb2JqID0gdGhpcy5kaXJlY3Rpb24oXHJcbiAgICAgICAgICAgIHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbMF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbMV0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIGhwciA9IG9iai5ocHJcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGhwcikge1xyXG4gICAgICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1IUFIoXHJcbiAgICAgICAgICAgIGhwci5oZWFkaW5nLFxyXG4gICAgICAgICAgICB0aGlzLmZydXN0dW0ucGl0Y2gsXHJcbiAgICAgICAgICAgIGhwci5yb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb3NpdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1Qb3NpdGlvbigndXBkYXRlJywgcG9zaXRpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNhcnRlc2lhbjNUb3dnczg0KGNhcnRlc2lhbikge1xyXG4gICAgdmFyIGVsbGlwc29pZCA9IHRoaXMudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZFxyXG4gICAgdmFyIGNhcnRlc2lhbjMgPSBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoXHJcbiAgICAgIGNhcnRlc2lhbi54LFxyXG4gICAgICBjYXJ0ZXNpYW4ueSxcclxuICAgICAgY2FydGVzaWFuLnpcclxuICAgIClcclxuICAgIHZhciBjYXJ0b2dyYXBoaWMgPSBlbGxpcHNvaWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoY2FydGVzaWFuMylcclxuICAgIHZhciBsYXQgPSBDZXNpdW0uTWF0aC50b0RlZ3JlZXMoY2FydG9ncmFwaGljLmxhdGl0dWRlKVxyXG4gICAgdmFyIGxuZyA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlKVxyXG4gICAgdmFyIGFsdCA9IGNhcnRvZ3JhcGhpYy5oZWlnaHQgPCAwID8gMCA6IGNhcnRvZ3JhcGhpYy5oZWlnaHRcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxuZzogbG5nLFxyXG4gICAgICBsYXQ6IGxhdCxcclxuICAgICAgYWx0OiBhbHRcclxuICAgIH1cclxuICB9XHJcbiAgLy8g6K6h566X5LiA5Liq5Yiw5Y+m5LiA5Liq54K555qE5pa55ZCRXHJcbiAgZGlyZWN0aW9uKHBvaW50QSwgcG9pbnRCKSB7XHJcbiAgICAvL+WQkemHj0FCXHJcbiAgICBjb25zdCB2ZWN0b3IyID0gQ2VzaXVtLkNhcnRlc2lhbjMuc3VidHJhY3QoXHJcbiAgICAgIHBvaW50QSxcclxuICAgICAgcG9pbnRCLFxyXG4gICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgKVxyXG4gICAgLy/lvZLkuIDljJZcclxuICAgIGNvbnN0IG5vcm1hbCA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZSh2ZWN0b3IyLCBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKSlcclxuICAgIC8v5peL6L2s55+p6Zi1IHJvdGF0aW9uTWF0cml4RnJvbVBvc2l0aW9uVmVsb2NpdHnmupDnoIHkuK3mnInvvIzlubbmnKrlh7rnjrDlnKhjZXNpdW1BUEnkuK1cclxuICAgIGNvbnN0IHJvdGF0aW9uTWF0cml4MyA9IENlc2l1bS5UcmFuc2Zvcm1zLnJvdGF0aW9uTWF0cml4RnJvbVBvc2l0aW9uVmVsb2NpdHkoXHJcbiAgICAgIHBvaW50QSxcclxuICAgICAgbm9ybWFsLFxyXG4gICAgICBDZXNpdW0uRWxsaXBzb2lkLldHUzg0XHJcbiAgICApXHJcbiAgICBjb25zdCBtb2RlbE1hdHJpeDQgPSBDZXNpdW0uTWF0cml4NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihcclxuICAgICAgcm90YXRpb25NYXRyaXgzLFxyXG4gICAgICBwb2ludEFcclxuICAgIClcclxuICAgIC8vIOiOt+WPlmdldEhlYWRpbmdQaXRjaFJvbGxcclxuICAgIGxldCBtMSA9IENlc2l1bS5UcmFuc2Zvcm1zLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKFxyXG4gICAgICBDZXNpdW0uTWF0cml4NC5nZXRUcmFuc2xhdGlvbihtb2RlbE1hdHJpeDQsIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpKSxcclxuICAgICAgQ2VzaXVtLkVsbGlwc29pZC5XR1M4NCxcclxuICAgICAgbmV3IENlc2l1bS5NYXRyaXg0KClcclxuICAgIClcclxuICAgIC8vIOefqemYteebuOmZpFxyXG4gICAgbGV0IG0zID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHkoXHJcbiAgICAgIENlc2l1bS5NYXRyaXg0LmludmVyc2UobTEsIG5ldyBDZXNpdW0uTWF0cml4NCgpKSxcclxuICAgICAgbW9kZWxNYXRyaXg0LFxyXG4gICAgICBuZXcgQ2VzaXVtLk1hdHJpeDQoKVxyXG4gICAgKVxyXG4gICAgLy8g5b6X5Yiw5peL6L2s55+p6Zi1XHJcbiAgICBsZXQgbWF0MyA9IENlc2l1bS5NYXRyaXg0LmdldE1hdHJpeDMobTMsIG5ldyBDZXNpdW0uTWF0cml4MygpKVxyXG4gICAgLy8g6K6h566X5Zub5YWD5pWwXHJcbiAgICBsZXQgcSA9IENlc2l1bS5RdWF0ZXJuaW9uLmZyb21Sb3RhdGlvbk1hdHJpeChtYXQzKVxyXG4gICAgLy8g6K6h566X5peL6L2s6KeSKOW8p+W6pilcclxuICAgIGxldCBocHIgPSBDZXNpdW0uSGVhZGluZ1BpdGNoUm9sbC5mcm9tUXVhdGVybmlvbihxKVxyXG4gICAgLy8gaHByLnBpdGNoID0gaHByLnBpdGNoICsgMy4xNCAvIDIgKyAzLjE0O1xyXG4gICAgaHByLnBpdGNoID0gOTBcclxuICAgIGxldCBvcmllbnRhdGlvbiA9IENlc2l1bS5UcmFuc2Zvcm1zLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uKHBvaW50QSwgaHByKVxyXG4gICAgcmV0dXJuIHsgaHByLCBvcmllbnRhdGlvbiB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtpbmRleH0g57Si5byVXHJcbiAgICovXHJcbiAgLy8g5Yig6Zmk6Iiq54K5XHJcbiAgZGVsUG9zaXRpb24oaW5kZXgpIHtcclxuICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgLy8gdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gaW5kZXggIT09IGkpO1xyXG4gICAgdGhpcy5yZW1vdmUoKVxyXG4gICAgdGhpcy5jcmVhdGUoKVxyXG4gIH1cclxuICAvLyDojrflj5bmnIDmlrDnmoRwb3NpdGlvbnNcclxuICBnZXROZXdQb3NpdGlvbnMoKSB7XHJcbiAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1tpXVxyXG4gICAgICBsZXQgcG9zaXRpb24gPSB0aGlzLmNhcnRlc2lhbjNUb3dnczg0KFxyXG4gICAgICAgIGVsZW1lbnQuYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKClcclxuICAgICAgKVxyXG4gICAgICBwb3NpdGlvbnMucHVzaChwb3NpdGlvbilcclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvbnNcclxuICB9XHJcbiAgLy8g5Yig6ZmkXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgIGl0ZW0ucmVtb3ZlKClcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5mcnVzdHVtKSB7XHJcbiAgICAgIHRoaXMuZnJ1c3R1bS5yZW1vdmUoKVxyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXR5KVxyXG4gICAgdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcyA9IFtdXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcclxuICAgKiBAcGFyYW0ge051bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0FycmF5fSBwb3NpdGlvblxyXG4gICAqL1xyXG4gIC8vIOaWsOWinuiIqueCuSDvvIhiZWZvcmXvvIxhZnRlcu+8jGVuZO+8iVxyXG4gIGFkZFBvaW50KHBvc2l0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IHBvc2l0aW9uc1xyXG4gICAgdGhpcy5yZW1vdmUoKVxyXG4gICAgdGhpcy5jcmVhdGUoKVxyXG4gIH1cclxuICAvLyDmoLnmja7pgInkuK3nmoTngrnmm7TmlrDop4bplKXnmoTkvY3nva5cclxuICB1cGRhdGVGcnVzdHVtUG9zaXRpb24oaW5kZXgpIHtcclxuICAgIGlmICghdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcyB8fCB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuXHJcbiAgICBpZiAodGhpcy5mcnVzdHVtKSB7XHJcbiAgICAgIHRoaXMuZnJ1c3R1bS5zaG93ID0gdHJ1ZVxyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzW1xyXG4gICAgICBpbmRleFxyXG4gICAgXS5iaWxsYm9hcmRFbnRpdHkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgaWYgKGluZGV4ICE9PSAwKSB7XHJcbiAgICAgIGxldCBvYmpcclxuICAgICAgbGV0IGFmdGVyID1cclxuICAgICAgICBpbmRleCA9PT0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwcy5sZW5ndGggLSAxXHJcbiAgICAgICAgICA/IHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbXHJcbiAgICAgICAgICAgICAgaW5kZXggLSAxXHJcbiAgICAgICAgICAgIF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCkgLy8g6I635Y+W5YmN5LiA5Liq5L2N572uXHJcbiAgICAgICAgICA6IHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHNbXHJcbiAgICAgICAgICAgICAgaW5kZXggKyAxXHJcbiAgICAgICAgICAgIF0uYmlsbGJvYXJkRW50aXR5LnBvc2l0aW9uLmdldFZhbHVlKCkgLy8g6I635Y+W5LiL5LiA5Liq5L2N572uXHJcbiAgICAgIG9iaiA9IHRoaXMuZGlyZWN0aW9uKFxyXG4gICAgICAgIGluZGV4ID09PSB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzLmxlbmd0aCAtIDEgPyBhZnRlciA6IGN1cnJlbnQsXHJcbiAgICAgICAgaW5kZXggPT09IHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHMubGVuZ3RoIC0gMSA/IGN1cnJlbnQgOiBhZnRlclxyXG4gICAgICApXHJcbiAgICAgIGxldCB7IGhwciB9ID0gb2JqXHJcbiAgICAgIHRoaXMuZnJ1c3R1bS51cGRhdGVGcnVzdHVtSFBSKFxyXG4gICAgICAgIGhwci5oZWFkaW5nLFxyXG4gICAgICAgIENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLmZydXN0dW0ucGl0Y2gpLFxyXG4gICAgICAgIGhwci5yb2xsXHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvYmpcclxuICAgICAgbGV0IGFmdGVyID0gdGhpcy5iaWxsb3JkUG9pbnRMaW5lTWFwc1sxXS5iaWxsYm9hcmRFbnRpdHkucG9zaXRpb24uZ2V0VmFsdWUoKVxyXG4gICAgICBvYmogPSB0aGlzLmRpcmVjdGlvbihjdXJyZW50LCBhZnRlcilcclxuICAgICAgbGV0IHsgaHByIH0gPSBvYmpcclxuICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1IUFIoXHJcbiAgICAgICAgaHByLmhlYWRpbmcsXHJcbiAgICAgICAgQ2VzaXVtLk1hdGgudG9SYWRpYW5zKHRoaXMuZnJ1c3R1bS5waXRjaCksXHJcbiAgICAgICAgaHByLnJvbGxcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgaWYgKGN1cnJlbnQpIHtcclxuICAgICAgdGhpcy5mcnVzdHVtLnVwZGF0ZUZydXN0dW1Qb3NpdGlvbigndXBkYXRlJywgY3VycmVudClcclxuICAgIH1cclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMuY2FydGVzaWFuM1Rvd2dzODQoY3VycmVudClcclxuICAgIHRoaXMuYmlsbG9yZFBvaW50TGluZU1hcHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaXRlbS5iaWxsYm9hcmRFbnRpdHkubGFiZWwuc2hvdyA9IGZhbHNlIC8vIOWFiOWwhuaJgOacieWFg+e0oOeahCBsYWJlbC5zaG93IOiuvue9ruS4uiBmYWxzZVxyXG4gICAgfSlcclxuICAgIGNvbnN0IHRhcmdldEl0ZW0gPSB0aGlzLmJpbGxvcmRQb2ludExpbmVNYXBzLmZpbmQoXHJcbiAgICAgIGl0ZW0gPT4gaXRlbS5iaWxsYm9hcmRFbnRpdHkuaW5kZXggPT0gaW5kZXggKyAxXHJcbiAgICApXHJcbiAgICBpZiAodGFyZ2V0SXRlbSkge1xyXG4gICAgICB0YXJnZXRJdGVtLmJpbGxib2FyZEVudGl0eS5sYWJlbC5zaG93ID0gdHJ1ZSAvLyDnhLblkI7mib7liLDljLnphY3nmoQgaW5kZXgg6K6+572u5Li6IHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvblxyXG4gIH1cclxuICBmbHlUbygpIHtcclxuICAgIGxldCBwb3NpdGlvbkFycmF5ID0gW11cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYSA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubG5nLFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0uYWx0ICsgdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgICApXHJcbiAgICAgIHBvc2l0aW9uQXJyYXkucHVzaChhLngsIGEueSwgYS56KVxyXG4gICAgfVxyXG4gICAgbGV0IEJvdW5kaW5nU3BoZXJlID0gQ2VzaXVtLkJvdW5kaW5nU3BoZXJlLmZyb21WZXJ0aWNlcyhwb3NpdGlvbkFycmF5KVxyXG4gICAgdGhpcy52aWV3ZXIuY2FtZXJhLmZseVRvQm91bmRpbmdTcGhlcmUoQm91bmRpbmdTcGhlcmUsIHtcclxuICAgICAgb2Zmc2V0OiB7XHJcbiAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgcGl0Y2g6IENlc2l1bS5NYXRoLnRvUmFkaWFucygtODAuMCksXHJcbiAgICAgICAgcm9sbDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgLy/orqHnrpfoiKrnur/nmoTplb/luqZcclxuICBjb3VudExlbmd0aCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb25zLmxlbmd0aCA8IDIpIHtcclxuICAgICAgcmV0dXJuIDBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBsaW5lU3RyaW5nID0gW11cclxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGxpbmVTdHJpbmcucHVzaChbaXRlbS5sbmcsIGl0ZW0ubGF0XSlcclxuICAgICAgfSlcclxuICAgICAgdmFyIGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcobGluZVN0cmluZylcclxuICAgICAgcmV0dXJuICh0dXJmLmxlbmd0aChsaW5lKSAqIDEwMDApLnRvRml4ZWQoMilcclxuICAgIH1cclxuICB9XHJcbiAgLy/orqHnrpfoiKrnur/ml7bpl7RcclxuICBjb3VudFRpbWUoKSB7XHJcbiAgICBsZXQgdGltZSA9IE1hdGguZmxvb3IoTnVtYmVyKHRoaXMuY291bnRMZW5ndGgoKSkpIC8gdGhpcy5vcHRpb25zLnNwZWVkXHJcbiAgICBsZXQgcyA9IE1hdGguZmxvb3IodGltZSAlIDYwKVxyXG4gICAgbGV0IG0gPSBNYXRoLmZsb29yKHRpbWUgLyA2MClcclxuICAgIGxldCBzdHIgPSBtICsgJ+WIhicgKyBzICsgJ+enkidcclxuICAgIHJldHVybiBzdHJcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFJQTtBQUNBO0FBS0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUlBO0FBSUE7QUFJQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBclZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/AirLine/pointRoute.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/CircleViewShed/_element.js":
-/*!*****************************************************!*\
- !*** ./src/Obj/Analysis/CircleViewShed/_element.js ***!
- \*****************************************************/
-/*! exports provided: html */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n \\n
\\n
\\n
\\u89C6\\u70B9\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\n
\\n \\u91C7\\u6837\\u7CBE\\u5EA6\\n \\n
\\n
\\n
\\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0NpcmNsZVZpZXdTaGVkL19lbGVtZW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9DaXJjbGVWaWV3U2hlZC9fZWxlbWVudC5qcz9iNTE5Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWwoKSB7XHJcbiAgICByZXR1cm4gYFxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPuinhueCuemrmOW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiMFwiIG1heD1cIjk5OTk5OVwiIHN0ZXA9XCIwLjFcIiBAbW9kZWw9XCJ2aWV3UG9pbnRIZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+6YeH5qC357K+5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCIxXCIgbWF4PVwiMTAwXCIgc3RlcD1cIjFcIiBAbW9kZWw9XCJwcmVjaXNpb25cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIGBcclxufVxyXG5cclxuZXhwb3J0IHsgaHRtbCB9Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQXFCQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CircleViewShed/_element.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/CircleViewShed/index.js":
-/*!**************************************************!*\
- !*** ./src/Obj/Analysis/CircleViewShed/index.js ***!
- \**************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/@babel/runtime/helpers/slicedToArray.js\");\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../Element/Dialog/eventBinding */ \"./src/Obj/Element/Dialog/eventBinding.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/CircleViewShed/_element.js\");\n\n\n\n\n\n\n\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n// ViewShed.js\n\n\n\n\n\n\n/**\r\n * @constructor\r\n * @description 可视域分析\r\n * @param sdk\r\n * @param {Object} options 选项。\r\n * @param {Number} options.viewPointHeight=1.8 视点高度(m)。\r\n * @param {Number} options.precision=20 精度。\r\n * @param {String} options.visibleAreaColor=#008000 可视区域颜色。\r\n * @param {String} options.invisibleAreaColor=#FF0000 不可视区域颜色。\r\n */\nvar _intervalEvents = /*#__PURE__*/new WeakMap();\nvar CircleViewShed = /*#__PURE__*/function (_Tools) {\n function CircleViewShed(sdk) {\n var _this2;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CircleViewShed);\n _this2 = _callSuper(this, CircleViewShed, [sdk, options]);\n _classPrivateFieldInitSpec(_this2, _intervalEvents, new Map());\n _this2.viewer = sdk.viewer;\n _this2.options = {};\n _this2.options.visibleAreaColor = options.visibleAreaColor || '#008000';\n _this2.options.invisibleAreaColor = options.invisibleAreaColor || '#FF0000';\n _this2.ids = [];\n _this2.primitives = [];\n _this2.viewpointPrimitive = null;\n _this2._elms = {};\n _this2.precision = options.precision;\n _this2.viewPointHeight = options.viewPointHeight;\n _this2.Dialog = _Dialog;\n _this2._EventBinding = new _Element_Dialog_eventBinding__WEBPACK_IMPORTED_MODULE_12__[\"default\"]();\n _this2.html = null;\n _this2.tools = new _Tools__WEBPACK_IMPORTED_MODULE_11__[\"default\"](sdk);\n YJ.Analysis.AnalysesResults.push(_this2);\n // CircleViewShed.edit(this)\n\n // CircleViewShed.create(this)\n return _this2;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7___default()(CircleViewShed, _Tools);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(CircleViewShed, [{\n key: \"draw\",\n value: function draw() {\n var terrainAvailability = this.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n return '未加载地形数据!';\n }\n CircleViewShed.create(this);\n }\n }, {\n key: \"viewPointHeight\",\n get: function get() {\n return this.options.viewPointHeight;\n },\n set: function set(v) {\n var viewPointHeight = Math.floor(Number(v) * 10) / 10;\n if (isNaN(viewPointHeight)) {\n viewPointHeight = 1.8;\n }\n if (viewPointHeight < 0) {\n viewPointHeight = 0;\n }\n this.options.viewPointHeight = viewPointHeight;\n this._elms.viewPointHeight && this._elms.viewPointHeight.forEach(function (item) {\n item.value = viewPointHeight;\n });\n }\n }, {\n key: \"viewPointHeights\",\n get: function get() {\n return this.viewPointHeight;\n },\n set: function set(v) {\n var viewPointHeight = Math.floor(Number(v) * 10) / 10;\n if (isNaN(viewPointHeight)) {\n viewPointHeight = 1.8;\n }\n if (viewPointHeight < 0) {\n viewPointHeight = 0;\n }\n this.viewPointHeight = viewPointHeight;\n }\n }, {\n key: \"precision\",\n get: function get() {\n return this.options.precision;\n },\n set: function set(v) {\n var precision = Math.floor(Number(v));\n if (isNaN(precision)) {\n precision = 20;\n } else if (precision < 1) {\n precision = 1;\n }\n this.options.precision = precision;\n this._elms.precision && this._elms.precision.forEach(function (item) {\n item.value = precision;\n });\n }\n }, {\n key: \"precisions\",\n get: function get() {\n return this.precision;\n },\n set: function set(val) {\n this.precision = val;\n }\n }, {\n key: \"analyse\",\n value:\n // static async edit(that) {\n // if (that._DialogObject && that._DialogObject.close) {\n // that._DialogObject.close()\n // that._DialogObject = null\n // }\n // that._DialogObject = await new Dialog(that.sdk.viewer._container, {\n // title: '圆形视域分析',\n // left: '180px',\n // top: '100px',\n // closeCallBack: () => {\n // that.Dialog.closeCallBack && that.Dialog.closeCallBack()\n // YJ.Measure.SetMeasureStatus(false)\n // }\n // })\n // await that._DialogObject.init()\n // that._DialogObject._element.body.className =\n // that._DialogObject._element.body.className + ' circle-view-shed'\n // let contentElm = document.createElement('div')\n // contentElm.innerHTML = html()\n // that._DialogObject.contentAppChild(contentElm)\n\n // let drawElm = document.createElement('button')\n // drawElm.innerHTML = '绘制'\n // drawElm.addEventListener('click', () => {\n // let terrainAvailability = that.viewer.terrainProvider.availability;\n // if (!terrainAvailability) {\n // window.ELEMENT && window.ELEMENT.Message({\n // message: '未加载地形数据!',\n // type: 'warning',\n // duration: 1500\n // });\n // return\n // }\n // CircleViewShed.create(that)\n // })\n // that._DialogObject.footAppChild(drawElm)\n\n // let all_elm = contentElm.getElementsByTagName('*')\n // that._EventBinding.on(that, all_elm)\n // that._elms = that._EventBinding.element\n // }\n\n function analyse() {\n var _this3 = this;\n // this.destroy()\n var center = [this.center.lng, this.center.lat];\n var radius = this.radius / 1000;\n var circle = turf.circle(center, radius, {\n steps: 180,\n units: 'kilometers',\n properties: {\n foo: 'bar'\n }\n });\n if (!this.viewpointPrimitive) {\n this.viewpointPrimitive = this.viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());\n }\n if (!this.viewBillboardPrimitive) {\n this.viewBillboardPrimitive = this.viewer.scene.primitives.add(new Cesium.BillboardCollection());\n }\n var array = [];\n var distance = radius / this.precision;\n for (var i = 1; i < circle.geometry.coordinates[0].length; i++) {\n var line = turf.lineString([center, circle.geometry.coordinates[0][i]]);\n var array2 = [];\n for (var j = 1; j <= this.precision; j++) {\n var sliced = turf.lineSliceAlong(line, 0, distance * j, {\n units: 'kilometers'\n });\n array2.push([sliced.geometry.coordinates[1][0], sliced.geometry.coordinates[1][1]]);\n }\n array.push(array2);\n }\n var viewPoint = Cesium.Cartesian3.fromDegrees(this.center.lng, this.center.lat, this.center.alt + this.viewPointHeight);\n var instances = [];\n CircleViewShed.getcanvas(this).then(function (canvas) {\n return _this3.viewBillboardPrimitive.add({\n position: viewPoint,\n image: canvas,\n width: 200,\n height: 140,\n verticalOrigin: Cesium.VerticalOrigin.BOTTOM,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n });\n });\n this.viewpointPrimitive.add({\n position: viewPoint,\n color: Cesium.Color.AQUA.withAlpha(1),\n pixelSize: 6\n });\n var m = 0;\n var _this = this;\n var key = this.randomString();\n var intervalEvent = setInterval(function () {\n if (m >= array.length) {\n var item = _classPrivateFieldGet(_intervalEvents, _this3).get(key);\n item && clearInterval(item.event);\n return;\n }\n InBatches(m);\n m += 1;\n }, 0);\n _classPrivateFieldGet(_intervalEvents, this).set(key, {\n event: intervalEvent\n });\n function InBatches(k) {\n var instances = [];\n var i = k;\n for (var _j = 0; _j < array[i].length; _j++) {\n var pt1 = array[i][_j];\n var pt2 = void 0;\n var pt3 = void 0;\n var pt4 = array[i][_j - 1];\n if (i == array.length - 1) {\n pt2 = array[0][_j];\n pt3 = array[0][_j - 1];\n } else {\n pt2 = array[i + 1][_j];\n pt3 = array[i + 1][_j - 1];\n }\n if (_j == 0) {\n pt3 = [].concat(center);\n pt4 = [];\n }\n var cpt = [(pt1[0] + pt3[0]) / 2, (pt1[1] + pt3[1]) / 2];\n var cartographic = Cesium.Cartographic.fromDegrees(cpt[0], cpt[1]);\n var height = _this.viewer.scene.globe.getHeight(cartographic);\n var targetPoint = Cesium.Cartesian3.fromDegrees(cpt[0], cpt[1], height);\n var direction = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(targetPoint, viewPoint, new Cesium.Cartesian3()), new Cesium.Cartesian3());\n var ray = new Cesium.Ray(viewPoint, direction);\n var pickedObjects = _this.viewer.scene.drillPickFromRay(ray, _this.primitives);\n var result = void 0;\n for (var _i = 0; _i < pickedObjects.length; _i++) {\n if (pickedObjects[_i].position) {\n result = pickedObjects[_i];\n break;\n }\n }\n var color = Cesium.Color.LIME;\n if (result && Math.abs(result.position.x - targetPoint.x) > 0.01 && Math.abs(result.position.y - targetPoint.y) > 0.01 && Math.abs(result.position.z - targetPoint.z) > 0.01) {\n color = Cesium.Color.RED;\n }\n var polyline = new Cesium.GroundPolylineGeometry({\n positions: Cesium.Cartesian3.fromDegreesArray([].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt1), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt2), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt3), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt4), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2___default()(pt1))),\n width: 2\n });\n var polygonInstance = new Cesium.GeometryInstance({\n geometry: polyline,\n name: 'ViewershedPolygon',\n attributes: {\n color: Cesium.ColorGeometryInstanceAttribute.fromColor(color),\n show: new Cesium.ShowGeometryInstanceAttribute(true) //显示或者隐藏\n }\n });\n instances.push(polygonInstance);\n }\n _this.primitives.push(_this.viewer.scene.primitives.add(new Cesium.GroundPolylinePrimitive({\n geometryInstances: instances,\n appearance: new Cesium.PolylineColorAppearance()\n })));\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _iterator = _createForOfIteratorHelper(_classPrivateFieldGet(_intervalEvents, this)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_step.value, 2),\n key = _step$value[0],\n value = _step$value[1];\n clearInterval(value.event);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n _classPrivateFieldSet(_intervalEvents, this, new Map());\n for (var i = 0; i < this.primitives.length; i++) {\n this.viewer.scene.primitives.remove(this.primitives[i]);\n }\n this.primitives = [];\n if (this.viewpointPrimitive) {\n this.viewer.scene.primitives.remove(this.viewpointPrimitive);\n this.viewpointPrimitive = null;\n }\n if (this.viewBillboardPrimitive) {\n this.viewer.scene.primitives.remove(this.viewBillboardPrimitive);\n this.viewBillboardPrimitive = null;\n }\n YJ.Measure.SetMeasureStatus(false);\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var terrainAvailability = that.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n return '未加载地形数据!';\n }\n var count = 0;\n if (!YJ.Measure.GetMeasureStatus()) {\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n var Draw = new YJ.Draw.DrawCircle(that.sdk, {\n tipText: '左键单击确定中心点位置,右键单击取消区域绘制!CTRL+右键单击撤销'\n });\n Draw.start(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee(a, options) {\n var positions;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (options) {\n _context.next = 9;\n break;\n }\n _context.t0 = a;\n _context.next = _context.t0 === 0 ? 4 : _context.t0 === 1 ? 6 : 8;\n break;\n case 4:\n Draw.tipText = '左键单击确定中心点位置,右键单击取消区域绘制!CTRL+右键单击撤销';\n return _context.abrupt(\"break\", 8);\n case 6:\n Draw.tipText = '左键单击确定圆形视域半径,完成圆形视域分析!';\n return _context.abrupt(\"break\", 8);\n case 8:\n return _context.abrupt(\"return\");\n case 9:\n that.radius = options.radius;\n _context.next = 12;\n return Cesium.sampleTerrainMostDetailed(that.sdk.viewer.terrainProvider, [Cesium.Cartographic.fromDegrees(options.center.lng, options.center.lat)]);\n case 12:\n positions = _context.sent;\n that.center = {\n lng: options.center.lng,\n lat: options.center.lat,\n alt: positions[0].height\n };\n _context.next = 16;\n return that.analyse();\n case 16:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n console.log('上一次测量未结束');\n }\n }\n }, {\n key: \"getcanvas\",\n value: function getcanvas(that) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n canvas.width = 220;\n canvas.height = 140;\n canvas.style.background = '#000000';\n var img = new Image();\n var data = [{\n images: that.getSourceRootPath() + '/img/bubble/lng.png',\n text: '经度:' + parseFloat(that.center.lng.toFixed(10)) + '°'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/lat.png',\n text: '纬度:' + parseFloat(that.center.lat.toFixed(10)) + '°'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/h.png',\n text: '视高:' + that.viewPointHeight + ' m'\n }, {\n images: that.getSourceRootPath() + '/img/bubble/radius.png',\n text: '半径:' + that.radius + ' m'\n }];\n img.src = that.getSourceRootPath() + '/img/bubble/bubble.png';\n var imagesLoaded = 0;\n return new Promise(/*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.mark(function _callee2(resolve, reject) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_8___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n img.onload = function () {\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n data.forEach(function (item, index) {\n var img = new Image();\n img.src = item.images;\n img.onload = function () {\n ctx.drawImage(img, 12, 12 + index * 26);\n ctx.fillStyle = '#fff';\n ctx.font = '12px Arial';\n ctx.fillText(item.text, 44, 28 + index * 26);\n imagesLoaded++;\n if (imagesLoaded === data.length) {\n resolve(canvas);\n }\n };\n });\n };\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }());\n }\n }]);\n}(_Tools__WEBPACK_IMPORTED_MODULE_11__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (CircleViewShed);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0NpcmNsZVZpZXdTaGVkL2luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL09iai9BbmFseXNpcy9DaXJjbGVWaWV3U2hlZC9pbmRleC5qcz9mNzU5Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFZpZXdTaGVkLmpzXHJcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi8uLi9FdmVudCdcclxuaW1wb3J0IE1vdXNlVGlwIGZyb20gJy4uLy4uLy4uL01vdXNlVGlwJ1xyXG5pbXBvcnQgVG9vbHMgZnJvbSAnLi4vLi4vLi4vVG9vbHMnXHJcbmltcG9ydCBFdmVudEJpbmRpbmcgZnJvbSAnLi4vLi4vRWxlbWVudC9EaWFsb2cvZXZlbnRCaW5kaW5nJ1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnXHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tICcuL19lbGVtZW50J1xyXG4vKipcclxuICogQGNvbnN0cnVjdG9yXHJcbiAqIEBkZXNjcmlwdGlvbiDlj6/op4bln5/liIbmnpBcclxuICogQHBhcmFtIHNka1xyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyDpgInpobnjgIJcclxuICogQHBhcmFtIHtOdW1iZXJ9IG9wdGlvbnMudmlld1BvaW50SGVpZ2h0PTEuOCDop4bngrnpq5jluqYobSnjgIJcclxuICogQHBhcmFtIHtOdW1iZXJ9IG9wdGlvbnMucHJlY2lzaW9uPTIwIOeyvuW6puOAglxyXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9ucy52aXNpYmxlQXJlYUNvbG9yPSMwMDgwMDAg5Y+v6KeG5Yy65Z+f6aKc6Imy44CCXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb25zLmludmlzaWJsZUFyZWFDb2xvcj0jRkYwMDAwIOS4jeWPr+inhuWMuuWfn+minOiJsuOAglxyXG4gKi9cclxuY2xhc3MgQ2lyY2xlVmlld1NoZWQgZXh0ZW5kcyBUb29scyB7XHJcbiAgI2ludGVydmFsRXZlbnRzID0gbmV3IE1hcCgpXHJcblxyXG4gIGNvbnN0cnVjdG9yKHNkaywgb3B0aW9ucyA9IHt9LCBfRGlhbG9nID0ge30pIHtcclxuICAgIHN1cGVyKHNkaywgb3B0aW9ucylcclxuXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXJcclxuICAgIHRoaXMub3B0aW9ucyA9IHt9XHJcbiAgICB0aGlzLm9wdGlvbnMudmlzaWJsZUFyZWFDb2xvciA9IG9wdGlvbnMudmlzaWJsZUFyZWFDb2xvciB8fCAnIzAwODAwMCdcclxuICAgIHRoaXMub3B0aW9ucy5pbnZpc2libGVBcmVhQ29sb3IgPSBvcHRpb25zLmludmlzaWJsZUFyZWFDb2xvciB8fCAnI0ZGMDAwMCdcclxuICAgIHRoaXMuaWRzID0gW11cclxuICAgIHRoaXMucHJpbWl0aXZlcyA9IFtdXHJcbiAgICB0aGlzLnZpZXdwb2ludFByaW1pdGl2ZSA9IG51bGxcclxuXHJcbiAgICB0aGlzLl9lbG1zID0ge31cclxuICAgIHRoaXMucHJlY2lzaW9uID0gb3B0aW9ucy5wcmVjaXNpb25cclxuICAgIHRoaXMudmlld1BvaW50SGVpZ2h0ID0gb3B0aW9ucy52aWV3UG9pbnRIZWlnaHRcclxuICAgIHRoaXMuRGlhbG9nID0gX0RpYWxvZ1xyXG4gICAgdGhpcy5fRXZlbnRCaW5kaW5nID0gbmV3IEV2ZW50QmluZGluZygpXHJcbiAgICB0aGlzLmh0bWwgPSBudWxsXHJcbiAgICB0aGlzLnRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICAgIFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0cy5wdXNoKHRoaXMpXHJcbiAgICAvLyBDaXJjbGVWaWV3U2hlZC5lZGl0KHRoaXMpXHJcbiAgICBcclxuICAgIC8vIENpcmNsZVZpZXdTaGVkLmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuICBkcmF3KCkge1xyXG4gICAgbGV0IHRlcnJhaW5BdmFpbGFiaWxpdHkgPSB0aGlzLnZpZXdlci50ZXJyYWluUHJvdmlkZXIuYXZhaWxhYmlsaXR5O1xyXG4gICAgaWYgKCF0ZXJyYWluQXZhaWxhYmlsaXR5KSB7XHJcbiAgICAgIHJldHVybiAn5pyq5Yqg6L295Zyw5b2i5pWw5o2u77yBJ1xyXG4gICAgfVxyXG4gICAgQ2lyY2xlVmlld1NoZWQuY3JlYXRlKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgdmlld1BvaW50SGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy52aWV3UG9pbnRIZWlnaHRcclxuICB9XHJcblxyXG4gIHNldCB2aWV3UG9pbnRIZWlnaHQodikge1xyXG4gICAgbGV0IHZpZXdQb2ludEhlaWdodCA9IE1hdGguZmxvb3IoTnVtYmVyKHYpICogMTApIC8gMTBcclxuICAgIGlmIChpc05hTih2aWV3UG9pbnRIZWlnaHQpKSB7XHJcbiAgICAgIHZpZXdQb2ludEhlaWdodCA9IDEuOFxyXG4gICAgfVxyXG4gICAgaWYgKHZpZXdQb2ludEhlaWdodCA8IDApIHtcclxuICAgICAgdmlld1BvaW50SGVpZ2h0ID0gMFxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnZpZXdQb2ludEhlaWdodCA9IHZpZXdQb2ludEhlaWdodFxyXG4gICAgdGhpcy5fZWxtcy52aWV3UG9pbnRIZWlnaHQgJiZcclxuICAgICAgdGhpcy5fZWxtcy52aWV3UG9pbnRIZWlnaHQuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gdmlld1BvaW50SGVpZ2h0XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCB2aWV3UG9pbnRIZWlnaHRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld1BvaW50SGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgdmlld1BvaW50SGVpZ2h0cyh2KSB7XHJcbiAgICBsZXQgdmlld1BvaW50SGVpZ2h0ID0gTWF0aC5mbG9vcihOdW1iZXIodikgKiAxMCkgLyAxMFxyXG4gICAgaWYgKGlzTmFOKHZpZXdQb2ludEhlaWdodCkpIHtcclxuICAgICAgdmlld1BvaW50SGVpZ2h0ID0gMS44XHJcbiAgICB9XHJcbiAgICBpZiAodmlld1BvaW50SGVpZ2h0IDwgMCkge1xyXG4gICAgICB2aWV3UG9pbnRIZWlnaHQgPSAwXHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdQb2ludEhlaWdodCA9IHZpZXdQb2ludEhlaWdodFxyXG4gIH1cclxuXHJcbiAgZ2V0IHByZWNpc2lvbigpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJlY2lzaW9uXHJcbiAgfVxyXG5cclxuICBzZXQgcHJlY2lzaW9uKHYpIHtcclxuICAgIGxldCBwcmVjaXNpb24gPSBNYXRoLmZsb29yKE51bWJlcih2KSlcclxuICAgIGlmIChpc05hTihwcmVjaXNpb24pKSB7XHJcbiAgICAgIHByZWNpc2lvbiA9IDIwXHJcbiAgICB9IGVsc2UgaWYgKHByZWNpc2lvbiA8IDEpIHtcclxuICAgICAgcHJlY2lzaW9uID0gMVxyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnByZWNpc2lvbiA9IHByZWNpc2lvblxyXG4gICAgdGhpcy5fZWxtcy5wcmVjaXNpb24gJiZcclxuICAgICAgdGhpcy5fZWxtcy5wcmVjaXNpb24uZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLnZhbHVlID0gcHJlY2lzaW9uXHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldCBwcmVjaXNpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uXHJcbiAgfVxyXG5cclxuICBzZXQgcHJlY2lzaW9ucyh2YWwpIHtcclxuICAgIHRoaXMucHJlY2lzaW9uID0gdmFsXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIGxldCB0ZXJyYWluQXZhaWxhYmlsaXR5ID0gdGhhdC52aWV3ZXIudGVycmFpblByb3ZpZGVyLmF2YWlsYWJpbGl0eTtcclxuICAgIGlmICghdGVycmFpbkF2YWlsYWJpbGl0eSkge1xyXG4gICAgICByZXR1cm4gJ+acquWKoOi9veWcsOW9ouaVsOaNru+8gSdcclxuICAgIH1cclxuICAgIGxldCBjb3VudCA9IDBcclxuICAgIGlmICghWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgICBsZXQgRHJhdyA9IG5ldyBZSi5EcmF3LkRyYXdDaXJjbGUodGhhdC5zZGssIHtcclxuICAgICAgICB0aXBUZXh0OiAn5bem6ZSu5Y2V5Ye756Gu5a6a5Lit5b+D54K55L2N572u77yM5Y+z6ZSu5Y2V5Ye75Y+W5raI5Yy65Z+f57uY5Yi277yBQ1RSTCvlj7PplK7ljZXlh7vmkqTplIAnXHJcbiAgICAgIH0pXHJcbiAgICAgIERyYXcuc3RhcnQoYXN5bmMgKGEsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAvLyB0aGF0LmNlbnRlciA9IG9wdGlvbnMuY2VudGVyXHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGEpIHtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgIERyYXcudGlwVGV4dCA9ICflt6bplK7ljZXlh7vnoa7lrprkuK3lv4PngrnkvY3nva7vvIzlj7PplK7ljZXlh7vlj5bmtojljLrln5/nu5jliLbvvIFDVFJMK+WPs+mUruWNleWHu+aSpOmUgCdcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgICAgIERyYXcudGlwVGV4dCA9ICflt6bplK7ljZXlh7vnoa7lrprlnIblvaLop4bln5/ljYrlvoTvvIzlrozmiJDlnIblvaLop4bln5/liIbmnpDvvIEnXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhhdC5yYWRpdXMgPSBvcHRpb25zLnJhZGl1c1xyXG4gICAgICAgIGxldCBwb3NpdGlvbnMgPSBhd2FpdCBDZXNpdW0uc2FtcGxlVGVycmFpbk1vc3REZXRhaWxlZChcclxuICAgICAgICAgIHRoYXQuc2RrLnZpZXdlci50ZXJyYWluUHJvdmlkZXIsXHJcbiAgICAgICAgICBbQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhvcHRpb25zLmNlbnRlci5sbmcsIG9wdGlvbnMuY2VudGVyLmxhdCldXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGF0LmNlbnRlciA9IHtcclxuICAgICAgICAgIGxuZzogb3B0aW9ucy5jZW50ZXIubG5nLFxyXG4gICAgICAgICAgbGF0OiBvcHRpb25zLmNlbnRlci5sYXQsXHJcbiAgICAgICAgICBhbHQ6IHBvc2l0aW9uc1swXS5oZWlnaHRcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhhdC5hbmFseXNlKClcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gc3RhdGljIGFzeW5jIGVkaXQodGhhdCkge1xyXG4gIC8vICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAvLyAgICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAvLyAgICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGF0LnNkay52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gIC8vICAgICB0aXRsZTogJ+WchuW9ouinhuWfn+WIhuaekCcsXHJcbiAgLy8gICAgIGxlZnQ6ICcxODBweCcsXHJcbiAgLy8gICAgIHRvcDogJzEwMHB4JyxcclxuICAvLyAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gIC8vICAgICAgIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhhdC5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgLy8gICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKGZhbHNlKVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vICAgYXdhaXQgdGhhdC5fRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gIC8vICAgdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lID1cclxuICAvLyAgICAgdGhhdC5fRGlhbG9nT2JqZWN0Ll9lbGVtZW50LmJvZHkuY2xhc3NOYW1lICsgJyBjaXJjbGUtdmlldy1zaGVkJ1xyXG4gIC8vICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxyXG4gIC8vICAgY29udGVudEVsbS5pbm5lckhUTUwgPSBodG1sKClcclxuICAvLyAgIHRoYXQuX0RpYWxvZ09iamVjdC5jb250ZW50QXBwQ2hpbGQoY29udGVudEVsbSlcclxuXHJcbiAgLy8gICBsZXQgZHJhd0VsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpXHJcbiAgLy8gICBkcmF3RWxtLmlubmVySFRNTCA9ICfnu5jliLYnXHJcbiAgLy8gICBkcmF3RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gIC8vICAgICBsZXQgdGVycmFpbkF2YWlsYWJpbGl0eSA9IHRoYXQudmlld2VyLnRlcnJhaW5Qcm92aWRlci5hdmFpbGFiaWxpdHk7XHJcbiAgLy8gICAgIGlmICghdGVycmFpbkF2YWlsYWJpbGl0eSkge1xyXG4gIC8vICAgICAgIHdpbmRvdy5FTEVNRU5UICYmIHdpbmRvdy5FTEVNRU5ULk1lc3NhZ2Uoe1xyXG4gIC8vICAgICAgICAgbWVzc2FnZTogJ+acquWKoOi9veWcsOW9ouaVsOaNru+8gScsXHJcbiAgLy8gICAgICAgICB0eXBlOiAnd2FybmluZycsXHJcbiAgLy8gICAgICAgICBkdXJhdGlvbjogMTUwMFxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICAgIHJldHVyblxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIENpcmNsZVZpZXdTaGVkLmNyZWF0ZSh0aGF0KVxyXG4gIC8vICAgfSlcclxuICAvLyAgIHRoYXQuX0RpYWxvZ09iamVjdC5mb290QXBwQ2hpbGQoZHJhd0VsbSlcclxuXHJcbiAgLy8gICBsZXQgYWxsX2VsbSA9IGNvbnRlbnRFbG0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKVxyXG4gIC8vICAgdGhhdC5fRXZlbnRCaW5kaW5nLm9uKHRoYXQsIGFsbF9lbG0pXHJcbiAgLy8gICB0aGF0Ll9lbG1zID0gdGhhdC5fRXZlbnRCaW5kaW5nLmVsZW1lbnRcclxuICAvLyB9XHJcblxyXG4gIGFuYWx5c2UoKSB7XHJcbiAgICAvLyB0aGlzLmRlc3Ryb3koKVxyXG4gICAgbGV0IGNlbnRlciA9IFt0aGlzLmNlbnRlci5sbmcsIHRoaXMuY2VudGVyLmxhdF1cclxuICAgIGxldCByYWRpdXMgPSB0aGlzLnJhZGl1cyAvIDEwMDBcclxuICAgIGxldCBjaXJjbGUgPSB0dXJmLmNpcmNsZShjZW50ZXIsIHJhZGl1cywge1xyXG4gICAgICBzdGVwczogMTgwLFxyXG4gICAgICB1bml0czogJ2tpbG9tZXRlcnMnLFxyXG4gICAgICBwcm9wZXJ0aWVzOiB7IGZvbzogJ2JhcicgfVxyXG4gICAgfSlcclxuICAgIGlmICghdGhpcy52aWV3cG9pbnRQcmltaXRpdmUpIHtcclxuICAgICAgdGhpcy52aWV3cG9pbnRQcmltaXRpdmUgPSB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLmFkZChcclxuICAgICAgICBuZXcgQ2VzaXVtLlBvaW50UHJpbWl0aXZlQ29sbGVjdGlvbigpXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52aWV3QmlsbGJvYXJkUHJpbWl0aXZlKSB7XHJcbiAgICAgIHRoaXMudmlld0JpbGxib2FyZFByaW1pdGl2ZSA9IHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMuYWRkKFxyXG4gICAgICAgIG5ldyBDZXNpdW0uQmlsbGJvYXJkQ29sbGVjdGlvbigpXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBsZXQgYXJyYXkgPSBbXVxyXG4gICAgbGV0IGRpc3RhbmNlID0gcmFkaXVzIC8gdGhpcy5wcmVjaXNpb25cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgY2lyY2xlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBsaW5lID0gdHVyZi5saW5lU3RyaW5nKFtjZW50ZXIsIGNpcmNsZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtpXV0pXHJcbiAgICAgIGxldCBhcnJheTIgPSBbXVxyXG4gICAgICBmb3IgKGxldCBqID0gMTsgaiA8PSB0aGlzLnByZWNpc2lvbjsgaisrKSB7XHJcbiAgICAgICAgbGV0IHNsaWNlZCA9IHR1cmYubGluZVNsaWNlQWxvbmcobGluZSwgMCwgZGlzdGFuY2UgKiBqLCB7XHJcbiAgICAgICAgICB1bml0czogJ2tpbG9tZXRlcnMnXHJcbiAgICAgICAgfSlcclxuICAgICAgICBhcnJheTIucHVzaChbXHJcbiAgICAgICAgICBzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1bMF0sXHJcbiAgICAgICAgICBzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1bMV1cclxuICAgICAgICBdKVxyXG4gICAgICB9XHJcbiAgICAgIGFycmF5LnB1c2goYXJyYXkyKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB2aWV3UG9pbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgdGhpcy5jZW50ZXIubG5nLFxyXG4gICAgICB0aGlzLmNlbnRlci5sYXQsXHJcbiAgICAgIHRoaXMuY2VudGVyLmFsdCArIHRoaXMudmlld1BvaW50SGVpZ2h0XHJcbiAgICApXHJcbiAgICBsZXQgaW5zdGFuY2VzID0gW11cclxuICAgIENpcmNsZVZpZXdTaGVkLmdldGNhbnZhcyh0aGlzKS50aGVuKGNhbnZhcyA9PlxyXG4gICAgICB0aGlzLnZpZXdCaWxsYm9hcmRQcmltaXRpdmUuYWRkKHtcclxuICAgICAgICBwb3NpdGlvbjogdmlld1BvaW50LFxyXG4gICAgICAgIGltYWdlOiBjYW52YXMsXHJcbiAgICAgICAgd2lkdGg6IDIwMCxcclxuICAgICAgICBoZWlnaHQ6IDE0MCxcclxuICAgICAgICB2ZXJ0aWNhbE9yaWdpbjogQ2VzaXVtLlZlcnRpY2FsT3JpZ2luLkJPVFRPTSxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgdGhpcy52aWV3cG9pbnRQcmltaXRpdmUuYWRkKHtcclxuICAgICAgcG9zaXRpb246IHZpZXdQb2ludCxcclxuICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5BUVVBLndpdGhBbHBoYSgxKSxcclxuICAgICAgcGl4ZWxTaXplOiA2XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBtID0gMFxyXG4gICAgbGV0IF90aGlzID0gdGhpc1xyXG4gICAgbGV0IGtleSA9IHRoaXMucmFuZG9tU3RyaW5nKClcclxuICAgIGxldCBpbnRlcnZhbEV2ZW50ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICBpZiAobSA+PSBhcnJheS5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMuI2ludGVydmFsRXZlbnRzLmdldChrZXkpXHJcbiAgICAgICAgaXRlbSAmJiBjbGVhckludGVydmFsKGl0ZW0uZXZlbnQpXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgSW5CYXRjaGVzKG0pXHJcbiAgICAgIG0gKz0gMVxyXG4gICAgfSwgMClcclxuICAgIHRoaXMuI2ludGVydmFsRXZlbnRzLnNldChrZXksIHsgZXZlbnQ6IGludGVydmFsRXZlbnQgfSlcclxuXHJcbiAgICBmdW5jdGlvbiBJbkJhdGNoZXMoaykge1xyXG4gICAgICBsZXQgaW5zdGFuY2VzID0gW11cclxuICAgICAgbGV0IGkgPSBrXHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYXJyYXlbaV0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBsZXQgcHQxID0gYXJyYXlbaV1bal1cclxuICAgICAgICBsZXQgcHQyXHJcbiAgICAgICAgbGV0IHB0M1xyXG4gICAgICAgIGxldCBwdDQgPSBhcnJheVtpXVtqIC0gMV1cclxuICAgICAgICBpZiAoaSA9PSBhcnJheS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICBwdDIgPSBhcnJheVswXVtqXVxyXG4gICAgICAgICAgcHQzID0gYXJyYXlbMF1baiAtIDFdXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHB0MiA9IGFycmF5W2kgKyAxXVtqXVxyXG4gICAgICAgICAgcHQzID0gYXJyYXlbaSArIDFdW2ogLSAxXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaiA9PSAwKSB7XHJcbiAgICAgICAgICBwdDMgPSBbLi4uY2VudGVyXVxyXG4gICAgICAgICAgcHQ0ID0gW11cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNwdCA9IFsocHQxWzBdICsgcHQzWzBdKSAvIDIsIChwdDFbMV0gKyBwdDNbMV0pIC8gMl1cclxuICAgICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhjcHRbMF0sIGNwdFsxXSlcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gX3RoaXMudmlld2VyLnNjZW5lLmdsb2JlLmdldEhlaWdodChjYXJ0b2dyYXBoaWMpXHJcbiAgICAgICAgbGV0IHRhcmdldFBvaW50ID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoY3B0WzBdLCBjcHRbMV0sIGhlaWdodClcclxuXHJcbiAgICAgICAgbGV0IGRpcmVjdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLm5vcm1hbGl6ZShcclxuICAgICAgICAgIENlc2l1bS5DYXJ0ZXNpYW4zLnN1YnRyYWN0KFxyXG4gICAgICAgICAgICB0YXJnZXRQb2ludCxcclxuICAgICAgICAgICAgdmlld1BvaW50LFxyXG4gICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIG5ldyBDZXNpdW0uQ2FydGVzaWFuMygpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIGxldCByYXkgPSBuZXcgQ2VzaXVtLlJheSh2aWV3UG9pbnQsIGRpcmVjdGlvbilcclxuICAgICAgICBsZXQgcGlja2VkT2JqZWN0cyA9IF90aGlzLnZpZXdlci5zY2VuZS5kcmlsbFBpY2tGcm9tUmF5KFxyXG4gICAgICAgICAgcmF5LFxyXG4gICAgICAgICAgX3RoaXMucHJpbWl0aXZlc1xyXG4gICAgICAgIClcclxuICAgICAgICBsZXQgcmVzdWx0XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWNrZWRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAocGlja2VkT2JqZWN0c1tpXS5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBwaWNrZWRPYmplY3RzW2ldXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjb2xvciA9IENlc2l1bS5Db2xvci5MSU1FXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcmVzdWx0ICYmXHJcbiAgICAgICAgICBNYXRoLmFicyhyZXN1bHQucG9zaXRpb24ueCAtIHRhcmdldFBvaW50LngpID4gMC4wMSAmJlxyXG4gICAgICAgICAgTWF0aC5hYnMocmVzdWx0LnBvc2l0aW9uLnkgLSB0YXJnZXRQb2ludC55KSA+IDAuMDEgJiZcclxuICAgICAgICAgIE1hdGguYWJzKHJlc3VsdC5wb3NpdGlvbi56IC0gdGFyZ2V0UG9pbnQueikgPiAwLjAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb2xvciA9IENlc2l1bS5Db2xvci5SRURcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBvbHlsaW5lID0gbmV3IENlc2l1bS5Hcm91bmRQb2x5bGluZUdlb21ldHJ5KHtcclxuICAgICAgICAgIHBvc2l0aW9uczogQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShbXHJcbiAgICAgICAgICAgIC4uLnB0MSxcclxuICAgICAgICAgICAgLi4ucHQyLFxyXG4gICAgICAgICAgICAuLi5wdDMsXHJcbiAgICAgICAgICAgIC4uLnB0NCxcclxuICAgICAgICAgICAgLi4ucHQxXHJcbiAgICAgICAgICBdKSxcclxuICAgICAgICAgIHdpZHRoOiAyXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgbGV0IHBvbHlnb25JbnN0YW5jZSA9IG5ldyBDZXNpdW0uR2VvbWV0cnlJbnN0YW5jZSh7XHJcbiAgICAgICAgICBnZW9tZXRyeTogcG9seWxpbmUsXHJcbiAgICAgICAgICBuYW1lOiAnVmlld2Vyc2hlZFBvbHlnb24nLFxyXG4gICAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgICBjb2xvcjogQ2VzaXVtLkNvbG9yR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZS5mcm9tQ29sb3IoY29sb3IpLFxyXG4gICAgICAgICAgICBzaG93OiBuZXcgQ2VzaXVtLlNob3dHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlKHRydWUpIC8v5pi+56S65oiW6ICF6ZqQ6JePXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpbnN0YW5jZXMucHVzaChwb2x5Z29uSW5zdGFuY2UpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIF90aGlzLnByaW1pdGl2ZXMucHVzaChcclxuICAgICAgICBfdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5hZGQoXHJcbiAgICAgICAgICBuZXcgQ2VzaXVtLkdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlKHtcclxuICAgICAgICAgICAgZ2VvbWV0cnlJbnN0YW5jZXM6IGluc3RhbmNlcyxcclxuICAgICAgICAgICAgYXBwZWFyYW5jZTogbmV3IENlc2l1bS5Qb2x5bGluZUNvbG9yQXBwZWFyYW5jZSgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldGNhbnZhcyh0aGF0KSB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxyXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuICAgIGNhbnZhcy53aWR0aCA9IDIyMFxyXG4gICAgY2FudmFzLmhlaWdodCA9IDE0MFxyXG4gICAgY2FudmFzLnN0eWxlLmJhY2tncm91bmQgPSAnIzAwMDAwMCdcclxuICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKVxyXG4gICAgY29uc3QgZGF0YSA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvYnViYmxlL2xuZy5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfnu4/luqbvvJonICsgcGFyc2VGbG9hdCh0aGF0LmNlbnRlci5sbmcudG9GaXhlZCgxMCkpICsgJ8KwJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaW1hZ2VzOiB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvbGF0LnBuZycsXHJcbiAgICAgICAgdGV4dDogJ+e6rOW6pu+8micgKyBwYXJzZUZsb2F0KHRoYXQuY2VudGVyLmxhdC50b0ZpeGVkKDEwKSkgKyAnwrAnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpbWFnZXM6IHRoYXQuZ2V0U291cmNlUm9vdFBhdGgoKSArICcvaW1nL2J1YmJsZS9oLnBuZycsXHJcbiAgICAgICAgdGV4dDogJ+inhumrmO+8micgKyB0aGF0LnZpZXdQb2ludEhlaWdodCArICcgbSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczogdGhhdC5nZXRTb3VyY2VSb290UGF0aCgpICsgJy9pbWcvYnViYmxlL3JhZGl1cy5wbmcnLFxyXG4gICAgICAgIHRleHQ6ICfljYrlvoTvvJonICsgdGhhdC5yYWRpdXMgKyAnIG0nXHJcbiAgICAgIH1cclxuICAgIF1cclxuICAgIGltZy5zcmMgPSB0aGF0LmdldFNvdXJjZVJvb3RQYXRoKCkgKyAnL2ltZy9idWJibGUvYnViYmxlLnBuZydcclxuICAgIGxldCBpbWFnZXNMb2FkZWQgPSAwXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpXHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKClcclxuICAgICAgICAgIGltZy5zcmMgPSBpdGVtLmltYWdlc1xyXG4gICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDEyLCAxMiArIGluZGV4ICogMjYpXHJcbiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAnI2ZmZidcclxuICAgICAgICAgICAgY3R4LmZvbnQgPSAnMTJweCBBcmlhbCdcclxuICAgICAgICAgICAgY3R4LmZpbGxUZXh0KGl0ZW0udGV4dCwgNDQsIDI4ICsgaW5kZXggKiAyNilcclxuICAgICAgICAgICAgaW1hZ2VzTG9hZGVkKytcclxuICAgICAgICAgICAgaWYgKGltYWdlc0xvYWRlZCA9PT0gZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICByZXNvbHZlKGNhbnZhcylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy4jaW50ZXJ2YWxFdmVudHMpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh2YWx1ZS5ldmVudClcclxuICAgIH1cclxuICAgIHRoaXMuI2ludGVydmFsRXZlbnRzID0gbmV3IE1hcCgpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJpbWl0aXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5wcmltaXRpdmVzLnJlbW92ZSh0aGlzLnByaW1pdGl2ZXNbaV0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnByaW1pdGl2ZXMgPSBbXVxyXG4gICAgaWYgKHRoaXMudmlld3BvaW50UHJpbWl0aXZlKSB7XHJcbiAgICAgIHRoaXMudmlld2VyLnNjZW5lLnByaW1pdGl2ZXMucmVtb3ZlKHRoaXMudmlld3BvaW50UHJpbWl0aXZlKVxyXG4gICAgICB0aGlzLnZpZXdwb2ludFByaW1pdGl2ZSA9IG51bGxcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnZpZXdCaWxsYm9hcmRQcmltaXRpdmUpIHtcclxuICAgICAgdGhpcy52aWV3ZXIuc2NlbmUucHJpbWl0aXZlcy5yZW1vdmUodGhpcy52aWV3QmlsbGJvYXJkUHJpbWl0aXZlKVxyXG4gICAgICB0aGlzLnZpZXdCaWxsYm9hcmRQcmltaXRpdmUgPSBudWxsXHJcbiAgICB9XHJcbiAgICBZSi5NZWFzdXJlLlNldE1lYXN1cmVTdGF0dXMoZmFsc2UpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVWaWV3U2hlZFxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFhQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFLQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQVFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQWtEQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBdFRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUZBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFJQTtBQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBNE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUF1QkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CircleViewShed/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/Contour/index.js":
-/*!*******************************************!*\
- !*** ./src/Obj/Analysis/Contour/index.js ***!
- \*******************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n\n\n\nvar ContourAnalysis = /*#__PURE__*/function () {\n /**\r\n * @constructor 等高线分析\r\n * @param sdk\r\n * **/\n function ContourAnalysis(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ContourAnalysis);\n this.viewer = sdk.viewer;\n this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_2__[\"default\"](sdk);\n var terrainAvailability = this.viewer.terrainProvider.availability;\n if (!terrainAvailability) {\n this.error = '未加载地形数据!';\n // this.tools.message({ type: 'warning', text: this.error })\n return;\n }\n this.positions = options.positions;\n this.interfaceNum = options.interfaceNum || 25; //内插时均分的数量,即沿着边界长或宽均分成n分进行插点,默认值25\n this.colorFill = options.colorFill || [\"#8CEA00\", \"#B7FF4A\", \"#FFFF37\", \"#FFE66F\", \"#FFD1A4\", \"#FFCBB3\", \"#FFBD9D\", \"#FFAD86\", \"#FF9D6F\", \"#FF8F59\", \"#FF8040\", \"#FF5809\", \"#F75000\", \"#D94600\", \"#BB3D00\", \"#A23400\", \"#842B00\", \"#642100\", \"#4D0000\", \"#2F0000\"]; //等高线赋值颜色,内含default值\n this.countorLineList = Cesium.defaultValue(options.countorLineList, []);\n YJ.Analysis.AnalysesResults.push(this);\n this.createNewLine();\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ContourAnalysis, [{\n key: \"type\",\n get: function get() {\n return 'ContourAnalysis';\n }\n }, {\n key: \"createNewLine\",\n value: function createNewLine() {\n ContourAnalysis.interpolatePoint(this);\n }\n\n //利用turf在box内进行插点\n }, {\n key: \"getObjectIndex\",\n value:\n /**\r\n * 返回随机插入的数在数组中的位置\r\n * @param {*} arr 元数组\r\n * @param {*} num 随机数\r\n * @returns 序号\r\n * @example getObjectIndex([0,218,325,333,444],354)=>4;\r\n */\n function getObjectIndex(arr, num) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] > num) {\n return i;\n }\n }\n }\n }, {\n key: \"clear\",\n value: function clear(countorLine) {\n if (countorLine) {\n this.viewer.dataSources.remove(countorLine);\n var index = this.countorLineList.indexOf(countorLine);\n this.countorLineList.splice(index, 1);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this = this;\n this.countorLineList.forEach(function (element) {\n _this.viewer.dataSources.remove(element);\n });\n this.countorLineList = [];\n }\n }], [{\n key: \"interpolatePoint\",\n value: function interpolatePoint(that) {\n var curPoints = that.positions;\n var features = [];\n var boundaryCoord = {\n minX: 360,\n maxX: -360,\n minY: 180,\n maxY: -180\n }; //绘制几何图形的外围矩形box\n for (var index = 0; index < curPoints.length; index++) {\n var element = Cesium.Cartesian3.fromDegrees(curPoints[index].lng, curPoints[index].lat, curPoints[index].alt);\n var ellipsoid = that.viewer.scene.globe.ellipsoid;\n var cartographic = ellipsoid.cartesianToCartographic(element);\n var lat = Cesium.Math.toDegrees(cartographic.latitude);\n var lng = Cesium.Math.toDegrees(cartographic.longitude);\n boundaryCoord.maxY = Math.max(lat, boundaryCoord.maxY);\n boundaryCoord.minY = Math.min(lat, boundaryCoord.minY);\n boundaryCoord.maxX = Math.max(lng, boundaryCoord.maxX);\n boundaryCoord.minX = Math.min(lng, boundaryCoord.minX);\n var curFeature = {\n type: \"Feature\",\n properties: {},\n geometry: {\n type: \"Point\",\n coordinates: [lng, lat]\n }\n };\n features.push(curFeature);\n }\n var boundaryJson = {\n type: \"FeatureCollection\",\n features: features\n };\n turf.featureEach(boundaryJson, function (point) {\n point.properties.height = 0;\n });\n var options = {\n gridType: \"points\",\n property: \"height\",\n units: \"kilometers\"\n };\n var from = turf.point([boundaryCoord.minX, boundaryCoord.minY]);\n var to = turf.point([boundaryCoord.maxX, boundaryCoord.maxY]);\n var diagonalDistance = turf.rhumbDistance(from, to, {\n units: \"kilometers\"\n });\n var grid = turf.interpolate(boundaryJson, diagonalDistance / that.interfaceNum, options);\n var minHeight = 10000000; //最低点高程值\n var maxHeight = -100000000; //最高点高程值\n turf.featureEach(grid, function (point) {\n var pos = point.geometry.coordinates;\n var cartographic = Cesium.Cartographic.fromDegrees(pos[0], pos[1]);\n var height = that.viewer.scene.globe.getHeight(cartographic);\n maxHeight = Math.max(height, maxHeight);\n minHeight = Math.min(height, minHeight);\n point.properties.height = height;\n });\n var breaks = [];\n var stepCount = that.colorFill.length - 1;\n var step = (maxHeight - minHeight) / stepCount;\n for (var _index = 0; _index < stepCount + 1; _index++) {\n breaks.push(Math.ceil(minHeight + step * _index));\n }\n // console.log('grid', grid)\n var linesJson = turf.isolines(grid, breaks, {\n zProperty: \"height\"\n });\n var _countorLine = Cesium.GeoJsonDataSource.load(linesJson, {\n clampToGround: true\n });\n // console.log(linesJson)\n _countorLine.then(function (dataSource) {\n console.log(dataSource);\n that.countorLine = dataSource; //最终计算生成的等高线对象,GeoJsonDataSource\n that.countorLineList.push(dataSource); //等高线数组\n that.viewer.dataSources.add(dataSource);\n var entities = dataSource.entities.values;\n for (var _index2 = 0; _index2 < entities.length; _index2++) {\n var _element = entities[_index2];\n var center = getPolylineCenter(_element.polyline);\n _element.position = center;\n // dataSource.entities.add(new Cesium.Entity({\n // position: center,\n // label: {\n // text: element.properties.height._value + '',\n // font: '20px Microsoft YaHei',\n // fillColor: Cesium.Color.fromCssColorString('#f1d20c'),\n // style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n // disableDepthTestDistance: Number.POSITIVE_INFINITY,\n // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND\n // },\n // }))\n // element.label = new Cesium.LabelGraphics({\n\n // })\n var cur_index = that.getObjectIndex(breaks, _element.properties.height._value);\n if (cur_index) {\n _element.polyline.material = Cesium.Color.fromCssColorString(that.colorFill[cur_index - 1]);\n }\n }\n });\n function getPolylineCenter(polyline) {\n var tools = new _Tools__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n var positions = polyline.positions;\n var length = positions._value.length;\n var array = [];\n for (var i = 0; i < length; i++) {\n var pos = tools.cartesian3Towgs84(positions._value[i], that.viewer);\n array.push([pos.lng, pos.lat]);\n }\n var line = turf.lineString(array);\n var distance = turf.length(line, {\n units: \"kilometers\"\n });\n var along = turf.along(line, distance / 2, {\n units: \"kilometers\"\n });\n return Cesium.Cartesian3.fromDegrees(along.geometry.coordinates[0], along.geometry.coordinates[1], 0);\n }\n }\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (ContourAnalysis);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0NvbnRvdXIvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0NvbnRvdXIvaW5kZXguanM/ZjE3NSJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmltcG9ydCBUb29scyBmcm9tICcuLi8uLi8uLi9Ub29scyc7XHJcbmNsYXNzIENvbnRvdXJBbmFseXNpcyB7XHJcbiAgLyoqXHJcbiAqIEBjb25zdHJ1Y3RvciDnrYnpq5jnur/liIbmnpBcclxuICogQHBhcmFtIHNka1xyXG4gKiAqKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgdGhpcy52aWV3ZXIgPSBzZGsudmlld2VyXHJcbiAgICB0aGlzLnRvb2xzID0gbmV3IFRvb2xzKHNkaylcclxuICAgIGxldCB0ZXJyYWluQXZhaWxhYmlsaXR5ID0gdGhpcy52aWV3ZXIudGVycmFpblByb3ZpZGVyLmF2YWlsYWJpbGl0eTtcclxuICAgIGlmICghdGVycmFpbkF2YWlsYWJpbGl0eSkge1xyXG4gICAgICB0aGlzLmVycm9yID0gJ+acquWKoOi9veWcsOW9ouaVsOaNru+8gSdcclxuICAgICAgLy8gdGhpcy50b29scy5tZXNzYWdlKHsgdHlwZTogJ3dhcm5pbmcnLCB0ZXh0OiB0aGlzLmVycm9yIH0pXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBvcHRpb25zLnBvc2l0aW9uc1xyXG4gICAgdGhpcy5pbnRlcmZhY2VOdW0gPSBvcHRpb25zLmludGVyZmFjZU51bSB8fCAyNSAvL+WGheaPkuaXtuWdh+WIhueahOaVsOmHj++8jOWNs+ayv+edgOi+ueeVjOmVv+aIluWuveWdh+WIhuaIkG7liIbov5vooYzmj5LngrnvvIzpu5jorqTlgLwyNVxyXG4gICAgdGhpcy5jb2xvckZpbGwgPSBvcHRpb25zLmNvbG9yRmlsbCB8fCBbXHJcbiAgICAgIFwiIzhDRUEwMFwiLFxyXG4gICAgICBcIiNCN0ZGNEFcIixcclxuICAgICAgXCIjRkZGRjM3XCIsXHJcbiAgICAgIFwiI0ZGRTY2RlwiLFxyXG4gICAgICBcIiNGRkQxQTRcIixcclxuICAgICAgXCIjRkZDQkIzXCIsXHJcbiAgICAgIFwiI0ZGQkQ5RFwiLFxyXG4gICAgICBcIiNGRkFEODZcIixcclxuICAgICAgXCIjRkY5RDZGXCIsXHJcbiAgICAgIFwiI0ZGOEY1OVwiLFxyXG4gICAgICBcIiNGRjgwNDBcIixcclxuICAgICAgXCIjRkY1ODA5XCIsXHJcbiAgICAgIFwiI0Y3NTAwMFwiLFxyXG4gICAgICBcIiNEOTQ2MDBcIixcclxuICAgICAgXCIjQkIzRDAwXCIsXHJcbiAgICAgIFwiI0EyMzQwMFwiLFxyXG4gICAgICBcIiM4NDJCMDBcIixcclxuICAgICAgXCIjNjQyMTAwXCIsXHJcbiAgICAgIFwiIzREMDAwMFwiLFxyXG4gICAgICBcIiMyRjAwMDBcIixcclxuICAgIF07IC8v562J6auY57q/6LWL5YC86aKc6Imy77yM5YaF5ZCrZGVmYXVsdOWAvFxyXG4gICAgdGhpcy5jb3VudG9yTGluZUxpc3QgPSBDZXNpdW0uZGVmYXVsdFZhbHVlKG9wdGlvbnMuY291bnRvckxpbmVMaXN0LCBbXSk7XHJcbiAgICBZSi5BbmFseXNpcy5BbmFseXNlc1Jlc3VsdHMucHVzaCh0aGlzKVxyXG4gICAgdGhpcy5jcmVhdGVOZXdMaW5lKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZSgpIHtcclxuICAgIHJldHVybiAnQ29udG91ckFuYWx5c2lzJ1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTmV3TGluZSgpIHtcclxuICAgIENvbnRvdXJBbmFseXNpcy5pbnRlcnBvbGF0ZVBvaW50KHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy/liKnnlKh0dXJm5ZyoYm945YaF6L+b6KGM5o+S54K5XHJcbiAgc3RhdGljIGludGVycG9sYXRlUG9pbnQodGhhdCkge1xyXG4gICAgbGV0IGN1clBvaW50cyA9IHRoYXQucG9zaXRpb25zXHJcbiAgICBsZXQgZmVhdHVyZXMgPSBbXTtcclxuICAgIGNvbnN0IGJvdW5kYXJ5Q29vcmQgPSB7XHJcbiAgICAgIG1pblg6IDM2MCxcclxuICAgICAgbWF4WDogLTM2MCxcclxuICAgICAgbWluWTogMTgwLFxyXG4gICAgICBtYXhZOiAtMTgwLFxyXG4gICAgfTsgLy/nu5jliLblh6DkvZXlm77lvaLnmoTlpJblm7Tnn6nlvaJib3hcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjdXJQb2ludHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhjdXJQb2ludHNbaW5kZXhdLmxuZywgY3VyUG9pbnRzW2luZGV4XS5sYXQsIGN1clBvaW50c1tpbmRleF0uYWx0KTtcclxuICAgICAgbGV0IGVsbGlwc29pZCA9IHRoYXQudmlld2VyLnNjZW5lLmdsb2JlLmVsbGlwc29pZDtcclxuICAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IGVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlbGVtZW50KTtcclxuICAgICAgbGV0IGxhdCA9IENlc2l1bS5NYXRoLnRvRGVncmVlcyhjYXJ0b2dyYXBoaWMubGF0aXR1ZGUpO1xyXG4gICAgICBsZXQgbG5nID0gQ2VzaXVtLk1hdGgudG9EZWdyZWVzKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgICBib3VuZGFyeUNvb3JkLm1heFkgPSBNYXRoLm1heChsYXQsIGJvdW5kYXJ5Q29vcmQubWF4WSk7XHJcbiAgICAgIGJvdW5kYXJ5Q29vcmQubWluWSA9IE1hdGgubWluKGxhdCwgYm91bmRhcnlDb29yZC5taW5ZKTtcclxuICAgICAgYm91bmRhcnlDb29yZC5tYXhYID0gTWF0aC5tYXgobG5nLCBib3VuZGFyeUNvb3JkLm1heFgpO1xyXG4gICAgICBib3VuZGFyeUNvb3JkLm1pblggPSBNYXRoLm1pbihsbmcsIGJvdW5kYXJ5Q29vcmQubWluWCk7XHJcblxyXG4gICAgICBsZXQgY3VyRmVhdHVyZSA9IHtcclxuICAgICAgICB0eXBlOiBcIkZlYXR1cmVcIixcclxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcclxuICAgICAgICBnZW9tZXRyeToge1xyXG4gICAgICAgICAgdHlwZTogXCJQb2ludFwiLFxyXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtsbmcsIGxhdF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgZmVhdHVyZXMucHVzaChjdXJGZWF0dXJlKTtcclxuICAgIH1cclxuICAgIGxldCBib3VuZGFyeUpzb24gPSB7XHJcbiAgICAgIHR5cGU6IFwiRmVhdHVyZUNvbGxlY3Rpb25cIixcclxuICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLFxyXG4gICAgfTtcclxuICAgIHR1cmYuZmVhdHVyZUVhY2goYm91bmRhcnlKc29uLCBmdW5jdGlvbiAocG9pbnQpIHtcclxuICAgICAgcG9pbnQucHJvcGVydGllcy5oZWlnaHQgPSAwO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgZ3JpZFR5cGU6IFwicG9pbnRzXCIsXHJcbiAgICAgIHByb3BlcnR5OiBcImhlaWdodFwiLFxyXG4gICAgICB1bml0czogXCJraWxvbWV0ZXJzXCIsXHJcbiAgICB9O1xyXG4gICAgbGV0IGZyb20gPSB0dXJmLnBvaW50KFtib3VuZGFyeUNvb3JkLm1pblgsIGJvdW5kYXJ5Q29vcmQubWluWV0pO1xyXG4gICAgbGV0IHRvID0gdHVyZi5wb2ludChbYm91bmRhcnlDb29yZC5tYXhYLCBib3VuZGFyeUNvb3JkLm1heFldKTtcclxuICAgIGxldCBkaWFnb25hbERpc3RhbmNlID0gdHVyZi5yaHVtYkRpc3RhbmNlKGZyb20sIHRvLCB7XHJcbiAgICAgIHVuaXRzOiBcImtpbG9tZXRlcnNcIixcclxuICAgIH0pO1xyXG4gICAgbGV0IGdyaWQgPSB0dXJmLmludGVycG9sYXRlKFxyXG4gICAgICBib3VuZGFyeUpzb24sXHJcbiAgICAgIGRpYWdvbmFsRGlzdGFuY2UgLyB0aGF0LmludGVyZmFjZU51bSxcclxuICAgICAgb3B0aW9uc1xyXG4gICAgKTtcclxuICAgIGxldCBtaW5IZWlnaHQgPSAxMDAwMDAwMDsgLy/mnIDkvY7ngrnpq5jnqIvlgLxcclxuICAgIGxldCBtYXhIZWlnaHQgPSAtMTAwMDAwMDAwOyAvL+acgOmrmOeCuemrmOeoi+WAvFxyXG4gICAgdHVyZi5mZWF0dXJlRWFjaChncmlkLCBmdW5jdGlvbiAocG9pbnQpIHtcclxuICAgICAgbGV0IHBvcyA9IHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xyXG4gICAgICBsZXQgY2FydG9ncmFwaGljID0gQ2VzaXVtLkNhcnRvZ3JhcGhpYy5mcm9tRGVncmVlcyhwb3NbMF0sIHBvc1sxXSk7XHJcbiAgICAgIGxldCBoZWlnaHQgPSB0aGF0LnZpZXdlci5zY2VuZS5nbG9iZS5nZXRIZWlnaHQoY2FydG9ncmFwaGljKTtcclxuICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgoaGVpZ2h0LCBtYXhIZWlnaHQpO1xyXG4gICAgICBtaW5IZWlnaHQgPSBNYXRoLm1pbihoZWlnaHQsIG1pbkhlaWdodCk7XHJcbiAgICAgIHBvaW50LnByb3BlcnRpZXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgfSk7XHJcbiAgICBsZXQgYnJlYWtzID0gW107XHJcbiAgICBsZXQgc3RlcENvdW50ID0gdGhhdC5jb2xvckZpbGwubGVuZ3RoIC0gMTtcclxuICAgIGxldCBzdGVwID0gKG1heEhlaWdodCAtIG1pbkhlaWdodCkgLyBzdGVwQ291bnQ7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3RlcENvdW50ICsgMTsgaW5kZXgrKykge1xyXG4gICAgICBicmVha3MucHVzaChNYXRoLmNlaWwobWluSGVpZ2h0ICsgc3RlcCAqIGluZGV4KSk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnZ3JpZCcsIGdyaWQpXHJcbiAgICBsZXQgbGluZXNKc29uID0gdHVyZi5pc29saW5lcyhncmlkLCBicmVha3MsIHsgelByb3BlcnR5OiBcImhlaWdodFwiIH0pO1xyXG4gICAgbGV0IF9jb3VudG9yTGluZSA9IENlc2l1bS5HZW9Kc29uRGF0YVNvdXJjZS5sb2FkKGxpbmVzSnNvbiwge1xyXG4gICAgICBjbGFtcFRvR3JvdW5kOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhsaW5lc0pzb24pXHJcbiAgICBfY291bnRvckxpbmUudGhlbihmdW5jdGlvbiAoZGF0YVNvdXJjZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhkYXRhU291cmNlKVxyXG4gICAgICB0aGF0LmNvdW50b3JMaW5lID0gZGF0YVNvdXJjZTsgLy/mnIDnu4jorqHnrpfnlJ/miJDnmoTnrYnpq5jnur/lr7nosaHvvIxHZW9Kc29uRGF0YVNvdXJjZVxyXG4gICAgICB0aGF0LmNvdW50b3JMaW5lTGlzdC5wdXNoKGRhdGFTb3VyY2UpOyAvL+etiemrmOe6v+aVsOe7hFxyXG4gICAgICB0aGF0LnZpZXdlci5kYXRhU291cmNlcy5hZGQoZGF0YVNvdXJjZSk7XHJcbiAgICAgIGxldCBlbnRpdGllcyA9IGRhdGFTb3VyY2UuZW50aXRpZXMudmFsdWVzO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZW50aXRpZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVudGl0aWVzW2luZGV4XTtcclxuICAgICAgICBsZXQgY2VudGVyID0gZ2V0UG9seWxpbmVDZW50ZXIoZWxlbWVudC5wb2x5bGluZSk7XHJcbiAgICAgICAgZWxlbWVudC5wb3NpdGlvbiA9IGNlbnRlcjtcclxuICAgICAgICAvLyBkYXRhU291cmNlLmVudGl0aWVzLmFkZChuZXcgQ2VzaXVtLkVudGl0eSh7XHJcbiAgICAgICAgLy8gICBwb3NpdGlvbjogY2VudGVyLFxyXG4gICAgICAgIC8vICAgbGFiZWw6IHtcclxuICAgICAgICAvLyAgICAgdGV4dDogZWxlbWVudC5wcm9wZXJ0aWVzLmhlaWdodC5fdmFsdWUgKyAnJyxcclxuICAgICAgICAvLyAgICAgZm9udDogJzIwcHggTWljcm9zb2Z0IFlhSGVpJyxcclxuICAgICAgICAvLyAgICAgZmlsbENvbG9yOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKCcjZjFkMjBjJyksXHJcbiAgICAgICAgLy8gICAgIHN0eWxlOiBDZXNpdW0uTGFiZWxTdHlsZS5GSUxMX0FORF9PVVRMSU5FLFxyXG4gICAgICAgIC8vICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcclxuICAgICAgICAvLyAgICAgaGVpZ2h0UmVmZXJlbmNlOiBDZXNpdW0uSGVpZ2h0UmVmZXJlbmNlLkNMQU1QX1RPX0dST1VORFxyXG4gICAgICAgIC8vICAgfSxcclxuICAgICAgICAvLyB9KSlcclxuICAgICAgICAvLyBlbGVtZW50LmxhYmVsID0gbmV3IENlc2l1bS5MYWJlbEdyYXBoaWNzKHtcclxuXHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICBsZXQgY3VyX2luZGV4ID0gdGhhdC5nZXRPYmplY3RJbmRleChcclxuICAgICAgICAgIGJyZWFrcyxcclxuICAgICAgICAgIGVsZW1lbnQucHJvcGVydGllcy5oZWlnaHQuX3ZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY3VyX2luZGV4KSB7XHJcbiAgICAgICAgICBlbGVtZW50LnBvbHlsaW5lLm1hdGVyaWFsID0gQ2VzaXVtLkNvbG9yLmZyb21Dc3NDb2xvclN0cmluZyhcclxuICAgICAgICAgICAgdGhhdC5jb2xvckZpbGxbY3VyX2luZGV4IC0gMV1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiBnZXRQb2x5bGluZUNlbnRlcihwb2x5bGluZSkge1xyXG4gICAgICBsZXQgdG9vbHMgPSBuZXcgVG9vbHMoKVxyXG4gICAgICBsZXQgcG9zaXRpb25zID0gcG9seWxpbmUucG9zaXRpb25zO1xyXG4gICAgICBsZXQgbGVuZ3RoID0gcG9zaXRpb25zLl92YWx1ZS5sZW5ndGg7XHJcbiAgICAgIGxldCBhcnJheSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9zID0gdG9vbHMuY2FydGVzaWFuM1Rvd2dzODQocG9zaXRpb25zLl92YWx1ZVtpXSwgdGhhdC52aWV3ZXIpXHJcbiAgICAgICAgYXJyYXkucHVzaChbcG9zLmxuZywgcG9zLmxhdF0pXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcoYXJyYXkpO1xyXG4gICAgICBsZXQgZGlzdGFuY2UgPSB0dXJmLmxlbmd0aChsaW5lLCB7IHVuaXRzOiBcImtpbG9tZXRlcnNcIiB9KTtcclxuICAgICAgbGV0IGFsb25nID0gdHVyZi5hbG9uZyhsaW5lLCBkaXN0YW5jZSAvIDIsIHsgdW5pdHM6IFwia2lsb21ldGVyc1wiIH0pO1xyXG4gICAgICByZXR1cm4gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMoYWxvbmcuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0sIGFsb25nLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdLCAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICog6L+U5Zue6ZqP5py65o+S5YWl55qE5pWw5Zyo5pWw57uE5Lit55qE5L2N572uXHJcbiAgICogQHBhcmFtIHsqfSBhcnIg5YWD5pWw57uEXHJcbiAgICogQHBhcmFtIHsqfSBudW0g6ZqP5py65pWwXHJcbiAgICogQHJldHVybnMg5bqP5Y+3XHJcbiAgICogQGV4YW1wbGUgZ2V0T2JqZWN0SW5kZXgoWzAsMjE4LDMyNSwzMzMsNDQ0XSwzNTQpPT40O1xyXG4gICAqL1xyXG4gIGdldE9iamVjdEluZGV4KGFyciwgbnVtKSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoYXJyW2ldID4gbnVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY2xlYXIoY291bnRvckxpbmUpIHtcclxuICAgIGlmIChjb3VudG9yTGluZSkge1xyXG4gICAgICB0aGlzLnZpZXdlci5kYXRhU291cmNlcy5yZW1vdmUoY291bnRvckxpbmUpO1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmNvdW50b3JMaW5lTGlzdC5pbmRleE9mKGNvdW50b3JMaW5lKTtcclxuICAgICAgdGhpcy5jb3VudG9yTGluZUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcbiAgZGVzdHJveSgpIHtcclxuICAgIHRoaXMuY291bnRvckxpbmVMaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgdGhpcy52aWV3ZXIuZGF0YVNvdXJjZXMucmVtb3ZlKGVsZW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvdW50b3JMaW5lTGlzdCA9IFtdO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBDb250b3VyQW5hbHlzaXM7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBOEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF0SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUE2QkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Contour/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/CutFill/_element.js":
-/*!**********************************************!*\
- !*** ./src/Obj/Analysis/CutFill/_element.js ***!
- \**********************************************/
-/*! exports provided: html */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n \\n
\\n
\\n \\u7ED8\\u5236\\u5206\\u6790\\u533A\\u57DF\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\u57FA\\u51C6\\u9AD8\\u5EA6\\n
\\n \\n m\\n \\n
\\n
\\n
\\n
\\u7CBE\\u5EA6\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\u603B\\u5206\\u6790\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n \\u65E0\\u987B\\u586B\\u6316\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n
\\n
\\n \\u586B\\u65B9\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n \\u6316\\u65B9\\u9762\\u79EF:\\n 0\\n m\\xB2\\n
\\n
\\n
\\n
\\n \\u586B\\u65B9\\u4F53\\u79EF:\\n 0\\n m\\xB3\\n
\\n
\\n \\u6316\\u65B9\\u4F53\\u79EF:\\n 0\\n m\\xB3\\n
\\n
\\n
\\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvX2VsZW1lbnQuanM/MzU0NiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA3MHB4O1wiPue7mOWItuWIhuaekOWMuuWfnzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcmF3LWJ0blwiPjxzdmcgY2xhc3M9XCJpY29uLWVkaXRcIj48dXNlIHhsaW5rOmhyZWY9XCIjeWotaWNvbi1lZGl0XCI+PC91c2U+PC9zdmc+5byA5aeL57uY5Yi2PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGRpdiBjbGFzcz1cImRpdi1pdGVtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+5Z+65YeG6auY5bqmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LW51bWJlciBpbnB1dC1udW1iZXItdW5pdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwibnVtYmVyXCIgdGl0bGU9XCJcIiBtaW49XCItOTk5OTk5XCIgbWF4PVwiOTk5OTk5XCIgbmFtZT1cImhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdFwiPm08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPueyvuW6pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHR5cGU9XCJudW1iZXJcIiB0aXRsZT1cIlwiIG1pbj1cIjFcIiBtYXg9XCIxMjUwXCIgbmFtZT1cInByZWNpc2lvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGl2LWl0ZW1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA3NHB4O1wiPuaAu+WIhuaekOmdouenrzo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbnVtYmVyXCIgbmFtZT1cImFsbEFyZWFcIj4wPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bml0IHRleHQtbnVtYmVyXCI+bcKyPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwiZmxleDogMCAwIDkwcHg7XCI+5peg6aG75aGr5oyW6Z2i56evOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1udW1iZXJcIiBuYW1lPVwibm9BcmVhXCI+MDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdCB0ZXh0LW51bWJlclwiPm3Csjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNzRweDtcIj7loavmlrnpnaLnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW51bWJlclwiIG5hbWU9XCJmaWxsQXJlYVwiPjA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQgdGV4dC1udW1iZXJcIj5twrI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgOTBweDtcIj7mjJbmlrnpnaLnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW51bWJlclwiIG5hbWU9XCJjdXRBcmVhXCI+MDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdCB0ZXh0LW51bWJlclwiPm3Csjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgc3R5bGU9XCJmbGV4OiAwIDAgNzRweDtcIj7loavmlrnkvZPnp686PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW51bWJlclwiIG5hbWU9XCJmaWxsVm9sdW1lXCI+MDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdCB0ZXh0LW51bWJlclwiPm3Cszwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cImZsZXg6IDAgMCA5MHB4O1wiPuaMluaWueS9k+enrzo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbnVtYmVyXCIgbmFtZT1cImN1dFZvbHVtZVwiPjA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQgdGV4dC1udW1iZXJcIj5twrM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1kaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgYFxyXG59XHJcblxyXG5leHBvcnQgeyBodG1sIH0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdUVBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CutFill/_element.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/CutFill/index.js":
-/*!*******************************************!*\
- !*** ./src/Obj/Analysis/CutFill/index.js ***!
- \*******************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/CutFill/_element.js\");\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n/* harmony import */ var _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Draw/drawPolygon */ \"./src/Draw/drawPolygon.js\");\n\n\n\n\n\n\n\n// import CreatePolygon from \"./CreatePolygon\";\n\nvar CutFillAnalysis = /*#__PURE__*/function () {\n /**\r\n * @constructor 填挖方分析\r\n * @param sdk\r\n * **/\n function CutFillAnalysis(sdk) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _Dialog = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, CutFillAnalysis);\n this.sdk = sdk;\n this.viewer = sdk.viewer;\n // if (!positions) throw new Error(\"no positions object!\");\n // this.positions = positions;\n this.height = options.height || 70;\n this.maxHeigh = -1000000;\n this.precision = options.precision || 125;\n this.Dialog = _Dialog;\n this.result = {\n allArea: \"\",\n cutArea: \"\",\n cutVolume: \"\",\n fillArea: \"\",\n fillVolume: \"\",\n noArea: \"\"\n };\n this.entities = [];\n this.tools = new _Tools__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.sdk);\n this.Draw = new _Draw_drawPolygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"](this.sdk, {\n tipText: '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点'\n });\n YJ.Analysis.AnalysesResults.push(this);\n // CutFillAnalysis.EditBox(this)\n }\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(CutFillAnalysis, [{\n key: \"create\",\n value: function create() {\n var _this = this;\n this.clean();\n this.Draw.start(function (a, positions) {\n if (!positions || positions.length < 3) {\n if (a >= 3) {\n _this.Draw.tipText = '左键单击确定控制点位置,右键单击结束范围绘制! CTRL+右键单击撤销';\n } else {\n _this.Draw.tipText = '左键单击确定控制点位置,右键单击取消范围绘制! CTRL+右键单击撤销上一个控制点';\n }\n return;\n }\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, positions[i].alt);\n }\n _this.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n _this.createPolygonGeo(_this.positions);\n _this.result = _this.VolumeAnalysis();\n _this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = false; //允许相机进入地下\n _this.clickCallBack();\n });\n // const $this = this;\n // if (!this.cp) {\n // this.cp = new CreatePolygon(this.viewer)\n // }\n // this.cp.start(function () {\n // console.log($this.cp.activeShapePoints)\n // $this.positions = $this.cp.activeShapePoints;\n // $this.createPolygonGeo($this.positions);\n // $this.result = $this.VolumeAnalysis();\n // $this.viewer.entities.remove($this.cp.polygon);\n // $this.viewer.scene.screenSpaceCameraController.enableCollisionDetection = false; //允许相机进入地下\n\n // });\n }\n }, {\n key: \"createPolygonGeo\",\n value: function createPolygonGeo(points) {\n //计算网格粒度-精度\n var granularity = Math.PI / Math.pow(2, 11);\n granularity = granularity / this.precision;\n var polygonGeometry = new Cesium.PolygonGeometry.fromPositions({\n positions: points,\n vertexFormat: Cesium.PerInstanceColorAppearance.FLAT_VERTEX_FORMAT,\n granularity: granularity\n });\n //创建自定义平面几何体\n this.geom = new Cesium.PolygonGeometry.createGeometry(polygonGeometry);\n }\n }, {\n key: \"VolumeAnalysis\",\n value: function VolumeAnalysis() {\n var cutArea = 0,\n cutVolume = 0,\n fillArea = 0,\n fillVolume = 0,\n noArea = 0;\n var indices = this.geom.indices; //获取顶点索引数据\n if (!this.geom || !this.geom.attributes || !this.geom.attributes.position) {\n return;\n }\n var positions = this.geom.attributes.position.values;\n for (var index = 0; index < indices.length; index += 3) {\n var pos0 = this.returnPosition(positions, indices[index]);\n var pos1 = this.returnPosition(positions, indices[index + 1]);\n var pos2 = this.returnPosition(positions, indices[index + 2]);\n var entity = this.viewer.entities.add({\n name: \"三角面\",\n polygon: {\n hierarchy: [pos0.heightPos, pos1.heightPos, pos2.heightPos],\n perPositionHeight: true,\n material: Cesium.Color.fromRandom(),\n extrudedHeight: this.height,\n outline: true,\n outlineColor: Cesium.Color.BLACK\n }\n });\n this.entities.push(entity);\n //水平状态下三角形面积\n var area = this.computeArea4Triangle(pos0.noHeightPos, pos1.noHeightPos, pos2.noHeightPos);\n //计算三个点的均高\n var height = (pos0.height + pos1.height + pos2.height) / 3;\n if (height < this.height) {\n // 需要填方的部分\n fillArea += area;\n var volume = area * (this.height - height);\n fillVolume += volume;\n } else if (height == this.height) {\n noArea += area;\n } else {\n // 需要挖方的部分\n cutArea += area;\n var _volume = area * (height - this.height);\n cutVolume += _volume;\n }\n }\n var allArea = cutArea + fillArea + noArea;\n // this.result = {\n // allArea,\n // cutArea,\n // cutVolume,\n // fillArea,\n // fillVolume,\n // noArea,\n // };\n this.result.allArea = allArea;\n this.result.cutArea = cutArea;\n this.result.cutVolume = cutVolume;\n this.result.fillArea = fillArea;\n this.result.fillVolume = fillVolume;\n this.result.noArea = noArea;\n return this.result;\n }\n }, {\n key: \"computeCentroid4Polygon\",\n value: function computeCentroid4Polygon(positions) {\n var x = [],\n y = [];\n var allX = 0,\n allY = 0;\n for (var i = 0; i < positions.length; i++) {\n var cartographic = Cesium.Cartographic.fromCartesian(positions[i]);\n allX += cartographic.longitude;\n allY += cartographic.latitude;\n x.push(cartographic.longitude);\n y.push(cartographic.latitude);\n }\n var centroidx = allX / positions.length;\n var centroidy = allY / positions.length;\n var Cartographic = new Cesium.Cartographic(centroidx, centroidy);\n return Cesium.Cartesian3.fromRadians(Cartographic.longitude, Cartographic.latitude, this.maxHeigh + 30);\n }\n /**\r\n * 海伦公式求取三角形面积\r\n * @param {*} pos1\r\n * @param {*} pos2\r\n * @param {*} pos3\r\n * @returns 三角形面积㎡\r\n */\n }, {\n key: \"computeArea4Triangle\",\n value: function computeArea4Triangle(pos1, pos2, pos3) {\n var a = Cesium.Cartesian3.distance(pos1, pos2);\n var b = Cesium.Cartesian3.distance(pos2, pos3);\n var c = Cesium.Cartesian3.distance(pos3, pos1);\n var S = (a + b + c) / 2;\n return Math.sqrt(S * (S - a) * (S - b) * (S - c));\n }\n }, {\n key: \"returnPosition\",\n value: function returnPosition(positions, index) {\n var cartesian = new Cesium.Cartesian3(positions[index * 3], positions[index * 3 + 1], positions[index * 3 + 2]);\n var cartographic = Cesium.Cartographic.fromCartesian(cartesian);\n var height = this.viewer.scene.sampleHeightSupported ? this.viewer.scene.sampleHeight(cartographic) : this.viewer.scene.globe.getHeight(cartographic);\n if (height > this.maxHeigh) {\n this.maxHeigh = height;\n }\n return {\n heightPos: Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, height),\n noHeightPos: Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0),\n height: height\n };\n }\n }, {\n key: \"heights\",\n get: function get() {\n return this.height;\n },\n set: function set(val) {\n this.height = val;\n }\n }, {\n key: \"precisions\",\n get: function get() {\n return this.precision;\n },\n set: function set(val) {\n this.precision = val;\n }\n }, {\n key: \"allArea\",\n get: function get() {\n return Number(this.result.allArea.toFixed(4));\n },\n set: function set(val) {\n this.result.allArea = val;\n }\n }, {\n key: \"fillArea\",\n get: function get() {\n return Number(this.result.fillArea.toFixed(4));\n },\n set: function set(val) {\n this.result.fillArea = val;\n }\n }, {\n key: \"fillVolume\",\n get: function get() {\n return Number(this.result.fillVolume.toFixed(4));\n },\n set: function set(val) {\n this.result.fillVolume = val;\n }\n }, {\n key: \"cutArea\",\n get: function get() {\n return Number(this.result.cutArea.toFixed(4));\n },\n set: function set(val) {\n this.result.cutArea = val;\n }\n }, {\n key: \"cutVolume\",\n get: function get() {\n return Number(this.result.cutVolume.toFixed(4));\n },\n set: function set(val) {\n this.result.cutVolume = val;\n }\n }, {\n key: \"noArea\",\n get: function get() {\n return Number(this.result.noArea.toFixed(4));\n },\n set: function set(val) {\n this.result.noArea = val;\n }\n }, {\n key: \"onEnd\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n this.clickCallBack = val;\n }\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.Draw && this.Draw.end();\n for (var i = 0; i < this.entities.length; i++) {\n this.viewer.entities.remove(this.entities[i]);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.clean();\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }], [{\n key: \"EditBox\",\n value: function () {\n var _EditBox = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _callee(that) {\n var contentElm, e_height, e_precision, e_allArea, e_fillArea, e_fillVolume, e_cutArea, e_cutVolume, e_noArea, newDivBtn;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n _context.next = 3;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"](that.sdk.viewer._container, {\n title: '土方分析',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n that.clean();\n that.Dialog.closeCallBack && that.Dialog.closeCallBack();\n }\n });\n case 3:\n that._DialogObject = _context.sent;\n _context.next = 6;\n return that._DialogObject.init();\n case 6:\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_5__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' cut-fill';\n\n // 高度值\n e_height = contentElm.querySelector(\"input[name='height']\");\n e_height.value = that.height;\n e_height.addEventListener('blur', function (e) {\n var value = e.target.value;\n if (e.data != '.' && (e.data != '-' || e.target.value)) {\n value = Number(value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n e_height.value = value;\n that.height = e_height.value;\n }\n });\n\n // 精度值\n e_precision = contentElm.querySelector(\"input[name='precision']\");\n e_precision.value = that.precision;\n e_precision.addEventListener('blur', function (e) {\n var value = Number(e.target.value);\n if (e.target.max && value > Number(e.target.max)) {\n value = Number(e.target.max);\n }\n if (e.target.min && value < Number(e.target.min)) {\n value = Number(e.target.min);\n }\n e_precision.value = value;\n that.precision = e_precision.value;\n });\n\n // 总分析面积\n e_allArea = contentElm.querySelector(\"span[name='allArea']\");\n e_allArea.innerHTML = that.result.allArea || 0;\n Object.defineProperty(that.result, 'allArea', {\n get: function get() {\n return e_allArea.innerHTML;\n },\n set: function set(value) {\n e_allArea.innerHTML = Number(value.toFixed(4));\n }\n });\n // 填方面积\n e_fillArea = contentElm.querySelector(\"span[name='fillArea']\");\n e_fillArea.innerHTML = that.result.fillArea || 0;\n Object.defineProperty(that.result, 'fillArea', {\n get: function get() {\n return e_fillArea.innerHTML;\n },\n set: function set(value) {\n e_fillArea.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 填方体积\n e_fillVolume = contentElm.querySelector(\"span[name='fillVolume']\");\n e_fillVolume.innerHTML = that.result.fillVolume || 0;\n Object.defineProperty(that.result, 'fillVolume', {\n get: function get() {\n return e_fillVolume.innerHTML;\n },\n set: function set(value) {\n e_fillVolume.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 挖方面积\n e_cutArea = contentElm.querySelector(\"span[name='cutArea']\");\n e_cutArea.innerHTML = that.result.cutArea || 0;\n Object.defineProperty(that.result, 'cutArea', {\n get: function get() {\n return e_cutArea.innerHTML;\n },\n set: function set(value) {\n e_cutArea.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 挖方体积\n e_cutVolume = contentElm.querySelector(\"span[name='cutVolume']\");\n e_cutVolume.innerHTML = that.result.cutVolume || 0;\n Object.defineProperty(that.result, 'cutVolume', {\n get: function get() {\n return e_cutVolume.innerHTML;\n },\n set: function set(value) {\n e_cutVolume.innerHTML = Number(value.toFixed(4));\n }\n });\n\n // 无须填挖面积\n e_noArea = contentElm.querySelector(\"span[name='noArea']\");\n e_noArea.innerHTML = that.result.noArea || 0;\n Object.defineProperty(that.result, 'noArea', {\n get: function get() {\n return e_noArea.innerHTML;\n },\n set: function set(value) {\n e_noArea.innerHTML = Number(value.toFixed(4));\n }\n });\n newDivBtn = contentElm.getElementsByClassName('draw-btn')[0];\n newDivBtn.addEventListener('click', function () {\n that.create();\n });\n case 36:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n function EditBox(_x) {\n return _EditBox.apply(this, arguments);\n }\n return EditBox;\n }()\n }]);\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = (CutFillAnalysis);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0N1dEZpbGwvaW5kZXguanM/NmQwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnO1xyXG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vX2VsZW1lbnRcIjtcclxuaW1wb3J0IFRvb2xzIGZyb20gXCIuLi8uLi8uLi9Ub29sc1wiO1xyXG4vLyBpbXBvcnQgQ3JlYXRlUG9seWdvbiBmcm9tIFwiLi9DcmVhdGVQb2x5Z29uXCI7XHJcbmltcG9ydCBEcmF3UG9seWdvbiBmcm9tIFwiLi4vLi4vLi4vRHJhdy9kcmF3UG9seWdvblwiXHJcblxyXG5jbGFzcyBDdXRGaWxsQW5hbHlzaXMge1xyXG4gIC8qKlxyXG4gICAqIEBjb25zdHJ1Y3RvciDloavmjJbmlrnliIbmnpBcclxuICAgKiBAcGFyYW0gc2RrXHJcbiAgICogKiovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgdGhpcy5zZGsgPSBzZGs7XHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXI7XHJcbiAgICAvLyBpZiAoIXBvc2l0aW9ucykgdGhyb3cgbmV3IEVycm9yKFwibm8gcG9zaXRpb25zIG9iamVjdCFcIik7XHJcbiAgICAvLyB0aGlzLnBvc2l0aW9ucyA9IHBvc2l0aW9ucztcclxuICAgIHRoaXMuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQgfHwgNzBcclxuICAgIHRoaXMubWF4SGVpZ2ggPSAtMTAwMDAwMDtcclxuICAgIHRoaXMucHJlY2lzaW9uID0gb3B0aW9ucy5wcmVjaXNpb24gfHwgMTI1XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIHRoaXMucmVzdWx0ID0ge1xyXG4gICAgICBhbGxBcmVhOiBcIlwiLFxyXG4gICAgICBjdXRBcmVhOiBcIlwiLFxyXG4gICAgICBjdXRWb2x1bWU6IFwiXCIsXHJcbiAgICAgIGZpbGxBcmVhOiBcIlwiLFxyXG4gICAgICBmaWxsVm9sdW1lOiBcIlwiLFxyXG4gICAgICBub0FyZWE6IFwiXCIsXHJcbiAgICB9XHJcbiAgICB0aGlzLmVudGl0aWVzID0gW11cclxuICAgIHRoaXMudG9vbHMgPSBuZXcgVG9vbHModGhpcy5zZGspXHJcbiAgICB0aGlzLkRyYXcgPSBuZXcgRHJhd1BvbHlnb24odGhpcy5zZGssIHsgdGlwVGV4dDogJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOiMg+WbtOe7mOWItiEgQ1RSTCvlj7PplK7ljZXlh7vmkqTplIDkuIrkuIDkuKrmjqfliLbngrknIH0pXHJcbiAgICBZSi5BbmFseXNpcy5BbmFseXNlc1Jlc3VsdHMucHVzaCh0aGlzKVxyXG4gICAgLy8gQ3V0RmlsbEFuYWx5c2lzLkVkaXRCb3godGhpcylcclxuICB9XHJcblxyXG4gIGNyZWF0ZSgpIHtcclxuICAgIHRoaXMuY2xlYW4oKVxyXG4gICAgdGhpcy5EcmF3LnN0YXJ0KChhLCBwb3NpdGlvbnMpID0+IHtcclxuICAgICAgaWYgKCFwb3NpdGlvbnMgfHwgcG9zaXRpb25zLmxlbmd0aCA8IDMpIHtcclxuICAgICAgICBpZiAoYSA+PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLkRyYXcudGlwVGV4dCA9ICflt6bplK7ljZXlh7vnoa7lrprmjqfliLbngrnkvY3nva7vvIzlj7PplK7ljZXlh7vnu5PmnZ/ojIPlm7Tnu5jliLYhIENUUkwr5Y+z6ZSu5Y2V5Ye75pKk6ZSAJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuRHJhdy50aXBUZXh0ID0gJ+W3pumUruWNleWHu+ehruWumuaOp+WItueCueS9jee9ru+8jOWPs+mUruWNleWHu+WPlua2iOiMg+WbtOe7mOWItiEgQ1RSTCvlj7PplK7ljZXlh7vmkqTplIDkuIrkuIDkuKrmjqfliLbngrknXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgcG9zaXRpb25zW2ldLmFsdClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgICAgIHRoaXMuY3JlYXRlUG9seWdvbkdlbyh0aGlzLnBvc2l0aW9ucyk7XHJcbiAgICAgIHRoaXMucmVzdWx0ID0gdGhpcy5Wb2x1bWVBbmFseXNpcygpO1xyXG4gICAgICB0aGlzLnZpZXdlci5zY2VuZS5zY3JlZW5TcGFjZUNhbWVyYUNvbnRyb2xsZXIuZW5hYmxlQ29sbGlzaW9uRGV0ZWN0aW9uID0gZmFsc2U7IC8v5YWB6K6455u45py66L+b5YWl5Zyw5LiLXHJcbiAgICAgIHRoaXMuY2xpY2tDYWxsQmFjaygpXHJcbiAgICB9KVxyXG4gICAgLy8gY29uc3QgJHRoaXMgPSB0aGlzO1xyXG4gICAgLy8gaWYgKCF0aGlzLmNwKSB7XHJcbiAgICAvLyAgIHRoaXMuY3AgPSBuZXcgQ3JlYXRlUG9seWdvbih0aGlzLnZpZXdlcilcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuY3Auc3RhcnQoZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygkdGhpcy5jcC5hY3RpdmVTaGFwZVBvaW50cylcclxuICAgIC8vICAgJHRoaXMucG9zaXRpb25zID0gJHRoaXMuY3AuYWN0aXZlU2hhcGVQb2ludHM7XHJcbiAgICAvLyAgICR0aGlzLmNyZWF0ZVBvbHlnb25HZW8oJHRoaXMucG9zaXRpb25zKTtcclxuICAgIC8vICAgJHRoaXMucmVzdWx0ID0gJHRoaXMuVm9sdW1lQW5hbHlzaXMoKTtcclxuICAgIC8vICAgJHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZSgkdGhpcy5jcC5wb2x5Z29uKTtcclxuICAgIC8vICAgJHRoaXMudmlld2VyLnNjZW5lLnNjcmVlblNwYWNlQ2FtZXJhQ29udHJvbGxlci5lbmFibGVDb2xsaXNpb25EZXRlY3Rpb24gPSBmYWxzZTsgLy/lhYHorrjnm7jmnLrov5vlhaXlnLDkuItcclxuXHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgY3JlYXRlUG9seWdvbkdlbyhwb2ludHMpIHtcclxuICAgIC8v6K6h566X572R5qC857KS5bqmLeeyvuW6plxyXG4gICAgbGV0IGdyYW51bGFyaXR5ID0gTWF0aC5QSSAvIE1hdGgucG93KDIsIDExKTtcclxuICAgIGdyYW51bGFyaXR5ID0gZ3JhbnVsYXJpdHkgLyB0aGlzLnByZWNpc2lvbjtcclxuICAgIGxldCBwb2x5Z29uR2VvbWV0cnkgPSBuZXcgQ2VzaXVtLlBvbHlnb25HZW9tZXRyeS5mcm9tUG9zaXRpb25zKHtcclxuICAgICAgcG9zaXRpb25zOiBwb2ludHMsXHJcbiAgICAgIHZlcnRleEZvcm1hdDogQ2VzaXVtLlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlLkZMQVRfVkVSVEVYX0ZPUk1BVCxcclxuICAgICAgZ3JhbnVsYXJpdHk6IGdyYW51bGFyaXR5LFxyXG4gICAgfSk7XHJcbiAgICAvL+WIm+W7uuiHquWumuS5ieW5s+mdouWHoOS9leS9k1xyXG4gICAgdGhpcy5nZW9tID0gbmV3IENlc2l1bS5Qb2x5Z29uR2VvbWV0cnkuY3JlYXRlR2VvbWV0cnkocG9seWdvbkdlb21ldHJ5KTtcclxuICB9XHJcbiAgVm9sdW1lQW5hbHlzaXMoKSB7XHJcbiAgICBsZXQgY3V0QXJlYSA9IDAsXHJcbiAgICAgIGN1dFZvbHVtZSA9IDAsXHJcbiAgICAgIGZpbGxBcmVhID0gMCxcclxuICAgICAgZmlsbFZvbHVtZSA9IDAsXHJcbiAgICAgIG5vQXJlYSA9IDA7XHJcbiAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5nZW9tLmluZGljZXM7IC8v6I635Y+W6aG254K557Si5byV5pWw5o2uXHJcbiAgICBpZiAoIXRoaXMuZ2VvbSB8fCAhdGhpcy5nZW9tLmF0dHJpYnV0ZXMgfHwgIXRoaXMuZ2VvbS5hdHRyaWJ1dGVzLnBvc2l0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMuZ2VvbS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcztcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpbmRpY2VzLmxlbmd0aDsgaW5kZXggKz0gMykge1xyXG4gICAgICBjb25zdCBwb3MwID0gdGhpcy5yZXR1cm5Qb3NpdGlvbihwb3NpdGlvbnMsIGluZGljZXNbaW5kZXhdKTtcclxuICAgICAgY29uc3QgcG9zMSA9IHRoaXMucmV0dXJuUG9zaXRpb24ocG9zaXRpb25zLCBpbmRpY2VzW2luZGV4ICsgMV0pO1xyXG4gICAgICBjb25zdCBwb3MyID0gdGhpcy5yZXR1cm5Qb3NpdGlvbihwb3NpdGlvbnMsIGluZGljZXNbaW5kZXggKyAyXSk7XHJcbiAgICAgIGxldCBlbnRpdHkgPSB0aGlzLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgIG5hbWU6IFwi5LiJ6KeS6Z2iXCIsXHJcbiAgICAgICAgcG9seWdvbjoge1xyXG4gICAgICAgICAgaGllcmFyY2h5OiBbcG9zMC5oZWlnaHRQb3MsIHBvczEuaGVpZ2h0UG9zLCBwb3MyLmhlaWdodFBvc10sXHJcbiAgICAgICAgICBwZXJQb3NpdGlvbkhlaWdodDogdHJ1ZSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbVJhbmRvbSgpLFxyXG4gICAgICAgICAgZXh0cnVkZWRIZWlnaHQ6IHRoaXMuaGVpZ2h0LFxyXG4gICAgICAgICAgb3V0bGluZTogdHJ1ZSxcclxuICAgICAgICAgIG91dGxpbmVDb2xvcjogQ2VzaXVtLkNvbG9yLkJMQUNLLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmVudGl0aWVzLnB1c2goZW50aXR5KVxyXG4gICAgICAvL+awtOW5s+eKtuaAgeS4i+S4ieinkuW9oumdouenr1xyXG4gICAgICBjb25zdCBhcmVhID0gdGhpcy5jb21wdXRlQXJlYTRUcmlhbmdsZShcclxuICAgICAgICBwb3MwLm5vSGVpZ2h0UG9zLFxyXG4gICAgICAgIHBvczEubm9IZWlnaHRQb3MsXHJcbiAgICAgICAgcG9zMi5ub0hlaWdodFBvc1xyXG4gICAgICApO1xyXG4gICAgICAvL+iuoeeul+S4ieS4queCueeahOWdh+mrmFxyXG4gICAgICBjb25zdCBoZWlnaHQgPSAocG9zMC5oZWlnaHQgKyBwb3MxLmhlaWdodCArIHBvczIuaGVpZ2h0KSAvIDM7XHJcbiAgICAgIGlmIChoZWlnaHQgPCB0aGlzLmhlaWdodCkge1xyXG4gICAgICAgIC8vIOmcgOimgeWhq+aWueeahOmDqOWIhlxyXG4gICAgICAgIGZpbGxBcmVhICs9IGFyZWE7XHJcbiAgICAgICAgY29uc3Qgdm9sdW1lID0gYXJlYSAqICh0aGlzLmhlaWdodCAtIGhlaWdodCk7XHJcbiAgICAgICAgZmlsbFZvbHVtZSArPSB2b2x1bWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoaGVpZ2h0ID09IHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgbm9BcmVhICs9IGFyZWE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8g6ZyA6KaB5oyW5pa555qE6YOo5YiGXHJcbiAgICAgICAgY3V0QXJlYSArPSBhcmVhO1xyXG4gICAgICAgIGNvbnN0IHZvbHVtZSA9IGFyZWEgKiAoaGVpZ2h0IC0gdGhpcy5oZWlnaHQpO1xyXG4gICAgICAgIGN1dFZvbHVtZSArPSB2b2x1bWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGFsbEFyZWEgPSBjdXRBcmVhICsgZmlsbEFyZWEgKyBub0FyZWE7XHJcbiAgICAvLyB0aGlzLnJlc3VsdCA9IHtcclxuICAgIC8vICAgYWxsQXJlYSxcclxuICAgIC8vICAgY3V0QXJlYSxcclxuICAgIC8vICAgY3V0Vm9sdW1lLFxyXG4gICAgLy8gICBmaWxsQXJlYSxcclxuICAgIC8vICAgZmlsbFZvbHVtZSxcclxuICAgIC8vICAgbm9BcmVhLFxyXG4gICAgLy8gfTtcclxuICAgIHRoaXMucmVzdWx0LmFsbEFyZWEgPSBhbGxBcmVhXHJcbiAgICB0aGlzLnJlc3VsdC5jdXRBcmVhID0gY3V0QXJlYVxyXG4gICAgdGhpcy5yZXN1bHQuY3V0Vm9sdW1lID0gY3V0Vm9sdW1lXHJcbiAgICB0aGlzLnJlc3VsdC5maWxsQXJlYSA9IGZpbGxBcmVhXHJcbiAgICB0aGlzLnJlc3VsdC5maWxsVm9sdW1lID0gZmlsbFZvbHVtZVxyXG4gICAgdGhpcy5yZXN1bHQubm9BcmVhID0gbm9BcmVhXHJcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQ7XHJcbiAgfVxyXG4gIGNvbXB1dGVDZW50cm9pZDRQb2x5Z29uKHBvc2l0aW9ucykge1xyXG4gICAgbGV0IHggPSBbXSxcclxuICAgICAgeSA9IFtdO1xyXG4gICAgbGV0IGFsbFggPSAwLFxyXG4gICAgICBhbGxZID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSBDZXNpdW0uQ2FydG9ncmFwaGljLmZyb21DYXJ0ZXNpYW4ocG9zaXRpb25zW2ldKTtcclxuICAgICAgYWxsWCArPSBjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlO1xyXG4gICAgICBhbGxZICs9IGNhcnRvZ3JhcGhpYy5sYXRpdHVkZTtcclxuICAgICAgeC5wdXNoKGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUpO1xyXG4gICAgICB5LnB1c2goY2FydG9ncmFwaGljLmxhdGl0dWRlKTtcclxuICAgIH1cclxuICAgIGxldCBjZW50cm9pZHggPSBhbGxYIC8gcG9zaXRpb25zLmxlbmd0aDtcclxuICAgIGxldCBjZW50cm9pZHkgPSBhbGxZIC8gcG9zaXRpb25zLmxlbmd0aDtcclxuICAgIGNvbnN0IENhcnRvZ3JhcGhpYyA9IG5ldyBDZXNpdW0uQ2FydG9ncmFwaGljKGNlbnRyb2lkeCwgY2VudHJvaWR5KTtcclxuICAgIHJldHVybiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhcclxuICAgICAgQ2FydG9ncmFwaGljLmxvbmdpdHVkZSxcclxuICAgICAgQ2FydG9ncmFwaGljLmxhdGl0dWRlLFxyXG4gICAgICB0aGlzLm1heEhlaWdoICsgMzBcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOa1t+S8puWFrOW8j+axguWPluS4ieinkuW9oumdouenr1xyXG4gICAqIEBwYXJhbSB7Kn0gcG9zMVxyXG4gICAqIEBwYXJhbSB7Kn0gcG9zMlxyXG4gICAqIEBwYXJhbSB7Kn0gcG9zM1xyXG4gICAqIEByZXR1cm5zIOS4ieinkuW9oumdouenr+OOoVxyXG4gICAqL1xyXG4gIGNvbXB1dGVBcmVhNFRyaWFuZ2xlKHBvczEsIHBvczIsIHBvczMpIHtcclxuICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9zMSwgcG9zMik7XHJcbiAgICBsZXQgYiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmRpc3RhbmNlKHBvczIsIHBvczMpO1xyXG4gICAgbGV0IGMgPSBDZXNpdW0uQ2FydGVzaWFuMy5kaXN0YW5jZShwb3MzLCBwb3MxKTtcclxuICAgIGxldCBTID0gKGEgKyBiICsgYykgLyAyO1xyXG4gICAgcmV0dXJuIE1hdGguc3FydChTICogKFMgLSBhKSAqIChTIC0gYikgKiAoUyAtIGMpKTtcclxuICB9XHJcbiAgcmV0dXJuUG9zaXRpb24ocG9zaXRpb25zLCBpbmRleCkge1xyXG4gICAgbGV0IGNhcnRlc2lhbiA9IG5ldyBDZXNpdW0uQ2FydGVzaWFuMyhcclxuICAgICAgcG9zaXRpb25zW2luZGV4ICogM10sXHJcbiAgICAgIHBvc2l0aW9uc1tpbmRleCAqIDMgKyAxXSxcclxuICAgICAgcG9zaXRpb25zW2luZGV4ICogMyArIDJdXHJcbiAgICApO1xyXG4gICAgbGV0IGNhcnRvZ3JhcGhpYyA9IENlc2l1bS5DYXJ0b2dyYXBoaWMuZnJvbUNhcnRlc2lhbihjYXJ0ZXNpYW4pO1xyXG4gICAgbGV0IGhlaWdodCA9IHRoaXMudmlld2VyLnNjZW5lLnNhbXBsZUhlaWdodFN1cHBvcnRlZFxyXG4gICAgICA/IHRoaXMudmlld2VyLnNjZW5lLnNhbXBsZUhlaWdodChjYXJ0b2dyYXBoaWMpXHJcbiAgICAgIDogdGhpcy52aWV3ZXIuc2NlbmUuZ2xvYmUuZ2V0SGVpZ2h0KGNhcnRvZ3JhcGhpYyk7XHJcbiAgICBpZiAoaGVpZ2h0ID4gdGhpcy5tYXhIZWlnaCkge1xyXG4gICAgICB0aGlzLm1heEhlaWdoID0gaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVpZ2h0UG9zOiBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tUmFkaWFucyhcclxuICAgICAgICBjYXJ0b2dyYXBoaWMubG9uZ2l0dWRlLFxyXG4gICAgICAgIGNhcnRvZ3JhcGhpYy5sYXRpdHVkZSxcclxuICAgICAgICBoZWlnaHRcclxuICAgICAgKSxcclxuICAgICAgbm9IZWlnaHRQb3M6IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21SYWRpYW5zKFxyXG4gICAgICAgIGNhcnRvZ3JhcGhpYy5sb25naXR1ZGUsXHJcbiAgICAgICAgY2FydG9ncmFwaGljLmxhdGl0dWRlLFxyXG4gICAgICAgIDBcclxuICAgICAgKSxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIEVkaXRCb3godGhhdCkge1xyXG4gICAgaWYgKHRoYXQuX0RpYWxvZ09iamVjdCAmJiB0aGF0Ll9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKClcclxuICAgICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gbnVsbFxyXG4gICAgfVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0ID0gYXdhaXQgbmV3IERpYWxvZyh0aGF0LnNkay52aWV3ZXIuX2NvbnRhaW5lciwge1xyXG4gICAgICB0aXRsZTogJ+Wcn+aWueWIhuaekCcsIGxlZnQ6ICcxODBweCcsIHRvcDogJzEwMHB4JyxcclxuICAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoYXQuY2xlYW4oKVxyXG4gICAgICAgIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhhdC5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gICAgYXdhaXQgdGhhdC5fRGlhbG9nT2JqZWN0LmluaXQoKVxyXG4gICAgbGV0IGNvbnRlbnRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gaHRtbCgpXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgPSB0aGF0Ll9EaWFsb2dPYmplY3QuX2VsZW1lbnQuYm9keS5jbGFzc05hbWUgKyAnIGN1dC1maWxsJ1xyXG5cclxuICAgIC8vIOmrmOW6puWAvFxyXG4gICAgbGV0IGVfaGVpZ2h0ID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbmFtZT0naGVpZ2h0J11cIilcclxuICAgIGVfaGVpZ2h0LnZhbHVlID0gdGhhdC5oZWlnaHRcclxuICAgIGVfaGVpZ2h0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZSkgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSBlLnRhcmdldC52YWx1ZVxyXG4gICAgICBpZiAoZS5kYXRhICE9ICcuJyAmJiAoZS5kYXRhICE9ICctJyB8fCBlLnRhcmdldC52YWx1ZSkpIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSlcclxuICAgICAgICBpZiAoKGUudGFyZ2V0Lm1heCkgJiYgdmFsdWUgPiBOdW1iZXIoZS50YXJnZXQubWF4KSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWF4KVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKGUudGFyZ2V0Lm1pbikgJiYgdmFsdWUgPCBOdW1iZXIoZS50YXJnZXQubWluKSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBOdW1iZXIoZS50YXJnZXQubWluKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlX2hlaWdodC52YWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgdGhhdC5oZWlnaHQgPSBlX2hlaWdodC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g57K+5bqm5YC8XHJcbiAgICBsZXQgZV9wcmVjaXNpb24gPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFtuYW1lPSdwcmVjaXNpb24nXVwiKVxyXG4gICAgZV9wcmVjaXNpb24udmFsdWUgPSB0aGF0LnByZWNpc2lvblxyXG4gICAgZV9wcmVjaXNpb24uYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIChlKSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC52YWx1ZSlcclxuICAgICAgaWYgKChlLnRhcmdldC5tYXgpICYmIHZhbHVlID4gTnVtYmVyKGUudGFyZ2V0Lm1heCkpIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5tYXgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKChlLnRhcmdldC5taW4pICYmIHZhbHVlIDwgTnVtYmVyKGUudGFyZ2V0Lm1pbikpIHtcclxuICAgICAgICB2YWx1ZSA9IE51bWJlcihlLnRhcmdldC5taW4pXHJcbiAgICAgIH1cclxuICAgICAgZV9wcmVjaXNpb24udmFsdWUgPSB2YWx1ZVxyXG4gICAgICB0aGF0LnByZWNpc2lvbiA9IGVfcHJlY2lzaW9uLnZhbHVlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g5oC75YiG5p6Q6Z2i56evXHJcbiAgICBsZXQgZV9hbGxBcmVhID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdhbGxBcmVhJ11cIilcclxuICAgIGVfYWxsQXJlYS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5hbGxBcmVhIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2FsbEFyZWEnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9hbGxBcmVhLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2FsbEFyZWEuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyDloavmlrnpnaLnp69cclxuICAgIGxldCBlX2ZpbGxBcmVhID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdmaWxsQXJlYSddXCIpXHJcbiAgICBlX2ZpbGxBcmVhLmlubmVySFRNTCA9IHRoYXQucmVzdWx0LmZpbGxBcmVhIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2ZpbGxBcmVhJywge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIGVfZmlsbEFyZWEuaW5uZXJIVE1MXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWx1ZSkge1xyXG4gICAgICAgIGVfZmlsbEFyZWEuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5aGr5pa55L2T56evXHJcbiAgICBsZXQgZV9maWxsVm9sdW1lID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdmaWxsVm9sdW1lJ11cIilcclxuICAgIGVfZmlsbFZvbHVtZS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5maWxsVm9sdW1lIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2ZpbGxWb2x1bWUnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9maWxsVm9sdW1lLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2ZpbGxWb2x1bWUuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5oyW5pa56Z2i56evXHJcbiAgICBsZXQgZV9jdXRBcmVhID0gY29udGVudEVsbS5xdWVyeVNlbGVjdG9yKFwic3BhbltuYW1lPSdjdXRBcmVhJ11cIilcclxuICAgIGVfY3V0QXJlYS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5jdXRBcmVhIHx8IDBcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LnJlc3VsdCwgJ2N1dEFyZWEnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9jdXRBcmVhLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2N1dEFyZWEuaW5uZXJIVE1MID0gTnVtYmVyKHZhbHVlLnRvRml4ZWQoNCkpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgLy8g5oyW5pa55L2T56evXHJcbiAgICBsZXQgZV9jdXRWb2x1bWUgPSBjb250ZW50RWxtLnF1ZXJ5U2VsZWN0b3IoXCJzcGFuW25hbWU9J2N1dFZvbHVtZSddXCIpXHJcbiAgICBlX2N1dFZvbHVtZS5pbm5lckhUTUwgPSB0aGF0LnJlc3VsdC5jdXRWb2x1bWUgfHwgMFxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoYXQucmVzdWx0LCAnY3V0Vm9sdW1lJywge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIGVfY3V0Vm9sdW1lLmlubmVySFRNTFxyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsdWUpIHtcclxuICAgICAgICBlX2N1dFZvbHVtZS5pbm5lckhUTUwgPSBOdW1iZXIodmFsdWUudG9GaXhlZCg0KSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICAvLyDml6DpobvloavmjJbpnaLnp69cclxuICAgIGxldCBlX25vQXJlYSA9IGNvbnRlbnRFbG0ucXVlcnlTZWxlY3RvcihcInNwYW5bbmFtZT0nbm9BcmVhJ11cIilcclxuICAgIGVfbm9BcmVhLmlubmVySFRNTCA9IHRoYXQucmVzdWx0Lm5vQXJlYSB8fCAwXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhhdC5yZXN1bHQsICdub0FyZWEnLCB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gZV9ub0FyZWEuaW5uZXJIVE1MXHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWx1ZSkge1xyXG4gICAgICAgIGVfbm9BcmVhLmlubmVySFRNTCA9IE51bWJlcih2YWx1ZS50b0ZpeGVkKDQpKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBuZXdEaXZCdG4gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2RyYXctYnRuJylbMF07XHJcbiAgICBuZXdEaXZCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIHRoYXQuY3JlYXRlKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWlnaHRcclxuICB9XHJcbiAgc2V0IGhlaWdodHModmFsKSB7XHJcbiAgICB0aGlzLmhlaWdodCA9IHZhbFxyXG4gIH1cclxuICBnZXQgcHJlY2lzaW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLnByZWNpc2lvblxyXG4gIH1cclxuICBzZXQgcHJlY2lzaW9ucyh2YWwpIHtcclxuICAgIHRoaXMucHJlY2lzaW9uID0gdmFsXHJcbiAgfVxyXG4gIGdldCBhbGxBcmVhKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnJlc3VsdC5hbGxBcmVhLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBhbGxBcmVhKHZhbCkge1xyXG4gICAgdGhpcy5yZXN1bHQuYWxsQXJlYSA9IHZhbFxyXG4gIH1cclxuICBnZXQgZmlsbEFyZWEoKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMucmVzdWx0LmZpbGxBcmVhLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBmaWxsQXJlYSh2YWwpIHtcclxuICAgIHRoaXMucmVzdWx0LmZpbGxBcmVhID0gdmFsXHJcbiAgfVxyXG4gIGdldCBmaWxsVm9sdW1lKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnJlc3VsdC5maWxsVm9sdW1lLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBmaWxsVm9sdW1lKHZhbCkge1xyXG4gICAgdGhpcy5yZXN1bHQuZmlsbFZvbHVtZSA9IHZhbFxyXG4gIH1cclxuICBnZXQgY3V0QXJlYSgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXN1bHQuY3V0QXJlYS50b0ZpeGVkKDQpKVxyXG4gIH1cclxuICBzZXQgY3V0QXJlYSh2YWwpIHtcclxuICAgIHRoaXMucmVzdWx0LmN1dEFyZWEgPSB2YWxcclxuICB9XHJcbiAgZ2V0IGN1dFZvbHVtZSgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXN1bHQuY3V0Vm9sdW1lLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBjdXRWb2x1bWUodmFsKSB7XHJcbiAgICB0aGlzLnJlc3VsdC5jdXRWb2x1bWUgPSB2YWxcclxuICB9XHJcbiAgZ2V0IG5vQXJlYSgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5yZXN1bHQubm9BcmVhLnRvRml4ZWQoNCkpXHJcbiAgfVxyXG4gIHNldCBub0FyZWEodmFsKSB7XHJcbiAgICB0aGlzLnJlc3VsdC5ub0FyZWEgPSB2YWxcclxuICB9XHJcbiAgZ2V0IG9uRW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xpY2tDYWxsQmFja1xyXG4gIH1cclxuICBzZXQgb25FbmQodmFsKSB7XHJcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc29sZS5lcnJvcigndmFsOicsIHZhbCwgJ+S4jeaYr+S4gOS4qmZ1bmN0aW9uJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xpY2tDYWxsQmFjayA9IHZhbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYW4oKSB7XHJcbiAgICB0aGlzLkRyYXcgJiYgdGhpcy5EcmF3LmVuZCgpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW50aXRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy52aWV3ZXIuZW50aXRpZXMucmVtb3ZlKHRoaXMuZW50aXRpZXNbaV0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5jbGVhbigpXHJcbiAgICBpZiAodGhpcy5fRGlhbG9nT2JqZWN0ICYmIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSkge1xyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICB0aGlzLl9EaWFsb2dPYmplY3QgPSBudWxsXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEN1dEZpbGxBbmFseXNpcztcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBS0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQW1JQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXhNQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU5BO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTlIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwTUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/CutFill/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/Flat/index.js":
-/*!****************************************!*\
- !*** ./src/Obj/Analysis/Flat/index.js ***!
- \****************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Base_index__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../Base/index */ \"./src/Obj/Base/index.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _Global_global__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../Global/global */ \"./src/Global/global.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\nvar FlatList = {};\nvar Flat = /*#__PURE__*/function (_Base) {\n /**\r\n * @constructor\r\n * @description 模型压平\r\n * @param sdk\r\n * @param {Cesium.Cesium3DTileset} tileset 三维模型\r\n * @param {Object} options\r\n * @param {string} attr.id id\r\n * @param {Cesium.Cartesian3[]} attr.positions 压平面坐标\r\n */\n function Flat(sdk, tileset) {\n var _this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _Dialog = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Flat);\n _this = _callSuper(this, Flat, [sdk]);\n // 数组去重,不能处理嵌套的数组\n _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_this, \"getUniqueArray\", function (arr) {\n return arr.filter(function (item, index, arr) {\n //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素\n return arr.indexOf(item, 0) === index;\n });\n });\n if (!tileset || !_this.sdk || !_this.sdk.viewer) return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(_this);\n _this.options = _objectSpread({}, options);\n _this.options.id = options.id || _this.randomString();\n _this.options.name = options.name || '压平面';\n _this.options.positions = options.positions || [];\n _this.options.show = options.show || options.show === false ? options.show : true;\n _this.tileset = tileset;\n _this.Dialog = _Dialog;\n if (!_this.options.height && _this.options.height !== 0) {\n var height = _this.options.positions[0].alt;\n for (var i = 0; i < _this.options.positions.length; i++) {\n if (height > _this.options.positions[i].alt) {\n height = _this.options.positions[i].alt;\n }\n }\n _this.options.height = height;\n }\n if (FlatList[_this.tileset.id]) {\n FlatList[_this.tileset.id].push(_objectSpread({}, _this.options));\n } else {\n FlatList[_this.tileset.id] = [_objectSpread({}, _this.options)];\n }\n _this.center = tileset.boundingSphere.center.clone();\n _this.center84 = _this.cartesian3Towgs84(_this.center, _this.sdk.viewer);\n _this.matrix = Cesium.Transforms.eastNorthUpToFixedFrame(_this.center.clone());\n _this.localMatrix = Cesium.Matrix4.inverse(_this.matrix, new Cesium.Matrix4());\n // this.entity = {\n // id: this.options.id\n // }\n _this.addFlat();\n // Flat.createPolygon(this)\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Flat, _Base);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Flat, [{\n key: \"show\",\n get: function get() {\n return this.options.show;\n },\n set: function set(v) {\n this.options.show = v;\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n if (FlatList[this.tileset.id][i].id == this.options.id) {\n FlatList[this.tileset.id][i].show = v;\n }\n }\n this.addFlat();\n }\n }, {\n key: \"height\",\n get: function get() {\n return this.options.height;\n },\n set: function set(v) {\n this.options.height = Number(v);\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n if (FlatList[this.tileset.id][i].id == this.options.id) {\n FlatList[this.tileset.id][i].height = Number(v);\n }\n }\n this.addFlat();\n }\n }, {\n key: \"name\",\n get: function get() {\n return this.options.name;\n },\n set: function set(v) {\n this.options.name = v;\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n if (FlatList[this.tileset.id][i].id == this.options.id) {\n FlatList[this.tileset.id][i].name = v;\n }\n }\n }\n }, {\n key: \"addFlat\",\n value: function addFlat() {\n var _this2 = this;\n var localPositionsArr = [];\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n var item = FlatList[this.tileset.id][i];\n if (item.show) {\n var positions = item.positions;\n var height = item.height;\n var fromDegreesArray = [];\n for (var _i = 0; _i < positions.length; _i++) {\n fromDegreesArray.push(positions[_i].lng, positions[_i].lat);\n }\n FlatList[this.tileset.id][i].flatHeight = height - this.center84.alt;\n var localCoor = this.cartesiansToLocal(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray));\n localPositionsArr.push(localCoor);\n }\n }\n var funstr = this.getIsinPolygonFun(localPositionsArr);\n var str = \"\";\n var _loop = function _loop() {\n var coors = localPositionsArr[_i2];\n var n = coors.length;\n var instr = \"\";\n coors.forEach(function (coordinate, index) {\n instr += \"points_\".concat(n, \"[\").concat(index, \"] = vec2(\").concat(coordinate[0], \", \").concat(coordinate[1], \");\\n\");\n });\n str += \"\\n \".concat(instr, \"\\n if(isPointInPolygon_\").concat(n, \"(position2D)){\\n vec4 tileset_local_position_transformed = vec4(tileset_local_position.x, tileset_local_position.y, ground_z + \").concat(FlatList[_this2.tileset.id][_i2].flatHeight, \", 1.0);\\n vec4 model_local_position_transformed = czm_inverseModel * u_tileset_localToWorldMatrix * tileset_local_position_transformed;\\n\\n vsOutput.positionMC.xy = model_local_position_transformed.xy;\\n vsOutput.positionMC.z = model_local_position_transformed.z+ modelMC.z*0.002;\\n return;\\n }\");\n };\n for (var _i2 = 0; _i2 < localPositionsArr.length; _i2++) {\n _loop();\n }\n this.updateShader(funstr, str);\n }\n\n // static createPolygon(that) {\n // let color = '#ffffff'\n // let linecolor = '#000000'\n // let positions = that.options.positions\n // let fromDegreesArray = []\n // for (let i = 0; i < positions.length; i++) {\n // fromDegreesArray.push(positions[i].lng, positions[i].lat, that.options.height)\n // }\n // that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray)\n // that.entity = that.sdk.viewer.entities.add({\n // show: that.options.show,\n // id: that.options.id,\n // polyline: {\n // positions: [...that.positions, that.positions[0], that.positions[1]],\n // width: 2,\n // material: Cesium.Color.fromCssColorString(linecolor),\n // depthFailMaterial: new Cesium.PolylineDashMaterialProperty({\n // color: Cesium.Color.YELLOW\n // }),\n // clampToGround: false,\n // zIndex: that.sdk._entityZIndex\n // },\n // })\n // that.sdk._entityZIndex++\n // }\n }, {\n key: \"remove\",\n value: function remove() {\n var _this3 = this;\n FlatList[this.tileset.id] = FlatList[this.tileset.id].filter(function (attr) {\n return attr.id != _this3.options.id;\n });\n var localPositionsArr = [];\n for (var i = 0; i < FlatList[this.tileset.id].length; i++) {\n var item = FlatList[this.tileset.id][i];\n if (item.show) {\n var positions = item.positions;\n var height = item.height;\n var fromDegreesArray = [];\n for (var _i3 = 0; _i3 < positions.length; _i3++) {\n fromDegreesArray.push(positions[_i3].lng, positions[_i3].lat);\n }\n FlatList[this.tileset.id][i].flatHeight = height - this.center84.alt;\n var localCoor = this.cartesiansToLocal(Cesium.Cartesian3.fromDegreesArray(fromDegreesArray));\n localPositionsArr.push(localCoor);\n }\n }\n var funstr = this.getIsinPolygonFun(localPositionsArr);\n var str = \"\";\n var _loop2 = function _loop2() {\n var coors = localPositionsArr[_i4];\n var n = coors.length;\n var instr = \"\";\n coors.forEach(function (coordinate, index) {\n instr += \"points_\".concat(n, \"[\").concat(index, \"] = vec2(\").concat(coordinate[0], \", \").concat(coordinate[1], \");\\n\");\n });\n str += \"\\n \".concat(instr, \"\\n if(isPointInPolygon_\").concat(n, \"(position2D)){\\n vec4 tileset_local_position_transformed = vec4(tileset_local_position.x, tileset_local_position.y, ground_z + \").concat(FlatList[_this3.tileset.id][_i4].flatHeight, \", 1.0);\\n vec4 model_local_position_transformed = czm_inverseModel * u_tileset_localToWorldMatrix * tileset_local_position_transformed;\\n vsOutput.positionMC.xy = model_local_position_transformed.xy;\\n vsOutput.positionMC.z = model_local_position_transformed.z+ modelMC.z*0.002;\\n return;\\n }\");\n };\n for (var _i4 = 0; _i4 < localPositionsArr.length; _i4++) {\n _loop2();\n }\n this.updateShader(funstr, str);\n }\n\n // 根据数组长度,构建 判断点是否在面内 的压平函数\n }, {\n key: \"getIsinPolygonFun\",\n value: function getIsinPolygonFun(polygons) {\n var pmap = polygons.map(function (polygon) {\n return polygon.length;\n });\n var uniqueArray = this.getUniqueArray(pmap);\n var str = \"\";\n uniqueArray.forEach(function (length) {\n str += \"\\n vec2 points_\".concat(length, \"[\").concat(length, \"];\\n bool isPointInPolygon_\").concat(length, \"(vec2 point){\\n int nCross = 0; // \\u4EA4\\u70B9\\u6570\\n const int n = \").concat(length, \";\\n for(int i = 0; i < n; i++){\\n vec2 p1 = points_\").concat(length, \"[i];\\n vec2 p2 = points_\").concat(length, \"[int(mod(float(i+1),float(n)))];\\n if(p1[1] == p2[1]){\\n continue;\\n }\\n if(point[1] < min(p1[1], p2[1])){\\n continue;\\n }\\n if(point[1] >= max(p1[1], p2[1])){\\n continue;\\n }\\n float x = p1[0] + ((point[1] - p1[1]) * (p2[0] - p1[0])) / (p2[1] - p1[1]);\\n if(x > point[0]){\\n nCross++;\\n }\\n }\\n return int(mod(float(nCross), float(2))) == 1;\\n }\\n \");\n });\n return str;\n }\n }, {\n key: \"updateShader\",\n value: function updateShader(vtx1, vtx2) {\n var flatCustomShader = new Cesium.CustomShader({\n uniforms: {\n u_tileset_localToWorldMatrix: {\n type: Cesium.UniformType.MAT4,\n value: this.matrix\n },\n u_tileset_worldToLocalMatrix: {\n type: Cesium.UniformType.MAT4,\n value: this.localMatrix\n },\n u_flatHeight: {\n type: Cesium.UniformType.FLOAT,\n value: this.flatHeight\n }\n },\n vertexShaderText: \"\\n // \\u6240\\u6709isPointInPolygon\\u51FD\\u6570\\n \".concat(vtx1, \"\\n void vertexMain(VertexInput vsInput, inout czm_modelVertexOutput vsOutput){\\n vec3 modelMC = vsInput.attributes.positionMC;\\n vec4 model_local_position = vec4(modelMC.x, modelMC.y, modelMC.z, 1.0);\\n vec4 tileset_local_position = u_tileset_worldToLocalMatrix * czm_model * model_local_position;\\n vec2 position2D = vec2(tileset_local_position.x,tileset_local_position.y);\\n float ground_z = 0.0;\\n // \\u591A\\u4E2A\\u591A\\u8FB9\\u5F62\\u533A\\u57DF\\n \").concat(vtx2, \"\\n }\")\n });\n this.tileset.customShader = flatCustomShader;\n this.sdk.viewer.scene.requestRender();\n }\n }, {\n key: \"cartesiansToLocal\",\n value:\n // 世界坐标转数组局部坐标\n function cartesiansToLocal(positions) {\n var arr = [];\n for (var i = 0; i < positions.length; i++) {\n var position = positions[i];\n var localp = Cesium.Matrix4.multiplyByPoint(this.localMatrix, position.clone(), new Cesium.Cartesian3());\n arr.push([localp.x, localp.y]);\n }\n return arr;\n }\n\n /**\r\n * 飞到\r\n */\n }, {\n key: \"flyTo\",\n value: (function () {\n var _flyTo = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee() {\n var orientation, lng, lat, alt, destination, position, positionArray, i, a, BoundingSphere;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"setActiveViewer\"])(0);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"closeRotateAround\"])(this.sdk);\n Object(_Global_global__WEBPACK_IMPORTED_MODULE_10__[\"closeViewFollow\"])(this.sdk);\n if (!(this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation)) {\n _context.next = 22;\n break;\n }\n orientation = {\n heading: Cesium.Math.toRadians(this.options.customView.orientation.heading || 0.0),\n pitch: Cesium.Math.toRadians(this.options.customView.orientation.pitch || -60.0),\n roll: Cesium.Math.toRadians(this.options.customView.orientation.roll || 0.0)\n };\n lng = this.options.customView.relativePosition.lng;\n lat = this.options.customView.relativePosition.lat;\n alt = this.options.customView.relativePosition.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n position = {\n lng: 0,\n lat: 0\n };\n if (this.options.position) {\n position = _objectSpread({}, this.options.position);\n } else if (this.options.positions) {\n position = _objectSpread({}, this.options.positions[0]);\n } else if (this.options.line && this.options.line.positions) {\n position = _objectSpread({}, this.options.line.positions[0]);\n } else if (this.options.center) {\n position = _objectSpread({}, this.options.center);\n } else if (this.options.start) {\n position = _objectSpread({}, this.options.start);\n } else {\n if (this.options.hasOwnProperty('lng')) {\n position.lng = this.options.lng;\n }\n if (this.options.hasOwnProperty('lat')) {\n position.lat = this.options.lat;\n }\n if (this.options.hasOwnProperty('alt')) {\n position.alt = this.options.alt;\n }\n }\n // 如果没有高度值,则获取紧贴高度计算\n if (position.hasOwnProperty('alt')) {\n _context.next = 15;\n break;\n }\n _context.next = 14;\n return this.getClampToHeight(position);\n case 14:\n position.alt = _context.sent;\n case 15:\n lng = this.options.customView.relativePosition.lng + position.lng;\n lat = this.options.customView.relativePosition.lat + position.lat;\n alt = this.options.customView.relativePosition.alt + position.alt;\n destination = Cesium.Cartesian3.fromDegrees(lng, lat, alt);\n this.sdk.viewer.camera.flyTo({\n destination: destination,\n orientation: orientation\n });\n _context.next = 26;\n break;\n case 22:\n positionArray = [];\n for (i = 0; i < this.options.positions.length; i++) {\n a = Cesium.Cartesian3.fromDegrees(this.options.positions[i].lng, this.options.positions[i].lat, this.center84.alt);\n positionArray.push(a.x, a.y, a.z);\n }\n BoundingSphere = Cesium.BoundingSphere.fromVertices(positionArray);\n this.sdk.viewer.camera.flyToBoundingSphere(BoundingSphere, {\n offset: {\n heading: Cesium.Math.toRadians(0.0),\n pitch: Cesium.Math.toRadians(-90.0),\n roll: Cesium.Math.toRadians(0.0)\n }\n });\n case 26:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function flyTo() {\n return _flyTo.apply(this, arguments);\n }\n return flyTo;\n }())\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.mark(function _callee2(state) {\n var _this4 = this;\n var contentElm, name_elm, height_elm;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_7___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (state) {\n this.originalOptions = this.deepCopyObj(this.options);\n // this._DialogObject = await new Dialog(this.sdk.viewer._container, {\n // title: '压平面属性', left: '180px', top: '100px',\n // removeCallBack: () => {\n // this.Dialog.removeCallBack && this.Dialog.removeCallBack()\n // },\n // closeCallBack: () => {\n // this.reset()\n // this.Dialog.closeCallBack && this.Dialog.closeCallBack()\n // }\n // })\n // await this._DialogObject.init()\n // 内容部分\n // let contentElm = document.createElement('div');\n // contentElm.innerHTML = `\n // \n // \n //
\n //
\n // 名称\n // \n //
\n //
\n //
\n //
\n //
压平高度\n //
\n // \n // m\n // \n //
\n //
\n //
\n //
\n // `\n // this._DialogObject.contentAppChild(contentElm)\n contentElm = document.getElementsByClassName('flatPlane')[0];\n name_elm = contentElm.getElementsByClassName('input-name')[0];\n name_elm.value = this.options.name;\n name_elm.addEventListener('input', function () {\n _this4.name = name_elm.value;\n });\n height_elm = contentElm.getElementsByClassName('flat-height')[0];\n height_elm.value = this.options.height;\n height_elm.addEventListener('input', function () {\n _this4.height = Number(height_elm.value);\n _this4.addFlat();\n });\n\n // let confirmElm = document.createElement('button');\n // confirmElm.className = 'btn'\n // confirmElm.innerHTML = '确认'\n // this._DialogObject.footAppChild(confirmElm)\n // confirmElm.addEventListener('click', () => {\n // if (!this.options.name) {\n // this.options.name = '压平面'\n // }\n // this.originalOptions = this.deepCopyObj(this.options)\n // this._DialogObject.close()\n // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.options)\n // })\n\n // let flatElm = document.createElement('button');\n // flatElm.className = 'btn'\n // flatElm.innerHTML = '二次编辑'\n // flatElm.style.width = 'auto'\n // flatElm.style.position = 'absolute'\n // flatElm.style.left = '10px'\n // this._DialogObject.footAppChild(flatElm)\n // flatElm.addEventListener('click', () => {\n // console.log('二次编辑')\n // })\n } else {\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function edit(_x) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"sure\",\n value: function sure() {\n if (!this.options.name) {\n this.options.name = '压平面';\n }\n this.originalOptions = this.deepCopyObj(this.options);\n // this._DialogObject.close()\n // this.Dialog.confirmCallBack && this.Dialog.confirmCallBack(this.options)\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.options = this.deepCopyObj(this.originalOptions);\n this.name = this.options.name;\n this.height = this.options.height;\n this.addFlat();\n }\n }, {\n key: \"flatEdit\",\n value: function flatEdit(state) {\n if (state) {\n var positions = that.options.positions;\n var fromDegreesArray = [];\n for (var i = 0; i < positions.length; i++) {\n fromDegreesArray.push(positions[i].lng, positions[i].lat, FlatList[this.tileset.id]);\n }\n that.positions = Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArray);\n }\n }\n }, {\n key: \"flicker\",\n value: function flicker() {}\n }]);\n}(_Base_index__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Flat);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL0ZsYXQvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL0ZsYXQvaW5kZXguanM/YzBmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZSBmcm9tIFwiLi4vLi4vQmFzZS9pbmRleFwiO1xyXG5pbXBvcnQgRGlhbG9nIGZyb20gJy4uLy4uLy4uL0Jhc2VEaWFsb2cnXHJcbmltcG9ydCB7IHNldEFjdGl2ZVZpZXdlciwgY2xvc2VSb3RhdGVBcm91bmQsIGNsb3NlVmlld0ZvbGxvdyB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbC9nbG9iYWwnXHJcblxyXG5sZXQgRmxhdExpc3QgPSB7fVxyXG5jbGFzcyBGbGF0IGV4dGVuZHMgQmFzZSB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yXHJcbiAgICogQGRlc2NyaXB0aW9uIOaooeWei+WOi+W5s1xyXG4gICAqIEBwYXJhbSBzZGtcclxuICAgKiBAcGFyYW0ge0Nlc2l1bS5DZXNpdW0zRFRpbGVzZXR9IHRpbGVzZXQg5LiJ57u05qih5Z6LXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXR0ci5pZCBpZFxyXG4gICAqIEBwYXJhbSB7Q2VzaXVtLkNhcnRlc2lhbjNbXX0gYXR0ci5wb3NpdGlvbnMg5Y6L5bmz6Z2i5Z2Q5qCHXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3Ioc2RrLCB0aWxlc2V0LCBvcHRpb25zID0ge30sIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgc3VwZXIoc2RrKVxyXG4gICAgaWYgKCF0aWxlc2V0IHx8ICF0aGlzLnNkayB8fCAhdGhpcy5zZGsudmlld2VyKSByZXR1cm47XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxyXG4gICAgdGhpcy5vcHRpb25zLmlkID0gb3B0aW9ucy5pZCB8fCB0aGlzLnJhbmRvbVN0cmluZygpXHJcbiAgICB0aGlzLm9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCAn5Y6L5bmz6Z2iJ1xyXG4gICAgdGhpcy5vcHRpb25zLnBvc2l0aW9ucyA9IG9wdGlvbnMucG9zaXRpb25zIHx8IFtdXHJcbiAgICB0aGlzLm9wdGlvbnMuc2hvdyA9IChvcHRpb25zLnNob3cgfHwgb3B0aW9ucy5zaG93ID09PSBmYWxzZSkgPyBvcHRpb25zLnNob3cgOiB0cnVlXHJcbiAgICB0aGlzLnRpbGVzZXQgPSB0aWxlc2V0O1xyXG4gICAgdGhpcy5EaWFsb2cgPSBfRGlhbG9nXHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaGVpZ2h0ICYmIHRoaXMub3B0aW9ucy5oZWlnaHQgIT09IDApIHtcclxuICAgICAgbGV0IGhlaWdodCA9IHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbMF0uYWx0XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChoZWlnaHQgPiB0aGlzLm9wdGlvbnMucG9zaXRpb25zW2ldLmFsdCkge1xyXG4gICAgICAgICAgaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5hbHRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IGhlaWdodFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdKSB7XHJcbiAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0ucHVzaCh7IC4uLnRoaXMub3B0aW9ucyB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0gPSBbeyAuLi50aGlzLm9wdGlvbnMgfV1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNlbnRlciA9IHRpbGVzZXQuYm91bmRpbmdTcGhlcmUuY2VudGVyLmNsb25lKCk7XHJcbiAgICB0aGlzLmNlbnRlcjg0ID0gdGhpcy5jYXJ0ZXNpYW4zVG93Z3M4NCh0aGlzLmNlbnRlciwgdGhpcy5zZGsudmlld2VyKVxyXG4gICAgdGhpcy5tYXRyaXggPSBDZXNpdW0uVHJhbnNmb3Jtcy5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSh0aGlzLmNlbnRlci5jbG9uZSgpKTtcclxuICAgIHRoaXMubG9jYWxNYXRyaXggPSBDZXNpdW0uTWF0cml4NC5pbnZlcnNlKHRoaXMubWF0cml4LCBuZXcgQ2VzaXVtLk1hdHJpeDQoKSk7XHJcbiAgICAvLyB0aGlzLmVudGl0eSA9IHtcclxuICAgIC8vICAgICBpZDogdGhpcy5vcHRpb25zLmlkXHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmFkZEZsYXQoKVxyXG4gICAgLy8gRmxhdC5jcmVhdGVQb2x5Z29uKHRoaXMpXHJcbiAgfVxyXG5cclxuICBnZXQgc2hvdygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2hvd1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3codikge1xyXG4gICAgdGhpcy5vcHRpb25zLnNob3cgPSB2XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0uaWQgPT0gdGhpcy5vcHRpb25zLmlkKSB7XHJcbiAgICAgICAgRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXS5zaG93ID0gdlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZEZsYXQoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaGVpZ2h0XHJcbiAgfVxyXG5cclxuICBzZXQgaGVpZ2h0KHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5oZWlnaHQgPSBOdW1iZXIodilcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXS5pZCA9PSB0aGlzLm9wdGlvbnMuaWQpIHtcclxuICAgICAgICBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldLmhlaWdodCA9IE51bWJlcih2KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZEZsYXQoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5hbWVcclxuICB9XHJcblxyXG4gIHNldCBuYW1lKHYpIHtcclxuICAgIHRoaXMub3B0aW9ucy5uYW1lID0gdlxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldLmlkID09IHRoaXMub3B0aW9ucy5pZCkge1xyXG4gICAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0ubmFtZSA9IHZcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkRmxhdCgpIHtcclxuICAgIGxldCBsb2NhbFBvc2l0aW9uc0FyciA9IFtdXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldO1xyXG4gICAgICBpZiAoaXRlbS5zaG93KSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gaXRlbS5wb3NpdGlvbnM7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IGl0ZW0uaGVpZ2h0XHJcbiAgICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdClcclxuICAgICAgICB9XHJcbiAgICAgICAgRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXS5mbGF0SGVpZ2h0ID0gaGVpZ2h0IC0gdGhpcy5jZW50ZXI4NC5hbHRcclxuICAgICAgICBsZXQgbG9jYWxDb29yID0gdGhpcy5jYXJ0ZXNpYW5zVG9Mb2NhbChDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlc0FycmF5KGZyb21EZWdyZWVzQXJyYXkpKTtcclxuICAgICAgICBsb2NhbFBvc2l0aW9uc0Fyci5wdXNoKGxvY2FsQ29vcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmdW5zdHIgPSB0aGlzLmdldElzaW5Qb2x5Z29uRnVuKGxvY2FsUG9zaXRpb25zQXJyKTtcclxuICAgIGxldCBzdHIgPSBgYDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9jYWxQb3NpdGlvbnNBcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY29vcnMgPSBsb2NhbFBvc2l0aW9uc0FycltpXTtcclxuICAgICAgY29uc3QgbiA9IGNvb3JzLmxlbmd0aDtcclxuICAgICAgbGV0IGluc3RyID0gYGA7XHJcbiAgICAgIGNvb3JzLmZvckVhY2goKGNvb3JkaW5hdGUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaW5zdHIgKz0gYHBvaW50c18ke259WyR7aW5kZXh9XSA9IHZlYzIoJHtjb29yZGluYXRlWzBdfSwgJHtjb29yZGluYXRlWzFdfSk7XFxuYDtcclxuICAgICAgfSlcclxuICAgICAgc3RyICs9IGBcclxuICAgICAgICAgICAgICAke2luc3RyfVxyXG4gICAgICAgICAgICAgIGlmKGlzUG9pbnRJblBvbHlnb25fJHtufShwb3NpdGlvbjJEKSl7XHJcbiAgICAgICAgICAgICAgICAgIHZlYzQgdGlsZXNldF9sb2NhbF9wb3NpdGlvbl90cmFuc2Zvcm1lZCA9IHZlYzQodGlsZXNldF9sb2NhbF9wb3NpdGlvbi54LCB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uLnksIGdyb3VuZF96ICsgJHtGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdW2ldLmZsYXRIZWlnaHR9LCAxLjApO1xyXG4gICAgICAgICAgICAgICAgICB2ZWM0IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkID0gY3ptX2ludmVyc2VNb2RlbCAqIHVfdGlsZXNldF9sb2NhbFRvV29ybGRNYXRyaXggKiB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgdnNPdXRwdXQucG9zaXRpb25NQy54eSA9IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkLnh5O1xyXG4gICAgICAgICAgICAgICAgICB2c091dHB1dC5wb3NpdGlvbk1DLnogPSBtb2RlbF9sb2NhbF9wb3NpdGlvbl90cmFuc2Zvcm1lZC56KyBtb2RlbE1DLnoqMC4wMDI7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9YDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVTaGFkZXIoZnVuc3RyLCBzdHIpO1xyXG4gIH1cclxuXHJcbiAgLy8gc3RhdGljIGNyZWF0ZVBvbHlnb24odGhhdCkge1xyXG4gIC8vICAgICBsZXQgY29sb3IgPSAnI2ZmZmZmZidcclxuICAvLyAgICAgbGV0IGxpbmVjb2xvciA9ICcjMDAwMDAwJ1xyXG4gIC8vICAgICBsZXQgcG9zaXRpb25zID0gdGhhdC5vcHRpb25zLnBvc2l0aW9uc1xyXG4gIC8vICAgICBsZXQgZnJvbURlZ3JlZXNBcnJheSA9IFtdXHJcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgICAgICBmcm9tRGVncmVlc0FycmF5LnB1c2gocG9zaXRpb25zW2ldLmxuZywgcG9zaXRpb25zW2ldLmxhdCwgdGhhdC5vcHRpb25zLmhlaWdodClcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICB0aGF0LnBvc2l0aW9ucyA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzKGZyb21EZWdyZWVzQXJyYXkpXHJcbiAgLy8gICAgIHRoYXQuZW50aXR5ID0gdGhhdC5zZGsudmlld2VyLmVudGl0aWVzLmFkZCh7XHJcbiAgLy8gICAgICAgICBzaG93OiB0aGF0Lm9wdGlvbnMuc2hvdyxcclxuICAvLyAgICAgICAgIGlkOiB0aGF0Lm9wdGlvbnMuaWQsXHJcbiAgLy8gICAgICAgICBwb2x5bGluZToge1xyXG4gIC8vICAgICAgICAgICAgIHBvc2l0aW9uczogWy4uLnRoYXQucG9zaXRpb25zLCB0aGF0LnBvc2l0aW9uc1swXSwgdGhhdC5wb3NpdGlvbnNbMV1dLFxyXG4gIC8vICAgICAgICAgICAgIHdpZHRoOiAyLFxyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKGxpbmVjb2xvciksXHJcbiAgLy8gICAgICAgICAgICAgZGVwdGhGYWlsTWF0ZXJpYWw6IG5ldyBDZXNpdW0uUG9seWxpbmVEYXNoTWF0ZXJpYWxQcm9wZXJ0eSh7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuWUVMTE9XXHJcbiAgLy8gICAgICAgICAgICAgfSksXHJcbiAgLy8gICAgICAgICAgICAgY2xhbXBUb0dyb3VuZDogZmFsc2UsXHJcbiAgLy8gICAgICAgICAgICAgekluZGV4OiB0aGF0LnNkay5fZW50aXR5WkluZGV4XHJcbiAgLy8gICAgICAgICB9LFxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgICB0aGF0LnNkay5fZW50aXR5WkluZGV4KytcclxuICAvLyB9XHJcblxyXG4gIHJlbW92ZSgpIHtcclxuICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF0gPSBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdLmZpbHRlcigoYXR0cikgPT4ge1xyXG4gICAgICByZXR1cm4gYXR0ci5pZCAhPSB0aGlzLm9wdGlvbnMuaWQ7XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBsb2NhbFBvc2l0aW9uc0FyciA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBpdGVtID0gRmxhdExpc3RbdGhpcy50aWxlc2V0LmlkXVtpXTtcclxuICAgICAgaWYgKGl0ZW0uc2hvdykge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IGl0ZW0ucG9zaXRpb25zO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBpdGVtLmhlaWdodFxyXG4gICAgICAgIGxldCBmcm9tRGVncmVlc0FycmF5ID0gW11cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZnJvbURlZ3JlZXNBcnJheS5wdXNoKHBvc2l0aW9uc1tpXS5sbmcsIHBvc2l0aW9uc1tpXS5sYXQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIEZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0uZmxhdEhlaWdodCA9IGhlaWdodCAtIHRoaXMuY2VudGVyODQuYWx0XHJcbiAgICAgICAgbGV0IGxvY2FsQ29vciA9IHRoaXMuY2FydGVzaWFuc1RvTG9jYWwoQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheShmcm9tRGVncmVlc0FycmF5KSk7XHJcbiAgICAgICAgbG9jYWxQb3NpdGlvbnNBcnIucHVzaChsb2NhbENvb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZnVuc3RyID0gdGhpcy5nZXRJc2luUG9seWdvbkZ1bihsb2NhbFBvc2l0aW9uc0Fycik7XHJcbiAgICBsZXQgc3RyID0gYGA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsUG9zaXRpb25zQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGNvb3JzID0gbG9jYWxQb3NpdGlvbnNBcnJbaV07XHJcbiAgICAgIGNvbnN0IG4gPSBjb29ycy5sZW5ndGg7XHJcbiAgICAgIGxldCBpbnN0ciA9IGBgO1xyXG4gICAgICBjb29ycy5mb3JFYWNoKChjb29yZGluYXRlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGluc3RyICs9IGBwb2ludHNfJHtufVske2luZGV4fV0gPSB2ZWMyKCR7Y29vcmRpbmF0ZVswXX0sICR7Y29vcmRpbmF0ZVsxXX0pO1xcbmA7XHJcbiAgICAgIH0pXHJcbiAgICAgIHN0ciArPSBgXHJcbiAgICAgICAgICAgICAgJHtpbnN0cn1cclxuICAgICAgICAgICAgICBpZihpc1BvaW50SW5Qb2x5Z29uXyR7bn0ocG9zaXRpb24yRCkpe1xyXG4gICAgICAgICAgICAgICAgdmVjNCB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkID0gdmVjNCh0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uLngsIHRpbGVzZXRfbG9jYWxfcG9zaXRpb24ueSwgZ3JvdW5kX3ogKyAke0ZsYXRMaXN0W3RoaXMudGlsZXNldC5pZF1baV0uZmxhdEhlaWdodH0sIDEuMCk7XHJcbiAgICAgICAgICAgICAgICB2ZWM0IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkID0gY3ptX2ludmVyc2VNb2RlbCAqIHVfdGlsZXNldF9sb2NhbFRvV29ybGRNYXRyaXggKiB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkO1xyXG4gICAgICAgICAgICAgICAgdnNPdXRwdXQucG9zaXRpb25NQy54eSA9IG1vZGVsX2xvY2FsX3Bvc2l0aW9uX3RyYW5zZm9ybWVkLnh5O1xyXG4gICAgICAgICAgICAgICAgdnNPdXRwdXQucG9zaXRpb25NQy56ID0gbW9kZWxfbG9jYWxfcG9zaXRpb25fdHJhbnNmb3JtZWQueisgbW9kZWxNQy56KjAuMDAyO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1gO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlU2hhZGVyKGZ1bnN0ciwgc3RyKTtcclxuICB9XHJcblxyXG4gIC8vIOagueaNruaVsOe7hOmVv+W6pu+8jOaehOW7uiDliKTmlq3ngrnmmK/lkKblnKjpnaLlhoUg55qE5Y6L5bmz5Ye95pWwXHJcbiAgZ2V0SXNpblBvbHlnb25GdW4ocG9seWdvbnMpIHtcclxuICAgIGxldCBwbWFwID0gcG9seWdvbnMubWFwKChwb2x5Z29uKSA9PiBwb2x5Z29uLmxlbmd0aCk7XHJcbiAgICBsZXQgdW5pcXVlQXJyYXkgPSB0aGlzLmdldFVuaXF1ZUFycmF5KHBtYXApO1xyXG4gICAgbGV0IHN0ciA9IGBgO1xyXG4gICAgdW5pcXVlQXJyYXkuZm9yRWFjaChsZW5ndGggPT4ge1xyXG4gICAgICBzdHIgKz0gYFxyXG4gICAgICAgICAgICAgIHZlYzIgcG9pbnRzXyR7bGVuZ3RofVske2xlbmd0aH1dO1xyXG4gICAgICAgICAgICAgIGJvb2wgaXNQb2ludEluUG9seWdvbl8ke2xlbmd0aH0odmVjMiBwb2ludCl7XHJcbiAgICAgICAgICAgICAgaW50IG5Dcm9zcyA9IDA7IC8vIOS6pOeCueaVsFxyXG4gICAgICAgICAgICAgIGNvbnN0IGludCBuID0gJHtsZW5ndGh9O1xyXG4gICAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICB2ZWMyIHAxID0gcG9pbnRzXyR7bGVuZ3RofVtpXTtcclxuICAgICAgICAgICAgICAgICAgdmVjMiBwMiA9IHBvaW50c18ke2xlbmd0aH1baW50KG1vZChmbG9hdChpKzEpLGZsb2F0KG4pKSldO1xyXG4gICAgICAgICAgICAgICAgICBpZihwMVsxXSA9PSBwMlsxXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZihwb2ludFsxXSA8IG1pbihwMVsxXSwgcDJbMV0pKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmKHBvaW50WzFdID49IG1heChwMVsxXSwgcDJbMV0pKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSBwMVswXSArICgocG9pbnRbMV0gLSBwMVsxXSkgKiAocDJbMF0gLSBwMVswXSkpIC8gKHAyWzFdIC0gcDFbMV0pO1xyXG4gICAgICAgICAgICAgICAgICBpZih4ID4gcG9pbnRbMF0pe1xyXG4gICAgICAgICAgICAgICAgICAgbkNyb3NzKys7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGludChtb2QoZmxvYXQobkNyb3NzKSwgZmxvYXQoMikpKSA9PSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIGBcclxuICAgIH0pXHJcbiAgICByZXR1cm4gc3RyXHJcbiAgfVxyXG5cclxuICB1cGRhdGVTaGFkZXIodnR4MSwgdnR4Mikge1xyXG4gICAgbGV0IGZsYXRDdXN0b21TaGFkZXIgPSBuZXcgQ2VzaXVtLkN1c3RvbVNoYWRlcih7XHJcbiAgICAgIHVuaWZvcm1zOiB7XHJcbiAgICAgICAgdV90aWxlc2V0X2xvY2FsVG9Xb3JsZE1hdHJpeDoge1xyXG4gICAgICAgICAgdHlwZTogQ2VzaXVtLlVuaWZvcm1UeXBlLk1BVDQsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5tYXRyaXgsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1X3RpbGVzZXRfd29ybGRUb0xvY2FsTWF0cml4OiB7XHJcbiAgICAgICAgICB0eXBlOiBDZXNpdW0uVW5pZm9ybVR5cGUuTUFUNCxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLmxvY2FsTWF0cml4LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdV9mbGF0SGVpZ2h0OiB7XHJcbiAgICAgICAgICB0eXBlOiBDZXNpdW0uVW5pZm9ybVR5cGUuRkxPQVQsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5mbGF0SGVpZ2h0LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHZlcnRleFNoYWRlclRleHQ6IGBcclxuICAgICAgICAgIC8vIOaJgOaciWlzUG9pbnRJblBvbHlnb27lh73mlbBcclxuICAgICAgICAgICR7dnR4MX1cclxuICAgICAgICAgIHZvaWQgdmVydGV4TWFpbihWZXJ0ZXhJbnB1dCB2c0lucHV0LCBpbm91dCBjem1fbW9kZWxWZXJ0ZXhPdXRwdXQgdnNPdXRwdXQpe1xyXG4gICAgICAgICAgICAgIHZlYzMgbW9kZWxNQyA9IHZzSW5wdXQuYXR0cmlidXRlcy5wb3NpdGlvbk1DO1xyXG4gICAgICAgICAgICAgIHZlYzQgbW9kZWxfbG9jYWxfcG9zaXRpb24gPSB2ZWM0KG1vZGVsTUMueCwgbW9kZWxNQy55LCBtb2RlbE1DLnosIDEuMCk7XHJcbiAgICAgICAgICAgICAgdmVjNCB0aWxlc2V0X2xvY2FsX3Bvc2l0aW9uID0gdV90aWxlc2V0X3dvcmxkVG9Mb2NhbE1hdHJpeCAqIGN6bV9tb2RlbCAqIG1vZGVsX2xvY2FsX3Bvc2l0aW9uO1xyXG4gICAgICAgICAgICAgIHZlYzIgcG9zaXRpb24yRCA9IHZlYzIodGlsZXNldF9sb2NhbF9wb3NpdGlvbi54LHRpbGVzZXRfbG9jYWxfcG9zaXRpb24ueSk7XHJcbiAgICAgICAgICAgICAgZmxvYXQgZ3JvdW5kX3ogPSAwLjA7XHJcbiAgICAgICAgICAgICAgLy8g5aSa5Liq5aSa6L655b2i5Yy65Z+fXHJcbiAgICAgICAgICAgICAgJHt2dHgyfVxyXG4gICAgICAgICAgfWAsXHJcbiAgICB9KTtcclxuICAgIHRoaXMudGlsZXNldC5jdXN0b21TaGFkZXIgPSBmbGF0Q3VzdG9tU2hhZGVyO1xyXG4gICAgdGhpcy5zZGsudmlld2VyLnNjZW5lLnJlcXVlc3RSZW5kZXIoKTtcclxuXHJcbiAgfVxyXG5cclxuICAvLyDmlbDnu4Tljrvph43vvIzkuI3og73lpITnkIbltYzlpZfnmoTmlbDnu4RcclxuICBnZXRVbmlxdWVBcnJheSA9IChhcnIpID0+IHtcclxuICAgIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtLCBpbmRleCwgYXJyKSB7XHJcbiAgICAgIC8v5b2T5YmN5YWD57Sg77yM5Zyo5Y6f5aeL5pWw57uE5Lit55qE56ys5LiA5Liq57Si5byVPT3lvZPliY3ntKLlvJXlgLzvvIzlkKbliJnov5Tlm57lvZPliY3lhYPntKBcclxuICAgICAgcmV0dXJuIGFyci5pbmRleE9mKGl0ZW0sIDApID09PSBpbmRleDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIOS4lueVjOWdkOagh+i9rOaVsOe7hOWxgOmDqOWdkOagh1xyXG4gIGNhcnRlc2lhbnNUb0xvY2FsKHBvc2l0aW9ucykge1xyXG4gICAgbGV0IGFyciA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gcG9zaXRpb25zW2ldO1xyXG4gICAgICBsZXQgbG9jYWxwID0gQ2VzaXVtLk1hdHJpeDQubXVsdGlwbHlCeVBvaW50KFxyXG4gICAgICAgIHRoaXMubG9jYWxNYXRyaXgsXHJcbiAgICAgICAgcG9zaXRpb24uY2xvbmUoKSxcclxuICAgICAgICBuZXcgQ2VzaXVtLkNhcnRlc2lhbjMoKVxyXG4gICAgICApXHJcbiAgICAgIGFyci5wdXNoKFtsb2NhbHAueCwgbG9jYWxwLnldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhcnI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICog6aOe5YiwXHJcbiovXHJcbiAgYXN5bmMgZmx5VG8oKSB7XHJcbiAgICBzZXRBY3RpdmVWaWV3ZXIoMClcclxuICAgIGNsb3NlUm90YXRlQXJvdW5kKHRoaXMuc2RrKVxyXG4gICAgY2xvc2VWaWV3Rm9sbG93KHRoaXMuc2RrKVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldyAmJiB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uICYmIHRoaXMub3B0aW9ucy5jdXN0b21WaWV3Lm9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGxldCBvcmllbnRhdGlvbiA9IHtcclxuICAgICAgICBoZWFkaW5nOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24uaGVhZGluZyB8fCAwLjApLFxyXG4gICAgICAgIHBpdGNoOiBDZXNpdW0uTWF0aC50b1JhZGlhbnModGhpcy5vcHRpb25zLmN1c3RvbVZpZXcub3JpZW50YXRpb24ucGl0Y2ggfHwgLTYwLjApLFxyXG4gICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucyh0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5vcmllbnRhdGlvbi5yb2xsIHx8IDAuMClcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGxuZyA9IHRoaXMub3B0aW9ucy5jdXN0b21WaWV3LnJlbGF0aXZlUG9zaXRpb24ubG5nXHJcbiAgICAgIGxldCBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdFxyXG4gICAgICBsZXQgYWx0ID0gdGhpcy5vcHRpb25zLmN1c3RvbVZpZXcucmVsYXRpdmVQb3NpdGlvbi5hbHRcclxuICAgICAgbGV0IGRlc3RpbmF0aW9uID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXMobG5nLCBsYXQsIGFsdClcclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IHsgbG5nOiAwLCBsYXQ6IDAgfVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5wb3NpdGlvbiB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9ucykge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMubGluZSAmJiB0aGlzLm9wdGlvbnMubGluZS5wb3NpdGlvbnMpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHsgLi4udGhpcy5vcHRpb25zLmxpbmUucG9zaXRpb25zWzBdIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB7IC4uLnRoaXMub3B0aW9ucy5jZW50ZXIgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zdGFydCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0geyAuLi50aGlzLm9wdGlvbnMuc3RhcnQgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xuZycpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sbmcgPSB0aGlzLm9wdGlvbnMubG5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2xhdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5sYXQgPSB0aGlzLm9wdGlvbnMubGF0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2FsdCcpKSB7XHJcbiAgICAgICAgICBwb3NpdGlvbi5hbHQgPSB0aGlzLm9wdGlvbnMuYWx0XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIOWmguaenOayoeaciemrmOW6puWAvO+8jOWImeiOt+WPlue0p+i0tOmrmOW6puiuoeeul1xyXG4gICAgICBpZiAoIXBvc2l0aW9uLmhhc093blByb3BlcnR5KCdhbHQnKSkge1xyXG4gICAgICAgIHBvc2l0aW9uLmFsdCA9IGF3YWl0IHRoaXMuZ2V0Q2xhbXBUb0hlaWdodChwb3NpdGlvbilcclxuICAgICAgfVxyXG4gICAgICBsbmcgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxuZyArIHBvc2l0aW9uLmxuZ1xyXG4gICAgICBsYXQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmxhdCArIHBvc2l0aW9uLmxhdFxyXG4gICAgICBhbHQgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmlldy5yZWxhdGl2ZVBvc2l0aW9uLmFsdCArIHBvc2l0aW9uLmFsdFxyXG4gICAgICBkZXN0aW5hdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKGxuZywgbGF0LCBhbHQpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG8oe1xyXG4gICAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcclxuICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgcG9zaXRpb25BcnJheSA9IFtdXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vcHRpb25zLnBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBhID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXModGhpcy5vcHRpb25zLnBvc2l0aW9uc1tpXS5sbmcsIHRoaXMub3B0aW9ucy5wb3NpdGlvbnNbaV0ubGF0LCB0aGlzLmNlbnRlcjg0LmFsdClcclxuICAgICAgICBwb3NpdGlvbkFycmF5LnB1c2goYS54LCBhLnksIGEueilcclxuICAgICAgfVxyXG4gICAgICBsZXQgQm91bmRpbmdTcGhlcmUgPSBDZXNpdW0uQm91bmRpbmdTcGhlcmUuZnJvbVZlcnRpY2VzKHBvc2l0aW9uQXJyYXkpXHJcbiAgICAgIHRoaXMuc2RrLnZpZXdlci5jYW1lcmEuZmx5VG9Cb3VuZGluZ1NwaGVyZShCb3VuZGluZ1NwaGVyZSwge1xyXG4gICAgICAgIG9mZnNldDoge1xyXG4gICAgICAgICAgaGVhZGluZzogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKDAuMCksXHJcbiAgICAgICAgICBwaXRjaDogQ2VzaXVtLk1hdGgudG9SYWRpYW5zKC05MC4wKSxcclxuICAgICAgICAgIHJvbGw6IENlc2l1bS5NYXRoLnRvUmFkaWFucygwLjApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZWRpdChzdGF0ZSkge1xyXG4gICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5kZWVwQ29weU9iaih0aGlzLm9wdGlvbnMpXHJcbiAgICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhpcy5zZGsudmlld2VyLl9jb250YWluZXIsIHtcclxuICAgICAgLy8gICAgIHRpdGxlOiAn5Y6L5bmz6Z2i5bGe5oCnJywgbGVmdDogJzE4MHB4JywgdG9wOiAnMTAwcHgnLFxyXG4gICAgICAvLyAgICAgcmVtb3ZlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgLy8gICAgICAgICB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5yZW1vdmVDYWxsQmFjaygpXHJcbiAgICAgIC8vICAgICB9LFxyXG4gICAgICAvLyAgICAgY2xvc2VDYWxsQmFjazogKCkgPT4ge1xyXG4gICAgICAvLyAgICAgICAgIHRoaXMucmVzZXQoKVxyXG4gICAgICAvLyAgICAgICAgIHRoaXMuRGlhbG9nLmNsb3NlQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY2xvc2VDYWxsQmFjaygpXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vIH0pXHJcbiAgICAgIC8vIGF3YWl0IHRoaXMuX0RpYWxvZ09iamVjdC5pbml0KClcclxuICAgICAgLy8g5YaF5a656YOo5YiGXHJcbiAgICAgIC8vIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIC8vIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gYFxyXG4gICAgICAvLyAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgLy8gICAgIDxkaXYgY2xhc3M9XCJkaXYtaXRlbVwiPlxyXG4gICAgICAvLyAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiIHN0eWxlPVwid2lkdGg6IDU2cHg7ZmxleDogMCAwIDU2cHg7XCI+5ZCN56ewPC9zcGFuPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaW5wdXQtbmFtZVwiPlxyXG4gICAgICAvLyAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgLy8gICAgICAgICA8L2Rpdj5cclxuICAgICAgLy8gICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIC8vICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgLy8gICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIiBzdHlsZT1cIndpZHRoOiA1NnB4O2ZsZXg6IDAgMCA1NnB4O1wiPuWOi+W5s+mrmOW6pjwvc3Bhbj5cclxuICAgICAgLy8gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1udW1iZXIgaW5wdXQtbnVtYmVyLXVuaXQtMVwiPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGZsYXQtaGVpZ2h0XCIgdHlwZT1cIm51bWJlclwiIHRpdGxlPVwiXCIgbWluPVwiLTk5OTk5OTlcIiBtYXg9XCI5OTk5OTk5OTlcIj5cclxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXRcIj5tPC9zcGFuPlxyXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgIC8vICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgLy8gICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgIC8vICAgICAgICAgPC9kaXY+XHJcbiAgICAgIC8vICAgICA8L2Rpdj5cclxuICAgICAgLy8gYFxyXG4gICAgICAvLyB0aGlzLl9EaWFsb2dPYmplY3QuY29udGVudEFwcENoaWxkKGNvbnRlbnRFbG0pXHJcbiAgICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmxhdFBsYW5lJylbMF1cclxuICAgICAgbGV0IG5hbWVfZWxtID0gY29udGVudEVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpbnB1dC1uYW1lJylbMF1cclxuICAgICAgbmFtZV9lbG0udmFsdWUgPSB0aGlzLm9wdGlvbnMubmFtZVxyXG4gICAgICBuYW1lX2VsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lX2VsbS52YWx1ZVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgbGV0IGhlaWdodF9lbG0gPSBjb250ZW50RWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZsYXQtaGVpZ2h0JylbMF1cclxuICAgICAgaGVpZ2h0X2VsbS52YWx1ZSA9IHRoaXMub3B0aW9ucy5oZWlnaHRcclxuICAgICAgaGVpZ2h0X2VsbS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLmhlaWdodCA9IE51bWJlcihoZWlnaHRfZWxtLnZhbHVlKVxyXG4gICAgICAgIHRoaXMuYWRkRmxhdCgpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyBsZXQgY29uZmlybUVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgICAvLyBjb25maXJtRWxtLmNsYXNzTmFtZSA9ICdidG4nXHJcbiAgICAgIC8vIGNvbmZpcm1FbG0uaW5uZXJIVE1MID0gJ+ehruiupCdcclxuICAgICAgLy8gdGhpcy5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChjb25maXJtRWxtKVxyXG4gICAgICAvLyBjb25maXJtRWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAvLyAgIGlmICghdGhpcy5vcHRpb25zLm5hbWUpIHtcclxuICAgICAgLy8gICAgIHRoaXMub3B0aW9ucy5uYW1lID0gJ+WOi+W5s+mdoidcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgICAgLy8gICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAvLyAgIHRoaXMuRGlhbG9nLmNvbmZpcm1DYWxsQmFjayAmJiB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sodGhpcy5vcHRpb25zKVxyXG4gICAgICAvLyB9KVxyXG5cclxuICAgICAgLy8gbGV0IGZsYXRFbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgLy8gZmxhdEVsbS5jbGFzc05hbWUgPSAnYnRuJ1xyXG4gICAgICAvLyBmbGF0RWxtLmlubmVySFRNTCA9ICc8c3ZnIGNsYXNzPVwiaWNvbi1lZGl0XCI+PHVzZSB4bGluazpocmVmPVwiI3lqLWljb24tZWRpdFwiPjwvdXNlPjwvc3ZnPuS6jOasoee8lui+kSdcclxuICAgICAgLy8gZmxhdEVsbS5zdHlsZS53aWR0aCA9ICdhdXRvJ1xyXG4gICAgICAvLyBmbGF0RWxtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xyXG4gICAgICAvLyBmbGF0RWxtLnN0eWxlLmxlZnQgPSAnMTBweCdcclxuICAgICAgLy8gdGhpcy5fRGlhbG9nT2JqZWN0LmZvb3RBcHBDaGlsZChmbGF0RWxtKVxyXG4gICAgICAvLyBmbGF0RWxtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAvLyAgICAgY29uc29sZS5sb2coJ+S6jOasoee8lui+kScpXHJcbiAgICAgIC8vIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuX0RpYWxvZ09iamVjdCAmJiB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UpIHtcclxuICAgICAgICB0aGlzLl9EaWFsb2dPYmplY3QuY2xvc2UoKVxyXG4gICAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3VyZSgpIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLm5hbWUpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm5hbWUgPSAn5Y6L5bmz6Z2iJ1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3B0aW9ucylcclxuICAgIC8vIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAvLyB0aGlzLkRpYWxvZy5jb25maXJtQ2FsbEJhY2sgJiYgdGhpcy5EaWFsb2cuY29uZmlybUNhbGxCYWNrKHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRlZXBDb3B5T2JqKHRoaXMub3JpZ2luYWxPcHRpb25zKVxyXG4gICAgdGhpcy5uYW1lID0gdGhpcy5vcHRpb25zLm5hbWVcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5vcHRpb25zLmhlaWdodFxyXG4gICAgdGhpcy5hZGRGbGF0KClcclxuICB9XHJcblxyXG4gIGZsYXRFZGl0KHN0YXRlKSB7XHJcbiAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQub3B0aW9ucy5wb3NpdGlvbnNcclxuICAgICAgbGV0IGZyb21EZWdyZWVzQXJyYXkgPSBbXVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZyb21EZWdyZWVzQXJyYXkucHVzaChwb3NpdGlvbnNbaV0ubG5nLCBwb3NpdGlvbnNbaV0ubGF0LCBGbGF0TGlzdFt0aGlzLnRpbGVzZXQuaWRdKVxyXG4gICAgICB9XHJcbiAgICAgIHRoYXQucG9zaXRpb25zID0gQ2VzaXVtLkNhcnRlc2lhbjMuZnJvbURlZ3JlZXNBcnJheUhlaWdodHMoZnJvbURlZ3JlZXNBcnJheSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZsaWNrZXIoKSB7IH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZsYXQ7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBb1FBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBelFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFXQTtBQWxCQTtBQUFBO0FBQUE7QUFvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVUE7QUFqQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF5QkE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFZQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUF4RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Flat/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/Profile/_element.js":
-/*!**********************************************!*\
- !*** ./src/Obj/Analysis/Profile/_element.js ***!
- \**********************************************/
-/*! exports provided: html */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"html\", function() { return html; });\nfunction html() {\n return \"\\n \\n \\n \";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvX2VsZW1lbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvX2VsZW1lbnQuanM/NWJmYSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBodG1sKCkge1xyXG4gICAgcmV0dXJuIGBcclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1lY2hhcnRzXCI+PC9kaXY+XHJcbiAgICBgXHJcbn1cclxuXHJcbmV4cG9ydCB7IGh0bWwgfSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Profile/_element.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/Profile/index.js":
-/*!*******************************************!*\
- !*** ./src/Obj/Analysis/Profile/index.js ***!
- \*******************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _Draw_draw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../Draw/draw */ \"./src/Draw/draw.js\");\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../Event */ \"./src/Event/index.js\");\n/* harmony import */ var _MouseTip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../MouseTip */ \"./src/MouseTip/index.js\");\n/* harmony import */ var _BaseDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../BaseDialog */ \"./src/BaseDialog/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_element */ \"./src/Obj/Analysis/Profile/_element.js\");\n\n\n\n\n\n\n\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\n\n\n\n\nvar Profile = /*#__PURE__*/function (_Draw) {\n /**\r\n * @constructor 剖面分析\r\n * @param sdk\r\n **/\n function Profile(sdk) {\n var _this;\n var _Dialog = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Profile);\n window.addEventListener(\"resize\", function () {\n _this.echartsObject && _this.echartsObject.resize();\n });\n _this = _callSuper(this, Profile, [sdk]);\n _this.viewer = sdk.viewer;\n _this.Dialog = _Dialog;\n YJ.Analysis.AnalysesResults.push(_this);\n Profile.create(_this);\n return _this;\n }\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Profile, _Draw);\n return _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Profile, [{\n key: \"reDraw\",\n value: function reDraw() {\n Profile.create(this);\n }\n }, {\n key: \"onEnd\",\n get: function get() {\n return this.clickCallBack;\n },\n set: function set(val) {\n if (val && typeof val !== 'function') {\n console.error('val:', val, '不是一个function');\n } else {\n this.clickCallBack = val;\n }\n }\n\n /**\r\n * 线段插值点\r\n */\n }, {\n key: \"formatter\",\n value: function formatter(xy, tipData) {\n if (this.polyline) {\n var pointOption = {\n show: true,\n pixelSize: 10,\n color: Cesium.Color.GREEN,\n outlineColor: Cesium.Color.SKYBLUE,\n outlineWidth: 3,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n };\n if (!this.tipEntity) {\n this.tipEntity = this.sdk.viewer.entities.add({\n position: Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1])),\n point: pointOption\n });\n } else {\n this.tipEntity.position = Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1]));\n }\n }\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.end();\n this._currentId = null;\n this.entityHasCreated = false;\n this.polyline && this.viewer.entities.remove(this.polyline);\n this.tipEntity && this.viewer.entities.remove(this.tipEntity);\n this.polyline = null;\n this.tipEntity = null;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.clean();\n if (this._DialogObject && this._DialogObject.close) {\n this._DialogObject.close();\n this._DialogObject = null;\n }\n }\n }], [{\n key: \"create\",\n value: function create(that) {\n var _this2 = this;\n this._currentId = Cesium.createGuid();\n var id = this._currentId;\n that.clean();\n if (YJ.Measure.GetMeasureStatus()) {\n console.warn('上一次测量未结束');\n } else {\n YJ.Measure.SetMeasureStatus(true);\n that.tip = new _MouseTip__WEBPACK_IMPORTED_MODULE_9__[\"default\"]('左键点击确定起点位置,右键点击取消绘制!', that.sdk);\n that.event = new _Event__WEBPACK_IMPORTED_MODULE_8__[\"default\"](that.sdk);\n that.positions = [];\n that.points_ids = []; //存放左键点击时临时添加的point的id\n\n var cache_positions = [];\n var car = undefined;\n that.event.mouse_left(/*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee(movement, cartesian) {\n var positions;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n try {\n that.tip.set_text('左键点击确定终点位置,右键点击取消绘制!');\n if (!that.entityHasCreated) {\n Profile.create_polyline(that);\n }\n cache_positions.push(cartesian);\n that.points_ids.push(that.create_point(cartesian));\n if (cache_positions.length == 2) {\n that.end();\n positions = [];\n cache_positions.forEach(function (item) {\n positions.push(that.cartesian3Towgs84(item, that.viewer));\n });\n Profile.interPoints(that).then(function (points) {\n if (_this2._currentId && _this2._currentId === id) {\n that.clickCallBack(points);\n }\n });\n }\n } catch (error) {\n console.log(error);\n }\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n that.event.mouse_right(function (movement, cartesian) {\n var positions = [];\n cache_positions = [];\n that.clean();\n });\n that.event.mouse_move(function (movement, cartesian) {\n that.positions = cache_positions.concat(cartesian);\n that.tip.setPosition(cartesian, movement.endPosition.x, movement.endPosition.y);\n });\n that.event.gesture_pinck_start(function (movement, cartesian) {\n var startTime = new Date();\n that.event.gesture_pinck_end(function () {\n var endTime = new Date();\n if (endTime - startTime >= 500) {\n var positions = [];\n cache_positions = [];\n that.end();\n }\n });\n });\n }\n }\n }, {\n key: \"create_polyline\",\n value: function create_polyline(that) {\n that.entityHasCreated = true;\n var id = that.randomString();\n that.polyline = that.viewer.entities.add(new Cesium.Entity({\n id: id,\n polyline: {\n positions: new Cesium.CallbackProperty(function () {\n return that.positions;\n }, false),\n width: 5,\n material: Cesium.Color.fromCssColorString(that.color),\n clampToGround: true,\n zIndex: 99999999\n }\n }));\n return id;\n }\n }, {\n key: \"interPoints\",\n value: (function () {\n var _interPoints = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee2(that) {\n var viewer, positions, positionsCartographic, positions84, index, element, cartographic, pos84, positions_Inter, height, i, line, totalDistance, m_Cartographic0, m_Cartographic1, a, b, length, distance, j, start, stop, sliced, lng, lat, _height;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n viewer = that.viewer;\n positions = that.positions;\n positionsCartographic = [];\n positions84 = [];\n for (index = 0; index < positions.length; index++) {\n element = positions[index];\n cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(element);\n positionsCartographic.push(cartographic);\n pos84 = that.cartesian3Towgs84(element, viewer);\n positions84.push(pos84);\n }\n positions_Inter = [];\n _context2.next = 8;\n return that.getClampToHeight({\n lng: positions84[0].lng,\n lat: positions84[0].lat\n });\n case 8:\n height = _context2.sent;\n positions_Inter.push({\n position: {\n lng: positions84[0].lng,\n lat: positions84[0].lat,\n height: height\n },\n distance: 0\n });\n i = 0;\n case 11:\n if (!(i < positionsCartographic.length - 1)) {\n _context2.next = 42;\n break;\n }\n line = turf.lineString([[positions84[i].lng, positions84[i].lat], [positions84[i + 1].lng, positions84[i + 1].lat]]);\n totalDistance = turf.length(line, {\n units: 'kilometers'\n });\n m_Cartographic0 = positionsCartographic[i];\n m_Cartographic1 = positionsCartographic[i + 1];\n a = Math.abs(m_Cartographic0.longitude - m_Cartographic1.longitude) * 10000000;\n b = Math.abs(m_Cartographic0.latitude - m_Cartographic1.latitude) * 10000000; //等距采样\n if (a > b) b = a;\n length = parseInt(b / 2);\n if (length > 150) length = 150;\n if (length < 2) length = 2;\n distance = totalDistance / (length - 1);\n j = 0;\n case 24:\n if (!(j < length - 1)) {\n _context2.next = 39;\n break;\n }\n start = j * distance;\n stop = (j + 1) * distance;\n _context2.next = 29;\n return turf.lineSliceAlong(line, start, stop, {\n units: 'kilometers'\n });\n case 29:\n sliced = _context2.sent;\n lng = sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1][0];\n lat = sliced.geometry.coordinates[sliced.geometry.coordinates.length - 1][1];\n _context2.next = 34;\n return that.getClampToHeight({\n lng: lng,\n lat: lat\n });\n case 34:\n _height = _context2.sent;\n positions_Inter.push({\n position: {\n lng: lng,\n lat: lat,\n height: _height\n },\n distance: stop * 1000\n });\n case 36:\n j++;\n _context2.next = 24;\n break;\n case 39:\n i++;\n _context2.next = 11;\n break;\n case 42:\n return _context2.abrupt(\"return\", positions_Inter);\n case 43:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n function interPoints(_x3) {\n return _interPoints.apply(this, arguments);\n }\n return interPoints;\n }())\n }, {\n key: \"edit\",\n value: function () {\n var _edit = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.mark(function _callee3(that, points) {\n var contentElm, resetBtn;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_6___default.a.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (that._DialogObject && that._DialogObject.close) {\n that._DialogObject.close();\n that._DialogObject = null;\n }\n _context3.next = 3;\n return new _BaseDialog__WEBPACK_IMPORTED_MODULE_10__[\"default\"](that.sdk.viewer._container, {\n title: '剖面分析',\n left: '180px',\n top: '100px',\n closeCallBack: function closeCallBack() {\n that.clean();\n that.Dialog.closeCallBack && that.Dialog.closeCallBack();\n }\n });\n case 3:\n that._DialogObject = _context3.sent;\n _context3.next = 6;\n return that._DialogObject.init();\n case 6:\n that._DialogObject._element.body.className = that._DialogObject._element.body.className + ' profile';\n contentElm = document.createElement('div');\n contentElm.innerHTML = Object(_element__WEBPACK_IMPORTED_MODULE_11__[\"html\"])();\n that._DialogObject.contentAppChild(contentElm);\n resetBtn = document.createElement('button');\n resetBtn.innerHTML = '重新绘制';\n resetBtn.style.width = 'auto';\n resetBtn.addEventListener('click', function () {\n Profile.create(that);\n Profile.initEcharts(that);\n });\n that._DialogObject.footAppChild(resetBtn);\n Profile.initEcharts(that, points);\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function edit(_x4, _x5) {\n return _edit.apply(this, arguments);\n }\n return edit;\n }()\n }, {\n key: \"initEcharts\",\n value: function initEcharts(that, points) {\n var datas = [],\n coords = [];\n var pointsData = points;\n var option;\n if (pointsData) {\n var maxDistance = pointsData[pointsData.length - 1].distance;\n var xAixMax = Math.ceil(maxDistance);\n for (var index = 0; index < pointsData.length; index++) {\n var element = pointsData[index];\n if (element.position.height === void 0) {\n continue;\n }\n var curData = [element.distance.toFixed(2), element.position.height.toFixed(2)];\n datas.push(curData);\n var curCoords = [element.position.lng, element.position.lat];\n coords.push(curCoords);\n }\n var pointOption = {\n show: true,\n pixelSize: 10,\n color: Cesium.Color.GREEN,\n outlineColor: Cesium.Color.SKYBLUE,\n outlineWidth: 3,\n disableDepthTestDistance: Number.POSITIVE_INFINITY\n };\n var ele = document.getElementsByClassName(\"profile-echarts\")[0];\n that.echartsObject = echarts.init(ele);\n option = {\n tooltip: {\n trigger: \"axis\",\n textStyle: {\n align: \"left\"\n },\n formatter: function formatter(params) {\n var xy = coords[params[0].dataIndex];\n var tipData = params[0][\"data\"];\n if (!that.tipEntity) {\n that.tipEntity = that.sdk.viewer.entities.add({\n position: Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1])),\n point: pointOption\n });\n } else {\n that.tipEntity.position = Cesium.Cartesian3.fromDegrees(xy[0], xy[1], Number(tipData[1]));\n }\n return \"距离:\" + tipData[0] + \"m
\" + \"高度:\" + tipData[1] + \"m
\" + \"坐标:\" + xy[0].toFixed(5) + \",\" + xy[1].toFixed(5);\n }\n },\n grid: {\n top: 40,\n bottom: 20,\n left: 55,\n right: 30\n },\n calculable: true,\n xAxis: [{\n type: \"value\",\n max: xAixMax,\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n yAxis: [{\n type: \"value\",\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n series: [{\n name: \"ProfileLine\",\n type: \"line\",\n data: datas,\n smooth: true,\n itemStyle: {\n normal: {\n color: \"#39FDA1\"\n }\n },\n lineStyle: {\n normal: {\n width: 3,\n color: {\n type: \"linear\",\n x: 0,\n y: 0,\n x2: 1,\n y2: 0,\n colorStops: [{\n offset: 0,\n color: \"rgba(85,254,139,1)\" // 0% 处的颜色\n }, {\n offset: 0.5,\n color: \"rgba(7,252,202,1)\" // 100% 处的颜色\n }, {\n offset: 1,\n color: \"rgba(14,245,210,1)\" // 100% 处的颜色\n }],\n globalCoord: false // 缺省为 false\n }\n }\n },\n areaStyle: {\n normal: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n offset: 0,\n color: \"rgba(102,153,255,1)\"\n }, {\n offset: 0.8,\n color: \"rgba(102,153,255,0.08)\"\n }, {\n offset: 1,\n color: \"rgba(9,173,208,0.15)\"\n }], false),\n shadowColor: \"rgba(14,245,210,1)\",\n //阴影颜色\n shadowBlur: 20\n }\n },\n markPoint: {\n data: [{\n type: \"max\",\n name: \"最高点\",\n label: {\n color: '#ffffff'\n }\n }, {\n type: \"min\",\n name: \"最低点\",\n label: {\n color: '#ffffff'\n }\n }]\n }\n }]\n };\n } else {\n var _ele = document.getElementsByClassName(\"profile-echarts\")[0];\n that.echartsObject = echarts.init(_ele);\n option = {\n tooltip: {\n trigger: \"axis\",\n textStyle: {\n align: \"left\"\n }\n },\n grid: {\n top: 40,\n bottom: 20,\n left: 55,\n right: 30\n },\n calculable: true,\n xAxis: [{\n type: \"value\",\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n yAxis: [{\n type: \"value\",\n scale: true,\n axisLabel: {\n color: '#ffffff'\n },\n axisLine: {\n lineStyle: {\n color: \"#ffffff\"\n }\n }\n }],\n series: [{\n name: \"ProfileLine\",\n type: \"line\",\n data: [],\n smooth: true,\n itemStyle: {\n normal: {\n color: \"#39FDA1\"\n }\n },\n lineStyle: {\n normal: {\n width: 3,\n color: {\n type: \"linear\",\n x: 0,\n y: 0,\n x2: 1,\n y2: 0,\n colorStops: [{\n offset: 0,\n color: \"rgba(85,254,139,1)\" // 0% 处的颜色\n }, {\n offset: 0.5,\n color: \"rgba(7,252,202,1)\" // 100% 处的颜色\n }, {\n offset: 1,\n color: \"rgba(14,245,210,1)\" // 100% 处的颜色\n }],\n globalCoord: false // 缺省为 false\n }\n }\n },\n areaStyle: {\n normal: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n offset: 0,\n color: \"rgba(102,153,255,1)\"\n }, {\n offset: 0.8,\n color: \"rgba(102,153,255,0.08)\"\n }, {\n offset: 1,\n color: \"rgba(9,173,208,0.15)\"\n }], false),\n shadowColor: \"rgba(14,245,210,1)\",\n //阴影颜色\n shadowBlur: 20\n }\n },\n markPoint: {\n data: [{\n type: \"max\",\n name: \"最高点\",\n label: {\n color: '#ffffff'\n }\n }, {\n type: \"min\",\n name: \"最低点\",\n label: {\n color: '#ffffff'\n }\n }]\n }\n }]\n };\n }\n that.echartsObject.setOption(option);\n }\n }]);\n}(_Draw_draw__WEBPACK_IMPORTED_MODULE_7__[\"default\"]); // const Profile = function (viewer, callback) {\n// if (!viewer) throw new Error(\"no viewer object!\");\n// if (window.profileEntities && window.profileEntities.length > 0) {\n// window.profileEntities.forEach((element) => {\n// window.viewer.entities.remove(element);\n// });\n// }\n// window.profileEntities = [];\n// CreatePolyline(\n// viewer,\n// window.profileEntities,\n// { color: Cesium.Color.RED, width: 2 },\n// function (e) {\n// e.polyline.clampToGround = true;\n// console.log(e.pottingPoint);\n// let points = interPoints(viewer, e.pottingPoint, [e]);\n// console.log(points);\n// if (typeof callback == \"function\") callback(points);\n// }\n// );\n// };\n// /**\n// * 线段插值点\n// * @param {*} viewer\n// * @param {*} positions 线段节点集合\n// * @param {*} objectsToExclude 高度采集时排除的对象集合\n// * @returns 经纬度点集合,包含距离值\n// */\n// function interPoints(viewer, positions, objectsToExclude) {\n// let positionsCartographic = [];\n// let terrainSamplePositions = [];\n// for (let index = 0; index < positions.length; index++) {\n// const element = positions[index];\n// let ellipsoid = viewer.scene.globe.ellipsoid;\n// let cartographic = ellipsoid.cartesianToCartographic(element);\n// positionsCartographic.push(cartographic);\n// }\n// for (let i = 0; i < positionsCartographic.length; i++) {\n// const m_Cartographic0 = positionsCartographic[i];\n// const m_Cartographic1 = positionsCartographic[i + 1];\n// if (m_Cartographic1) {\n// let a =\n// Math.abs(m_Cartographic0.longitude - m_Cartographic1.longitude) *\n// 10000000;\n// let b =\n// Math.abs(m_Cartographic0.latitude - m_Cartographic1.latitude) *\n// 10000000;\n// //等距采样\n// if (a > b) b = a;\n// let length = parseInt(b / 2);\n// if (length > 1000) length = 1000;\n// if (length < 2) length = 2;\n// for (let j = 0; j < length; j++) {\n// terrainSamplePositions.push(\n// new Cesium.Cartographic(\n// Cesium.Math.lerp(\n// m_Cartographic0.longitude,\n// m_Cartographic1.longitude,\n// j / (length - 1)\n// ),\n// Cesium.Math.lerp(\n// m_Cartographic0.latitude,\n// m_Cartographic1.latitude,\n// j / (length - 1)\n// )\n// )\n// );\n// }\n// terrainSamplePositions.pop();\n// } else {\n// terrainSamplePositions.push(m_Cartographic0);\n// }\n// }\n// let positions_Inter = [];\n// let distance = 0;\n// for (let n = 0; n < terrainSamplePositions.length; n++) {\n// //地理坐标(弧度)转经纬度坐标\n// let curCartographic = terrainSamplePositions[n];\n// let height = viewer.scene.sampleHeight(curCartographic, objectsToExclude);\n// const lon = (curCartographic.longitude / Math.PI) * 180;\n// const lat = (curCartographic.latitude / Math.PI) * 180;\n// let point = Cesium.Cartesian3.fromDegrees(lon, lat, height);\n// let preCartographic = terrainSamplePositions[n - 1];\n// if (preCartographic) {\n// const lon1 = (preCartographic.longitude / Math.PI) * 180;\n// const lat1 = (preCartographic.latitude / Math.PI) * 180;\n// let point1 = Cesium.Cartesian3.fromDegrees(lon1, lat1, height);\n// let curDis = Cesium.Cartesian3.distance(point1, point);\n// distance += curDis;\n// }\n// positions_Inter.push({\n// position: { lon: lon, lat: lat, height: height },\n// distance: distance,\n// });\n// }\n// return positions_Inter;\n// }\n/* harmony default export */ __webpack_exports__[\"default\"] = (Profile);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvT2JqL0FuYWx5c2lzL1Byb2ZpbGUvaW5kZXguanM/NDhhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRHJhdyBmcm9tIFwiLi4vLi4vLi4vRHJhdy9kcmF3XCI7XHJcbmltcG9ydCBNb3VzZUV2ZW50IGZyb20gXCIuLi8uLi8uLi9FdmVudFwiO1xyXG5pbXBvcnQgTW91c2VUaXAgZnJvbSBcIi4uLy4uLy4uL01vdXNlVGlwXCI7XHJcbmltcG9ydCBEaWFsb2cgZnJvbSAnLi4vLi4vLi4vQmFzZURpYWxvZyc7XHJcbmltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi9fZWxlbWVudFwiO1xyXG5jbGFzcyBQcm9maWxlIGV4dGVuZHMgRHJhdyB7XHJcbiAgLyoqXHJcbiAgICogQGNvbnN0cnVjdG9yIOWJlumdouWIhuaekFxyXG4gICAqIEBwYXJhbSBzZGtcclxuICAqKi9cclxuICBjb25zdHJ1Y3RvcihzZGssIF9EaWFsb2cgPSB7fSkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgKCkgPT4ge1xyXG4gICAgICB0aGlzLmVjaGFydHNPYmplY3QgJiYgdGhpcy5lY2hhcnRzT2JqZWN0LnJlc2l6ZSgpO1xyXG4gICAgfSk7XHJcbiAgICBzdXBlcihzZGspXHJcbiAgICB0aGlzLnZpZXdlciA9IHNkay52aWV3ZXI7XHJcbiAgICB0aGlzLkRpYWxvZyA9IF9EaWFsb2dcclxuICAgIFlKLkFuYWx5c2lzLkFuYWx5c2VzUmVzdWx0cy5wdXNoKHRoaXMpXHJcbiAgICBQcm9maWxlLmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuICBzdGF0aWMgY3JlYXRlKHRoYXQpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRJZCA9IENlc2l1bS5jcmVhdGVHdWlkKClcclxuICAgIGxldCBpZCA9IHRoaXMuX2N1cnJlbnRJZFxyXG4gICAgdGhhdC5jbGVhbigpXHJcbiAgICBpZiAoWUouTWVhc3VyZS5HZXRNZWFzdXJlU3RhdHVzKCkpIHtcclxuICAgICAgY29uc29sZS53YXJuKCfkuIrkuIDmrKHmtYvph4/mnKrnu5PmnZ8nKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgWUouTWVhc3VyZS5TZXRNZWFzdXJlU3RhdHVzKHRydWUpXHJcbiAgICAgIHRoYXQudGlwID0gbmV3IE1vdXNlVGlwKCflt6bplK7ngrnlh7vnoa7lrprotbfngrnkvY3nva7vvIzlj7PplK7ngrnlh7vlj5bmtojnu5jliLbvvIEnLCB0aGF0LnNkaylcclxuICAgICAgdGhhdC5ldmVudCA9IG5ldyBNb3VzZUV2ZW50KHRoYXQuc2RrKVxyXG4gICAgICB0aGF0LnBvc2l0aW9ucyA9IFtdXHJcbiAgICAgIHRoYXQucG9pbnRzX2lkcyA9IFtdIC8v5a2Y5pS+5bem6ZSu54K55Ye75pe25Li05pe25re75Yqg55qEcG9pbnTnmoRpZFxyXG5cclxuICAgICAgbGV0IGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgIGxldCBjYXIgPSB1bmRlZmluZWRcclxuICAgICAgdGhhdC5ldmVudC5tb3VzZV9sZWZ0KGFzeW5jIChtb3ZlbWVudCwgY2FydGVzaWFuKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoYXQudGlwLnNldF90ZXh0KCflt6bplK7ngrnlh7vnoa7lrprnu4jngrnkvY3nva7vvIzlj7PplK7ngrnlh7vlj5bmtojnu5jliLbvvIEnKVxyXG4gICAgICAgICAgaWYgKCF0aGF0LmVudGl0eUhhc0NyZWF0ZWQpIHtcclxuICAgICAgICAgICAgUHJvZmlsZS5jcmVhdGVfcG9seWxpbmUodGhhdClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucy5wdXNoKGNhcnRlc2lhbilcclxuICAgICAgICAgIHRoYXQucG9pbnRzX2lkcy5wdXNoKHRoYXQuY3JlYXRlX3BvaW50KGNhcnRlc2lhbiwpKVxyXG4gICAgICAgICAgaWYgKGNhY2hlX3Bvc2l0aW9ucy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICB0aGF0LmVuZCgpXHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgICAgICBjYWNoZV9wb3NpdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHRoYXQuY2FydGVzaWFuM1Rvd2dzODQoaXRlbSwgdGhhdC52aWV3ZXIpKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBQcm9maWxlLmludGVyUG9pbnRzKHRoYXQpLnRoZW4oKHBvaW50cykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SWQgJiYgdGhpcy5fY3VycmVudElkID09PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhhdC5jbGlja0NhbGxCYWNrKHBvaW50cylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoYXQuZXZlbnQubW91c2VfcmlnaHQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgcG9zaXRpb25zID0gW11cclxuICAgICAgICBjYWNoZV9wb3NpdGlvbnMgPSBbXVxyXG4gICAgICAgIHRoYXQuY2xlYW4oKVxyXG4gICAgICB9KVxyXG4gICAgICB0aGF0LmV2ZW50Lm1vdXNlX21vdmUoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICB0aGF0LnBvc2l0aW9ucyA9IGNhY2hlX3Bvc2l0aW9ucy5jb25jYXQoY2FydGVzaWFuKVxyXG4gICAgICAgIHRoYXQudGlwLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgY2FydGVzaWFuLFxyXG4gICAgICAgICAgbW92ZW1lbnQuZW5kUG9zaXRpb24ueCxcclxuICAgICAgICAgIG1vdmVtZW50LmVuZFBvc2l0aW9uLnlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGF0LmV2ZW50Lmdlc3R1cmVfcGluY2tfc3RhcnQoKG1vdmVtZW50LCBjYXJ0ZXNpYW4pID0+IHtcclxuICAgICAgICBsZXQgc3RhcnRUaW1lID0gbmV3IERhdGUoKVxyXG4gICAgICAgIHRoYXQuZXZlbnQuZ2VzdHVyZV9waW5ja19lbmQoKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgICBpZiAoZW5kVGltZSAtIHN0YXJ0VGltZSA+PSA1MDApIHtcclxuICAgICAgICAgICAgbGV0IHBvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgIGNhY2hlX3Bvc2l0aW9ucyA9IFtdXHJcbiAgICAgICAgICAgIHRoYXQuZW5kKClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICByZURyYXcoKSB7XHJcbiAgICBQcm9maWxlLmNyZWF0ZSh0aGlzKVxyXG4gIH1cclxuICBzdGF0aWMgY3JlYXRlX3BvbHlsaW5lKHRoYXQpIHtcclxuICAgIHRoYXQuZW50aXR5SGFzQ3JlYXRlZCA9IHRydWVcclxuICAgIGxldCBpZCA9IHRoYXQucmFuZG9tU3RyaW5nKClcclxuICAgIHRoYXQucG9seWxpbmUgPSB0aGF0LnZpZXdlci5lbnRpdGllcy5hZGQoXHJcbiAgICAgIG5ldyBDZXNpdW0uRW50aXR5KHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgcG9seWxpbmU6IHtcclxuICAgICAgICAgIHBvc2l0aW9uczogbmV3IENlc2l1bS5DYWxsYmFja1Byb3BlcnR5KCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoYXQucG9zaXRpb25zXHJcbiAgICAgICAgICB9LCBmYWxzZSksXHJcbiAgICAgICAgICB3aWR0aDogNSxcclxuICAgICAgICAgIG1hdGVyaWFsOiBDZXNpdW0uQ29sb3IuZnJvbUNzc0NvbG9yU3RyaW5nKHRoYXQuY29sb3IpLFxyXG4gICAgICAgICAgY2xhbXBUb0dyb3VuZDogdHJ1ZSxcclxuICAgICAgICAgIHpJbmRleDogOTk5OTk5OTlcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgcmV0dXJuIGlkXHJcbiAgfVxyXG4gIGdldCBvbkVuZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNsaWNrQ2FsbEJhY2tcclxuICB9XHJcbiAgc2V0IG9uRW5kKHZhbCkge1xyXG4gICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ3ZhbDonLCB2YWwsICfkuI3mmK/kuIDkuKpmdW5jdGlvbicpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsaWNrQ2FsbEJhY2sgPSB2YWxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiDnur/mrrXmj5LlgLzngrlcclxuICovXHJcbiAgc3RhdGljIGFzeW5jIGludGVyUG9pbnRzKHRoYXQpIHtcclxuICAgIGxldCB2aWV3ZXIgPSB0aGF0LnZpZXdlclxyXG4gICAgbGV0IHBvc2l0aW9ucyA9IHRoYXQucG9zaXRpb25zXHJcbiAgICBsZXQgcG9zaXRpb25zQ2FydG9ncmFwaGljID0gW11cclxuICAgIGxldCBwb3NpdGlvbnM4NCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBvc2l0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHBvc2l0aW9uc1tpbmRleF07XHJcbiAgICAgIGxldCBjYXJ0b2dyYXBoaWMgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGVsZW1lbnQpO1xyXG4gICAgICBwb3NpdGlvbnNDYXJ0b2dyYXBoaWMucHVzaChjYXJ0b2dyYXBoaWMpO1xyXG4gICAgICBsZXQgcG9zODQgPSB0aGF0LmNhcnRlc2lhbjNUb3dnczg0KGVsZW1lbnQsIHZpZXdlcilcclxuICAgICAgcG9zaXRpb25zODQucHVzaChwb3M4NCk7XHJcbiAgICB9XHJcbiAgICBsZXQgcG9zaXRpb25zX0ludGVyID0gW107XHJcbiAgICBsZXQgaGVpZ2h0ID0gYXdhaXQgdGhhdC5nZXRDbGFtcFRvSGVpZ2h0KHsgbG5nOiBwb3NpdGlvbnM4NFswXS5sbmcsIGxhdDogcG9zaXRpb25zODRbMF0ubGF0IH0pO1xyXG4gICAgcG9zaXRpb25zX0ludGVyLnB1c2goe1xyXG4gICAgICBwb3NpdGlvbjogeyBsbmc6IHBvc2l0aW9uczg0WzBdLmxuZywgbGF0OiBwb3NpdGlvbnM4NFswXS5sYXQsIGhlaWdodDogaGVpZ2h0IH0sXHJcbiAgICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgfSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uc0NhcnRvZ3JhcGhpYy5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgbGV0IGxpbmUgPSB0dXJmLmxpbmVTdHJpbmcoW1twb3NpdGlvbnM4NFtpXS5sbmcsIHBvc2l0aW9uczg0W2ldLmxhdF0sIFtwb3NpdGlvbnM4NFtpICsgMV0ubG5nLCBwb3NpdGlvbnM4NFtpICsgMV0ubGF0XV0pO1xyXG4gICAgICBsZXQgdG90YWxEaXN0YW5jZSA9IHR1cmYubGVuZ3RoKGxpbmUsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuXHJcbiAgICAgIGNvbnN0IG1fQ2FydG9ncmFwaGljMCA9IHBvc2l0aW9uc0NhcnRvZ3JhcGhpY1tpXTtcclxuICAgICAgY29uc3QgbV9DYXJ0b2dyYXBoaWMxID0gcG9zaXRpb25zQ2FydG9ncmFwaGljW2kgKyAxXTtcclxuICAgICAgbGV0IGEgPVxyXG4gICAgICAgIE1hdGguYWJzKG1fQ2FydG9ncmFwaGljMC5sb25naXR1ZGUgLSBtX0NhcnRvZ3JhcGhpYzEubG9uZ2l0dWRlKSAqXHJcbiAgICAgICAgMTAwMDAwMDA7XHJcbiAgICAgIGxldCBiID1cclxuICAgICAgICBNYXRoLmFicyhtX0NhcnRvZ3JhcGhpYzAubGF0aXR1ZGUgLSBtX0NhcnRvZ3JhcGhpYzEubGF0aXR1ZGUpICpcclxuICAgICAgICAxMDAwMDAwMDtcclxuICAgICAgLy/nrYnot53ph4fmoLdcclxuICAgICAgaWYgKGEgPiBiKSBiID0gYTtcclxuICAgICAgbGV0IGxlbmd0aCA9IHBhcnNlSW50KGIgLyAyKTtcclxuICAgICAgaWYgKGxlbmd0aCA+IDE1MCkgbGVuZ3RoID0gMTUwO1xyXG4gICAgICBpZiAobGVuZ3RoIDwgMikgbGVuZ3RoID0gMjtcclxuICAgICAgbGV0IGRpc3RhbmNlID0gdG90YWxEaXN0YW5jZSAvIChsZW5ndGggLSAxKVxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbmd0aCAtIDE7IGorKykge1xyXG4gICAgICAgIGxldCBzdGFydCA9IGogKiBkaXN0YW5jZVxyXG4gICAgICAgIGxldCBzdG9wID0gKGogKyAxKSAqIGRpc3RhbmNlXHJcbiAgICAgICAgbGV0IHNsaWNlZCA9IGF3YWl0IHR1cmYubGluZVNsaWNlQWxvbmcobGluZSwgc3RhcnQsIHN0b3AsIHsgdW5pdHM6ICdraWxvbWV0ZXJzJyB9KTtcclxuICAgICAgICBsZXQgbG5nID0gc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzW3NsaWNlZC5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggLSAxXVswXVxyXG4gICAgICAgIGxldCBsYXQgPSBzbGljZWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbc2xpY2VkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdWzFdXHJcbiAgICAgICAgbGV0IGhlaWdodCA9IGF3YWl0IHRoYXQuZ2V0Q2xhbXBUb0hlaWdodCh7IGxuZzogbG5nLCBsYXQ6IGxhdCB9KTtcclxuICAgICAgICBwb3NpdGlvbnNfSW50ZXIucHVzaCh7XHJcbiAgICAgICAgICBwb3NpdGlvbjogeyBsbmc6IGxuZywgbGF0OiBsYXQsIGhlaWdodDogaGVpZ2h0IH0sXHJcbiAgICAgICAgICBkaXN0YW5jZTogc3RvcCAqIDEwMDAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvbnNfSW50ZXJcclxuICB9XHJcbiAgZm9ybWF0dGVyKHh5LCB0aXBEYXRhKSB7XHJcbiAgICBpZiAodGhpcy5wb2x5bGluZSkge1xyXG4gICAgICBjb25zdCBwb2ludE9wdGlvbiA9IHtcclxuICAgICAgICBzaG93OiB0cnVlLFxyXG4gICAgICAgIHBpeGVsU2l6ZTogMTAsXHJcbiAgICAgICAgY29sb3I6IENlc2l1bS5Db2xvci5HUkVFTixcclxuICAgICAgICBvdXRsaW5lQ29sb3I6IENlc2l1bS5Db2xvci5TS1lCTFVFLFxyXG4gICAgICAgIG91dGxpbmVXaWR0aDogMyxcclxuICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy50aXBFbnRpdHkpIHtcclxuICAgICAgICB0aGlzLnRpcEVudGl0eSA9IHRoaXMuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKHh5WzBdLCB4eVsxXSwgTnVtYmVyKHRpcERhdGFbMV0pKSxcclxuICAgICAgICAgIHBvaW50OiBwb2ludE9wdGlvblxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50aXBFbnRpdHkucG9zaXRpb24gPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhcclxuICAgICAgICAgIHh5WzBdLFxyXG4gICAgICAgICAgeHlbMV0sXHJcbiAgICAgICAgICBOdW1iZXIodGlwRGF0YVsxXSlcclxuICAgICAgICApXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgZWRpdCh0aGF0LCBwb2ludHMpIHtcclxuICAgIGlmICh0aGF0Ll9EaWFsb2dPYmplY3QgJiYgdGhhdC5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoYXQuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICAgIHRoYXQuX0RpYWxvZ09iamVjdCA9IGF3YWl0IG5ldyBEaWFsb2codGhhdC5zZGsudmlld2VyLl9jb250YWluZXIsIHtcclxuICAgICAgdGl0bGU6ICfliZbpnaLliIbmnpAnLCBsZWZ0OiAnMTgwcHgnLCB0b3A6ICcxMDBweCcsXHJcbiAgICAgIGNsb3NlQ2FsbEJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGF0LmNsZWFuKClcclxuICAgICAgICB0aGF0LkRpYWxvZy5jbG9zZUNhbGxCYWNrICYmIHRoYXQuRGlhbG9nLmNsb3NlQ2FsbEJhY2soKVxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICAgIGF3YWl0IHRoYXQuX0RpYWxvZ09iamVjdC5pbml0KClcclxuICAgIHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSA9IHRoYXQuX0RpYWxvZ09iamVjdC5fZWxlbWVudC5ib2R5LmNsYXNzTmFtZSArICcgcHJvZmlsZSdcclxuICAgIGxldCBjb250ZW50RWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb250ZW50RWxtLmlubmVySFRNTCA9IGh0bWwoKVxyXG4gICAgdGhhdC5fRGlhbG9nT2JqZWN0LmNvbnRlbnRBcHBDaGlsZChjb250ZW50RWxtKVxyXG4gICAgbGV0IHJlc2V0QnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICByZXNldEJ0bi5pbm5lckhUTUwgPSAnPHN2ZyBjbGFzcz1cImljb24tZWRpdFwiPjx1c2UgeGxpbms6aHJlZj1cIiN5ai1pY29uLWVkaXRcIj48L3VzZT48L3N2Zz7ph43mlrDnu5jliLYnXHJcbiAgICByZXNldEJ0bi5zdHlsZS53aWR0aCA9ICdhdXRvJ1xyXG4gICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIFByb2ZpbGUuY3JlYXRlKHRoYXQpXHJcbiAgICAgIFByb2ZpbGUuaW5pdEVjaGFydHModGhhdClcclxuICAgIH0pXHJcbiAgICB0aGF0Ll9EaWFsb2dPYmplY3QuZm9vdEFwcENoaWxkKHJlc2V0QnRuKVxyXG4gICAgUHJvZmlsZS5pbml0RWNoYXJ0cyh0aGF0LCBwb2ludHMpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaW5pdEVjaGFydHModGhhdCwgcG9pbnRzKSB7XHJcbiAgICBsZXQgZGF0YXMgPSBbXSxcclxuICAgICAgY29vcmRzID0gW107XHJcbiAgICBjb25zdCBwb2ludHNEYXRhID0gcG9pbnRzO1xyXG5cclxuICAgIGxldCBvcHRpb25cclxuICAgIGlmIChwb2ludHNEYXRhKSB7XHJcbiAgICAgIGNvbnN0IG1heERpc3RhbmNlID0gcG9pbnRzRGF0YVtwb2ludHNEYXRhLmxlbmd0aCAtIDFdLmRpc3RhbmNlO1xyXG4gICAgICBsZXQgeEFpeE1heCA9IE1hdGguY2VpbChtYXhEaXN0YW5jZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwb2ludHNEYXRhLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwb2ludHNEYXRhW2luZGV4XTtcclxuICAgICAgICBpZiAoZWxlbWVudC5wb3NpdGlvbi5oZWlnaHQgPT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgY29udGludWVcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VyRGF0YSA9IFtcclxuICAgICAgICAgIGVsZW1lbnQuZGlzdGFuY2UudG9GaXhlZCgyKSxcclxuICAgICAgICAgIGVsZW1lbnQucG9zaXRpb24uaGVpZ2h0LnRvRml4ZWQoMiksXHJcbiAgICAgICAgXTtcclxuICAgICAgICBkYXRhcy5wdXNoKGN1ckRhdGEpO1xyXG4gICAgICAgIGNvbnN0IGN1ckNvb3JkcyA9IFtlbGVtZW50LnBvc2l0aW9uLmxuZywgZWxlbWVudC5wb3NpdGlvbi5sYXRdO1xyXG4gICAgICAgIGNvb3Jkcy5wdXNoKGN1ckNvb3Jkcyk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcG9pbnRPcHRpb24gPSB7XHJcbiAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICBwaXhlbFNpemU6IDEwLFxyXG4gICAgICAgIGNvbG9yOiBDZXNpdW0uQ29sb3IuR1JFRU4sXHJcbiAgICAgICAgb3V0bGluZUNvbG9yOiBDZXNpdW0uQ29sb3IuU0tZQkxVRSxcclxuICAgICAgICBvdXRsaW5lV2lkdGg6IDMsXHJcbiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInByb2ZpbGUtZWNoYXJ0c1wiKVswXTtcclxuICAgICAgdGhhdC5lY2hhcnRzT2JqZWN0ID0gZWNoYXJ0cy5pbml0KGVsZSk7XHJcbiAgICAgIG9wdGlvbiA9IHtcclxuICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICB0cmlnZ2VyOiBcImF4aXNcIixcclxuICAgICAgICAgIHRleHRTdHlsZToge1xyXG4gICAgICAgICAgICBhbGlnbjogXCJsZWZ0XCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZm9ybWF0dGVyKHBhcmFtcykge1xyXG4gICAgICAgICAgICBjb25zdCB4eSA9IGNvb3Jkc1twYXJhbXNbMF0uZGF0YUluZGV4XTtcclxuICAgICAgICAgICAgY29uc3QgdGlwRGF0YSA9IHBhcmFtc1swXVtcImRhdGFcIl07XHJcbiAgICAgICAgICAgIGlmICghdGhhdC50aXBFbnRpdHkpIHtcclxuICAgICAgICAgICAgICB0aGF0LnRpcEVudGl0eSA9IHRoYXQuc2RrLnZpZXdlci5lbnRpdGllcy5hZGQoe1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgICAgICB4eVswXSxcclxuICAgICAgICAgICAgICAgICAgeHlbMV0sXHJcbiAgICAgICAgICAgICAgICAgIE51bWJlcih0aXBEYXRhWzFdKVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHBvaW50OiBwb2ludE9wdGlvbixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGF0LnRpcEVudGl0eS5wb3NpdGlvbiA9IENlc2l1bS5DYXJ0ZXNpYW4zLmZyb21EZWdyZWVzKFxyXG4gICAgICAgICAgICAgICAgeHlbMF0sXHJcbiAgICAgICAgICAgICAgICB4eVsxXSxcclxuICAgICAgICAgICAgICAgIE51bWJlcih0aXBEYXRhWzFdKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICBcIui3neemu++8mlwiICtcclxuICAgICAgICAgICAgICB0aXBEYXRhWzBdICtcclxuICAgICAgICAgICAgICBcIm08YnI+XCIgK1xyXG4gICAgICAgICAgICAgIFwi6auY5bqm77yaXCIgK1xyXG4gICAgICAgICAgICAgIHRpcERhdGFbMV0gK1xyXG4gICAgICAgICAgICAgIFwibTxicj5cIiArXHJcbiAgICAgICAgICAgICAgXCLlnZDmoIfvvJpcIiArXHJcbiAgICAgICAgICAgICAgeHlbMF0udG9GaXhlZCg1KSArXHJcbiAgICAgICAgICAgICAgXCLvvIxcIiArXHJcbiAgICAgICAgICAgICAgeHlbMV0udG9GaXhlZCg1KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdyaWQ6IHtcclxuICAgICAgICAgIHRvcDogNDAsXHJcbiAgICAgICAgICBib3R0b206IDIwLFxyXG4gICAgICAgICAgbGVmdDogNTUsXHJcbiAgICAgICAgICByaWdodDogMzBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbGN1bGFibGU6IHRydWUsXHJcbiAgICAgICAgeEF4aXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgICBtYXg6IHhBaXhNYXgsXHJcbiAgICAgICAgICAgIHNjYWxlOiB0cnVlLFxyXG4gICAgICAgICAgICBheGlzTGFiZWw6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGF4aXNMaW5lOiB7XHJcbiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjZmZmZmZmXCJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICB5QXhpczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBcInZhbHVlXCIsXHJcbiAgICAgICAgICAgIHNjYWxlOiB0cnVlLFxyXG4gICAgICAgICAgICBheGlzTGFiZWw6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGF4aXNMaW5lOiB7XHJcbiAgICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjZmZmZmZmXCJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBzZXJpZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJQcm9maWxlTGluZVwiLFxyXG4gICAgICAgICAgICB0eXBlOiBcImxpbmVcIixcclxuICAgICAgICAgICAgZGF0YTogZGF0YXMsXHJcbiAgICAgICAgICAgIHNtb290aDogdHJ1ZSxcclxuICAgICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgbm9ybWFsOiB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMzlGREExXCIsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbGluZVN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgbm9ybWFsOiB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwibGluZWFyXCIsXHJcbiAgICAgICAgICAgICAgICAgIHg6IDAsXHJcbiAgICAgICAgICAgICAgICAgIHk6IDAsXHJcbiAgICAgICAgICAgICAgICAgIHgyOiAxLFxyXG4gICAgICAgICAgICAgICAgICB5MjogMCxcclxuICAgICAgICAgICAgICAgICAgY29sb3JTdG9wczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoODUsMjU0LDEzOSwxKVwiLCAvLyAwJSDlpITnmoTpopzoibJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMC41LFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicmdiYSg3LDI1MiwyMDIsMSlcIiwgLy8gMTAwJSDlpITnmoTpopzoibJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMTQsMjQ1LDIxMCwxKVwiLCAvLyAxMDAlIOWkhOeahOminOiJslxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgIGdsb2JhbENvb3JkOiBmYWxzZSwgLy8g57y655yB5Li6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFyZWFTdHlsZToge1xyXG4gICAgICAgICAgICAgIG5vcm1hbDoge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IG5ldyBlY2hhcnRzLmdyYXBoaWMuTGluZWFyR3JhZGllbnQoXHJcbiAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgIDEsXHJcbiAgICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDEwMiwxNTMsMjU1LDEpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAuOCxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMTAyLDE1MywyNTUsMC4wOClcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoOSwxNzMsMjA4LDAuMTUpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcjogXCJyZ2JhKDE0LDI0NSwyMTAsMSlcIiwgLy/pmLTlvbHpopzoibJcclxuICAgICAgICAgICAgICAgIHNoYWRvd0JsdXI6IDIwLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1hcmtQb2ludDoge1xyXG4gICAgICAgICAgICAgIGRhdGE6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJtYXhcIixcclxuICAgICAgICAgICAgICAgICAgbmFtZTogXCLmnIDpq5jngrlcIixcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIm1pblwiLFxyXG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIuacgOS9jueCuVwiLFxyXG4gICAgICAgICAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBlbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwicHJvZmlsZS1lY2hhcnRzXCIpWzBdO1xyXG4gICAgICB0aGF0LmVjaGFydHNPYmplY3QgPSBlY2hhcnRzLmluaXQoZWxlKTtcclxuICAgICAgb3B0aW9uID0ge1xyXG4gICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgIHRyaWdnZXI6IFwiYXhpc1wiLFxyXG4gICAgICAgICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgICAgICAgIGFsaWduOiBcImxlZnRcIixcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGdyaWQ6IHtcclxuICAgICAgICAgIHRvcDogNDAsXHJcbiAgICAgICAgICBib3R0b206IDIwLFxyXG4gICAgICAgICAgbGVmdDogNTUsXHJcbiAgICAgICAgICByaWdodDogMzBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbGN1bGFibGU6IHRydWUsXHJcbiAgICAgICAgeEF4aXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgICBzY2FsZTogdHJ1ZSxcclxuICAgICAgICAgICAgYXhpc0xhYmVsOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjZmZmZmZmJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBheGlzTGluZToge1xyXG4gICAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiI2ZmZmZmZlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgeUF4aXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgICBzY2FsZTogdHJ1ZSxcclxuICAgICAgICAgICAgYXhpc0xhYmVsOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjZmZmZmZmJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBheGlzTGluZToge1xyXG4gICAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiI2ZmZmZmZlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgc2VyaWVzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiUHJvZmlsZUxpbmVcIixcclxuICAgICAgICAgICAgdHlwZTogXCJsaW5lXCIsXHJcbiAgICAgICAgICAgIGRhdGE6IFtdLFxyXG4gICAgICAgICAgICBzbW9vdGg6IHRydWUsXHJcbiAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgIG5vcm1hbDoge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzM5RkRBMVwiLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxpbmVTdHlsZToge1xyXG4gICAgICAgICAgICAgIG5vcm1hbDoge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDMsXHJcbiAgICAgICAgICAgICAgICBjb2xvcjoge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcImxpbmVhclwiLFxyXG4gICAgICAgICAgICAgICAgICB4OiAwLFxyXG4gICAgICAgICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICAgICAgICB4MjogMSxcclxuICAgICAgICAgICAgICAgICAgeTI6IDAsXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yU3RvcHM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDg1LDI1NCwxMzksMSlcIiwgLy8gMCUg5aSE55qE6aKc6ImyXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAuNSxcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoNywyNTIsMjAyLDEpXCIsIC8vIDEwMCUg5aSE55qE6aKc6ImyXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDE0LDI0NSwyMTAsMSlcIiwgLy8gMTAwJSDlpITnmoTpopzoibJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICBnbG9iYWxDb29yZDogZmFsc2UsIC8vIOe8uuecgeS4uiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhcmVhU3R5bGU6IHtcclxuICAgICAgICAgICAgICBub3JtYWw6IHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBuZXcgZWNoYXJ0cy5ncmFwaGljLkxpbmVhckdyYWRpZW50KFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAwLFxyXG4gICAgICAgICAgICAgICAgICAxLFxyXG4gICAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwicmdiYSgxMDIsMTUzLDI1NSwxKVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDEwMiwxNTMsMjU1LDAuMDgpXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDksMTczLDIwOCwwLjE1KVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgc2hhZG93Q29sb3I6IFwicmdiYSgxNCwyNDUsMjEwLDEpXCIsIC8v6Zi05b2x6aKc6ImyXHJcbiAgICAgICAgICAgICAgICBzaGFkb3dCbHVyOiAyMCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtYXJrUG9pbnQ6IHtcclxuICAgICAgICAgICAgICBkYXRhOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwibWF4XCIsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwi5pyA6auY54K5XCIsXHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmZmZmJyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJtaW5cIixcclxuICAgICAgICAgICAgICAgICAgbmFtZTogXCLmnIDkvY7ngrlcIixcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZmZmZmYnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5lY2hhcnRzT2JqZWN0LnNldE9wdGlvbihvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgY2xlYW4oKSB7XHJcbiAgICB0aGlzLmVuZCgpXHJcbiAgICB0aGlzLl9jdXJyZW50SWQgPSBudWxsXHJcbiAgICB0aGlzLmVudGl0eUhhc0NyZWF0ZWQgPSBmYWxzZVxyXG4gICAgdGhpcy5wb2x5bGluZSAmJiB0aGlzLnZpZXdlci5lbnRpdGllcy5yZW1vdmUodGhpcy5wb2x5bGluZSlcclxuICAgIHRoaXMudGlwRW50aXR5ICYmIHRoaXMudmlld2VyLmVudGl0aWVzLnJlbW92ZSh0aGlzLnRpcEVudGl0eSlcclxuICAgIHRoaXMucG9seWxpbmUgPSBudWxsXHJcbiAgICB0aGlzLnRpcEVudGl0eSA9IG51bGxcclxuICB9XHJcblxyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNsZWFuKClcclxuICAgIGlmICh0aGlzLl9EaWFsb2dPYmplY3QgJiYgdGhpcy5fRGlhbG9nT2JqZWN0LmNsb3NlKSB7XHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdC5jbG9zZSgpXHJcbiAgICAgIHRoaXMuX0RpYWxvZ09iamVjdCA9IG51bGxcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIGNvbnN0IFByb2ZpbGUgPSBmdW5jdGlvbiAodmlld2VyLCBjYWxsYmFjaykge1xyXG4vLyAgIGlmICghdmlld2VyKSB0aHJvdyBuZXcgRXJyb3IoXCJubyB2aWV3ZXIgb2JqZWN0IVwiKTtcclxuLy8gICBpZiAod2luZG93LnByb2ZpbGVFbnRpdGllcyAmJiB3aW5kb3cucHJvZmlsZUVudGl0aWVzLmxlbmd0aCA+IDApIHtcclxuLy8gICAgIHdpbmRvdy5wcm9maWxlRW50aXRpZXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4vLyAgICAgICB3aW5kb3cudmlld2VyLmVudGl0aWVzLnJlbW92ZShlbGVtZW50KTtcclxuLy8gICAgIH0pO1xyXG4vLyAgIH1cclxuLy8gICB3aW5kb3cucHJvZmlsZUVudGl0aWVzID0gW107XHJcbi8vICAgQ3JlYXRlUG9seWxpbmUoXHJcbi8vICAgICB2aWV3ZXIsXHJcbi8vICAgICB3aW5kb3cucHJvZmlsZUVudGl0aWVzLFxyXG4vLyAgICAgeyBjb2xvcjogQ2VzaXVtLkNvbG9yLlJFRCwgd2lkdGg6IDIgfSxcclxuLy8gICAgIGZ1bmN0aW9uIChlKSB7XHJcbi8vICAgICAgIGUucG9seWxpbmUuY2xhbXBUb0dyb3VuZCA9IHRydWU7XHJcbi8vICAgICAgIGNvbnNvbGUubG9nKGUucG90dGluZ1BvaW50KTtcclxuLy8gICAgICAgbGV0IHBvaW50cyA9IGludGVyUG9pbnRzKHZpZXdlciwgZS5wb3R0aW5nUG9pbnQsIFtlXSk7XHJcbi8vICAgICAgIGNvbnNvbGUubG9nKHBvaW50cyk7XHJcbi8vICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gXCJmdW5jdGlvblwiKSBjYWxsYmFjayhwb2ludHMpO1xyXG4vLyAgICAgfVxyXG4vLyAgICk7XHJcbi8vIH07XHJcbi8vIC8qKlxyXG4vLyAgKiDnur/mrrXmj5LlgLzngrlcclxuLy8gICogQHBhcmFtIHsqfSB2aWV3ZXJcclxuLy8gICogQHBhcmFtIHsqfSBwb3NpdGlvbnMg57q/5q616IqC54K56ZuG5ZCIXHJcbi8vICAqIEBwYXJhbSB7Kn0gb2JqZWN0c1RvRXhjbHVkZSDpq5jluqbph4fpm4bml7bmjpLpmaTnmoTlr7nosaHpm4blkIhcclxuLy8gICogQHJldHVybnMg57uP57qs5bqm54K56ZuG5ZCI77yM5YyF5ZCr6Led56a75YC8XHJcbi8vICAqL1xyXG4vLyBmdW5jdGlvbiBpbnRlclBvaW50cyh2aWV3ZXIsIHBvc2l0aW9ucywgb2JqZWN0c1RvRXhjbHVkZSkge1xyXG4vLyAgIGxldCBwb3NpdGlvbnNDYXJ0b2dyYXBoaWMgPSBbXTtcclxuLy8gICBsZXQgdGVycmFpblNhbXBsZVBvc2l0aW9ucyA9IFtdO1xyXG4vLyAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwb3NpdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbi8vICAgICBjb25zdCBlbGVtZW50ID0gcG9zaXRpb25zW2luZGV4XTtcclxuLy8gICAgIGxldCBlbGxpcHNvaWQgPSB2aWV3ZXIuc2NlbmUuZ2xvYmUuZWxsaXBzb2lkO1xyXG4vLyAgICAgbGV0IGNhcnRvZ3JhcGhpYyA9IGVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlbGVtZW50KTtcclxuLy8gICAgIHBvc2l0aW9uc0NhcnRvZ3JhcGhpYy5wdXNoKGNhcnRvZ3JhcGhpYyk7XHJcbi8vICAgfVxyXG4vLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zQ2FydG9ncmFwaGljLmxlbmd0aDsgaSsrKSB7XHJcbi8vICAgICBjb25zdCBtX0NhcnRvZ3JhcGhpYzAgPSBwb3NpdGlvbnNDYXJ0b2dyYXBoaWNbaV07XHJcbi8vICAgICBjb25zdCBtX0NhcnRvZ3JhcGhpYzEgPSBwb3NpdGlvbnNDYXJ0b2dyYXBoaWNbaSArIDFdO1xyXG4vLyAgICAgaWYgKG1fQ2FydG9ncmFwaGljMSkge1xyXG4vLyAgICAgICBsZXQgYSA9XHJcbi8vICAgICAgICAgTWF0aC5hYnMobV9DYXJ0b2dyYXBoaWMwLmxvbmdpdHVkZSAtIG1fQ2FydG9ncmFwaGljMS5sb25naXR1ZGUpICpcclxuLy8gICAgICAgICAxMDAwMDAwMDtcclxuLy8gICAgICAgbGV0IGIgPVxyXG4vLyAgICAgICAgIE1hdGguYWJzKG1fQ2FydG9ncmFwaGljMC5sYXRpdHVkZSAtIG1fQ2FydG9ncmFwaGljMS5sYXRpdHVkZSkgKlxyXG4vLyAgICAgICAgIDEwMDAwMDAwO1xyXG4vLyAgICAgICAvL+etiei3nemHh+agt1xyXG4vLyAgICAgICBpZiAoYSA+IGIpIGIgPSBhO1xyXG4vLyAgICAgICBsZXQgbGVuZ3RoID0gcGFyc2VJbnQoYiAvIDIpO1xyXG4vLyAgICAgICBpZiAobGVuZ3RoID4gMTAwMCkgbGVuZ3RoID0gMTAwMDtcclxuLy8gICAgICAgaWYgKGxlbmd0aCA8IDIpIGxlbmd0aCA9IDI7XHJcbi8vICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcclxuLy8gICAgICAgICB0ZXJyYWluU2FtcGxlUG9zaXRpb25zLnB1c2goXHJcbi8vICAgICAgICAgICBuZXcgQ2VzaXVtLkNhcnRvZ3JhcGhpYyhcclxuLy8gICAgICAgICAgICAgQ2VzaXVtLk1hdGgubGVycChcclxuLy8gICAgICAgICAgICAgICBtX0NhcnRvZ3JhcGhpYzAubG9uZ2l0dWRlLFxyXG4vLyAgICAgICAgICAgICAgIG1fQ2FydG9ncmFwaGljMS5sb25naXR1ZGUsXHJcbi8vICAgICAgICAgICAgICAgaiAvIChsZW5ndGggLSAxKVxyXG4vLyAgICAgICAgICAgICApLFxyXG4vLyAgICAgICAgICAgICBDZXNpdW0uTWF0aC5sZXJwKFxyXG4vLyAgICAgICAgICAgICAgIG1fQ2FydG9ncmFwaGljMC5sYXRpdHVkZSxcclxuLy8gICAgICAgICAgICAgICBtX0NhcnRvZ3JhcGhpYzEubGF0aXR1ZGUsXHJcbi8vICAgICAgICAgICAgICAgaiAvIChsZW5ndGggLSAxKVxyXG4vLyAgICAgICAgICAgICApXHJcbi8vICAgICAgICAgICApXHJcbi8vICAgICAgICAgKTtcclxuLy8gICAgICAgfVxyXG4vLyAgICAgICB0ZXJyYWluU2FtcGxlUG9zaXRpb25zLnBvcCgpO1xyXG4vLyAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgdGVycmFpblNhbXBsZVBvc2l0aW9ucy5wdXNoKG1fQ2FydG9ncmFwaGljMCk7XHJcbi8vICAgICB9XHJcbi8vICAgfVxyXG4vLyAgIGxldCBwb3NpdGlvbnNfSW50ZXIgPSBbXTtcclxuLy8gICBsZXQgZGlzdGFuY2UgPSAwO1xyXG4vLyAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGVycmFpblNhbXBsZVBvc2l0aW9ucy5sZW5ndGg7IG4rKykge1xyXG4vLyAgICAgLy/lnLDnkIblnZDmoIfvvIjlvKfluqbvvInovaznu4/nuqzluqblnZDmoIdcclxuLy8gICAgIGxldCBjdXJDYXJ0b2dyYXBoaWMgPSB0ZXJyYWluU2FtcGxlUG9zaXRpb25zW25dO1xyXG4vLyAgICAgbGV0IGhlaWdodCA9IHZpZXdlci5zY2VuZS5zYW1wbGVIZWlnaHQoY3VyQ2FydG9ncmFwaGljLCBvYmplY3RzVG9FeGNsdWRlKTtcclxuLy8gICAgIGNvbnN0IGxvbiA9IChjdXJDYXJ0b2dyYXBoaWMubG9uZ2l0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICBjb25zdCBsYXQgPSAoY3VyQ2FydG9ncmFwaGljLmxhdGl0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICBsZXQgcG9pbnQgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsb24sIGxhdCwgaGVpZ2h0KTtcclxuLy8gICAgIGxldCBwcmVDYXJ0b2dyYXBoaWMgPSB0ZXJyYWluU2FtcGxlUG9zaXRpb25zW24gLSAxXTtcclxuLy8gICAgIGlmIChwcmVDYXJ0b2dyYXBoaWMpIHtcclxuLy8gICAgICAgY29uc3QgbG9uMSA9IChwcmVDYXJ0b2dyYXBoaWMubG9uZ2l0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICAgIGNvbnN0IGxhdDEgPSAocHJlQ2FydG9ncmFwaGljLmxhdGl0dWRlIC8gTWF0aC5QSSkgKiAxODA7XHJcbi8vICAgICAgIGxldCBwb2ludDEgPSBDZXNpdW0uQ2FydGVzaWFuMy5mcm9tRGVncmVlcyhsb24xLCBsYXQxLCBoZWlnaHQpO1xyXG4vLyAgICAgICBsZXQgY3VyRGlzID0gQ2VzaXVtLkNhcnRlc2lhbjMuZGlzdGFuY2UocG9pbnQxLCBwb2ludCk7XHJcbi8vICAgICAgIGRpc3RhbmNlICs9IGN1ckRpcztcclxuLy8gICAgIH1cclxuLy8gICAgIHBvc2l0aW9uc19JbnRlci5wdXNoKHtcclxuLy8gICAgICAgcG9zaXRpb246IHsgbG9uOiBsb24sIGxhdDogbGF0LCBoZWlnaHQ6IGhlaWdodCB9LFxyXG4vLyAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXHJcbi8vICAgICB9KTtcclxuLy8gICB9XHJcbi8vICAgcmV0dXJuIHBvc2l0aW9uc19JbnRlcjtcclxuLy8gfVxyXG5leHBvcnQgZGVmYXVsdCBQcm9maWxlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXFCQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQXlXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBMWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFWQTtBQUFBO0FBQUE7QUFBQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbERBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFOQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2QkE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/Obj/Analysis/Profile/index.js\n");
-
-/***/ }),
-
-/***/ "./src/Obj/Analysis/Section/index.js":
-/*!*******************************************!*\
- !*** ./src/Obj/Analysis/Section/index.js ***!
- \*******************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\n/* harmony import */ var _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ \"./node_modules/@babel/runtime/helpers/getPrototypeOf.js\");\n/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _Tools__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../Tools */ \"./src/Tools/index.js\");\n\n\n\n\n\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _callSuper(t, o, e) { return o = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(o), _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(t).constructor) : o.apply(t, e)); }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\n\nvar Section = /*#__PURE__*/function (_Tools) {\n /**\r\n * @constructor 剖切\r\n * @param sdk\r\n * @param tiles3d {object} 3dtiles对象\r\n * @param {Array.