1/******/ (function(modules) { // webpackBootstrap 2/******/ // The module cache 3/******/ var installedModules = {}; 4/******/ 5/******/ // The require function 6/******/ function __webpack_require__(moduleId) { 7/******/ 8/******/ // Check if module is in cache 9/******/ if(installedModules[moduleId]) { 10/******/ return installedModules[moduleId].exports; 11/******/ } 12/******/ // Create a new module (and put it into the cache) 13/******/ var module = installedModules[moduleId] = { 14/******/ i: moduleId, 15/******/ l: false, 16/******/ exports: {} 17/******/ }; 18/******/ 19/******/ // Execute the module function 20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21/******/ 22/******/ // Flag the module as loaded 23/******/ module.l = true; 24/******/ 25/******/ // Return the exports of the module 26/******/ return module.exports; 27/******/ } 28/******/ 29/******/ 30/******/ // expose the modules object (__webpack_modules__) 31/******/ __webpack_require__.m = modules; 32/******/ 33/******/ // expose the module cache 34/******/ __webpack_require__.c = installedModules; 35/******/ 36/******/ // define getter function for harmony exports 37/******/ __webpack_require__.d = function(exports, name, getter) { 38/******/ if(!__webpack_require__.o(exports, name)) { 39/******/ Object.defineProperty(exports, name, { 40/******/ configurable: false, 41/******/ enumerable: true, 42/******/ get: getter 43/******/ }); 44/******/ } 45/******/ }; 46/******/ 47/******/ // getDefaultExport function for compatibility with non-harmony modules 48/******/ __webpack_require__.n = function(module) { 49/******/ var getter = module && module.__esModule ? 50/******/ function getDefault() { return module['default']; } : 51/******/ function getModuleExports() { return module; }; 52/******/ __webpack_require__.d(getter, 'a', getter); 53/******/ return getter; 54/******/ }; 55/******/ 56/******/ // Object.prototype.hasOwnProperty.call 57/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 58/******/ 59/******/ // __webpack_public_path__ 60/******/ __webpack_require__.p = "/"; 61/******/ 62/******/ // Load entry module and return exports 63/******/ return __webpack_require__(__webpack_require__.s = 0); 64/******/ }) 65/************************************************************************/ 66/******/ ([ 67/* 0 */ 68/***/ (function(module, exports, __webpack_require__) { 69 70__webpack_require__(1); 71__webpack_require__(6); 72__webpack_require__(7); 73__webpack_require__(8); 74module.exports = __webpack_require__(9); 75 76 77/***/ }), 78/* 1 */ 79/***/ (function(module, __webpack_exports__, __webpack_require__) { 80 81"use strict"; 82Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); 83/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_js_cookie__ = __webpack_require__(2); 84/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_js_cookie___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_js_cookie__); 85/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_scroll_hint__ = __webpack_require__(3); 86/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_scroll_hint___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_scroll_hint__); 87//import $ from "jquery" 88 89//import 'lity' 90 91 92//document.oncontextmenu = function () {return false;} 93var widthOrg = $(window).width(); 94$(function () { 95 //$("img").wrap('<div class="img_wrap"></div>'); 96 /* ******************** 97 * æ¤ç´¢ãã¿ã³æ¼ä¸ã§æ¤ç´¢çªã®è¡¨ç¤º 98 ******************** */ 99 var loupe = $(".loupe"); 100 loupe.on("click", function () { 101 $(".show_search").slideToggle(200); 102 }); 103 104 /* ******************** 105 * ã°ã¤ãã¿ã³æ¼ä¸ã§æ¤ç´¢çªãé表示 106 ******************** */ 107 var search_close = $(".search_close"); 108 search_close.on("click", function () { 109 $(".show_search").slideUp(200); 110 }); 111 112 $(window).resize(function () { 113 $(".show_search").hide(); 114 }); 115 116 /* ******************** 117 * ãã³ãã¼ã¬ã¼ãã¿ã³æ¼ä¸ã§ã¡ãã¥ã¼ã表示 118 ******************** */ 119 //SPæã®ãã³ãã¼ã¬ã¼ãã¿ã³ 120 var sp_menu = $(".sp_menu"); 121 var sp_nav = $(".sp_nav"); 122 sp_menu.on("click", function () { 123 sp_nav.fadeIn(250); 124 }); 125 126 //ããã²ã¼ã·ã§ã³ãéãããã¿ã³ 127 var close_btn = $(".close_btn"); 128 close_btn.on("click", function () { 129 sp_nav.fadeOut(200); 130 }); 131
132 //ãªãµã¤ãºãããæã®å¦ç 133 //SPæã«ã¡ãã¥ã¼ãé表示ã«ãã¦ãé¾å¤ãä¸åãã¨ã¡ãã¥ã¼ã表示ããã 134 $(window).resize(function () { 135 var w = $(window).width(); 136 if (widthOrg != w) { 137 widthOrg = w; 138 if (w <= 840) { 139 sp_nav.hide(); 140 } else { 141 sp_nav.show(); 142 } 143 } 144 }); 145 146 /* ******************** 147 * 第2é層ãããå ´åã¯ã¢ã³ã¼ãã£ãªã³ 148 ******************** */ 149 var has_menu = $(".has_menu"); 150 has_menu.on("click", function () { 151 $(this).children("ul").slideToggle(300); 152 }); 153 154 /* ******************** 155 * ã¹ã ã¼ã¹ã¹ã¯ãã¼ã« 156 ******************** */ 157 $(document).on("click", 'a[href^="#"]:not([data-lity])', function () { 158 var headerHeight = 0; 159 if ($(window).width() <= 840) { 160 headerHeight = 93; 161 } 162 //console.log(headerHeight); 163 var speed = 500; 164 var href = $(this).attr("href"); 165 var target = $(href == "#" || href == "" ? 'html' : href); 166 var position = target.offset().top - headerHeight; 167 $("html, body").animate({ scrollTop: position }, speed, "swing"); 168 return false; 169 }); 170 // å¤é¨ããã®ãã¼ã¸å ãªã³ã¯ 171 var urlHash = location.hash; // ããã·ã¥å¤ãããã°ãã¼ã¸å ã¹ã¯ãã¼ã« 172 if (urlHash) { 173 // å¤é¨ãªã³ã¯ããã®ã¯ãªãã¯æ 174 $('body,html').stop().scrollTop(0); // ã¹ã¯ãã¼ã«ã0ã«æ»ã 175 setTimeout(function () { 176 // ãã¼ãæã®å¦çãå¾ ã¡ãæéå·®ã§ã¹ã¯ãã¼ã«å®è¡ 177 var target = $(urlHash); 178 var headerHeight = 0; 179 if ($(window).width() <= 840) { 180 headerHeight = 93; 181 } 182 var speed = 500; 183 var position = target.offset().top - headerHeight; 184 $("html, body").animate({ scrollTop: position }, speed, "swing"); 185 }, 1000); 186 } 187 188 /* ******************** 189 * 翻訳 190 ******************** */ 191 var lang_select = $(".lang-select"); 192 lang_select.click(function () { 193 var lang = $(this).attr('data-lang'); 194 var anchor = $(this).attr('data-anchor'); 195 var url = location.protocol + "//" + location.host + location.pathname + '#' + anchor; 196 window.location = url; 197 location.reload(); 198 }); 199 /* ******************** 200 * 翻訳ãªã»ãã 201 ******************** */ 202 var lang_reset = $(".lang-reset"); 203 lang_reset.click(function () { 204 __WEBPACK_IMPORTED_MODULE_0_js_cookie___default.a.remove("googtrans"); 205 __WEBPACK_IMPORTED_MODULE_0_js_cookie___default.a.remove('googtrans', { domain: '.concept-h.asia' }); 206 var url = location.protocol + "//" + location.host + location.pathname + location.search; 207 window.location.href = url; 208 }); 209 /* ******************** 210 * 横ã¹ã¯ãã¼ã« 211 ******************** */ 212 new __WEBPACK_IMPORTED_MODULE_1_scroll_hint___default.a('.js-scrollable'); 213 214 /* ******************** 215 * ç·æ¥æã®è¡¨ç¤º 216 ******************** */ 217 $('.emergency_contents').infiniteslide({ 218 'speed': 80, 219 'direction': 'left', 220 'pauseonhover': true, 221 'responsive': true, 222 'clone': 1 223 }); 224 225 /* ******************** 226 * 翻訳 227 * ã³ã³ãããã¯ã¹ 228 ******************** */ 229 $('.languageSelect').clone().appendTo('.pcLang'); 230 var lang_func = $(".languageSelect .langBtn"); 231 lang_func.on("click", function () { 232 $(event.currentTarget).next('.langList').toggleClass('langShow'); 233 }); 234 $(document).on('click', function () { 235 $('.langList').removeClass('langShow'); 236 }); 237 $(document).on('click', '.languageSelect', function (e) { 238 e.stopPropagation(); 239 }); 240 241 /* ******************** 242 * ã¹ããSNSã¢ã¤ã³ã³ 243 * ã¹ã¯ãã¼ã«åæ¢æ 244 ******************** */ 245 var scrollTimeoutId; 246 window.addEventListener("scroll", function () { 247 $('body').addClass('scrollNow'); 248 clearTimeout(scrollTimeoutId); 249 scrollTimeoutId = setTimeout(function () { 250 $('body').removeClass('scrollNow'); 251 }, 300); 252 }); 253}); 254 255/***/ }), 256/* 2 */ 257/***/ (function(module, exports, __webpack_require__) { 258 259var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 260 * JavaScript Cookie v2.2.1 261 * https://github.com/js-cookie/js-cookie 262 * 263 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack 264 * Released under the MIT license 265 */ 266;(function (factory) { 267 var registeredInModuleLoader; 268 if (true) { 269 !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 270 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 271 (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : 272 __WEBPACK_AMD_DEFINE_FACTORY__),
vendor: 5,638 bytes, lines 273-479
273 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 274 registeredInModuleLoader = true; 275 } 276 if (true) { 277 module.exports = factory(); 278 registeredInModuleLoader = true; 279 } 280 if (!registeredInModuleLoader) { 281 var OldCookies = window.Cookies; 282 var api = window.Cookies = factory(); 283 api.noConflict = function () { 284 window.Cookies = OldCookies; 285 return api; 286 }; 287 } 288}(function () { 289 function extend () { 290 var i = 0; 291 var result = {}; 292 for (; i < arguments.length; i++) { 293 var attributes = arguments[ i ]; 294 for (var key in attributes) { 295 result[key] = attributes[key]; 296 } 297 } 298 return result; 299 } 300 301 function decode (s) { 302 return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent); 303 } 304 305 function init (converter) { 306 function api() {} 307 308 function set (key, value, attributes) { 309 if (typeof document === 'undefined') { 310 return; 311 } 312 313 attributes = extend({ 314 path: '/' 315 }, api.defaults, attributes); 316 317 if (typeof attributes.expires === 'number') { 318 attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5); 319 } 320 321 // We're using "expires" because "max-age" is not supported by IE 322 attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; 323 324 try { 325 var result = JSON.stringify(value); 326 if (/^[\{\[]/.test(result)) { 327 value = result; 328 } 329 } catch (e) {} 330 331 value = converter.write ? 332 converter.write(value, key) : 333 encodeURIComponent(String(value)) 334 .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); 335 336 key = encodeURIComponent(String(key)) 337 .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent) 338 .replace(/[\(\)]/g, escape); 339 340 var stringifiedAttributes = ''; 341 for (var attributeName in attributes) { 342 if (!attributes[attributeName]) { 343 continue; 344 } 345 stringifiedAttributes += '; ' + attributeName; 346 if (attributes[attributeName] === true) { 347 continue; 348 } 349 350 // Considers RFC 6265 section 5.2: 351 // ... 352 // 3. If the remaining unparsed-attributes contains a %x3B (";") 353 // character: 354 // Consume the characters of the unparsed-attributes up to, 355 // not including, the first %x3B (";") character. 356 // ... 357 stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; 358 } 359 360 return (document.cookie = key + '=' + value + stringifiedAttributes); 361 } 362 363 function get (key, json) { 364 if (typeof document === 'undefined') { 365 return; 366 } 367 368 var jar = {}; 369 // To prevent the for loop in the first place assign an empty array 370 // in case there are no cookies at all. 371 var cookies = document.cookie ? document.cookie.split('; ') : []; 372 var i = 0; 373 374 for (; i < cookies.length; i++) { 375 var parts = cookies[i].split('='); 376 var cookie = parts.slice(1).join('='); 377 378 if (!json && cookie.charAt(0) === '"') { 379 cookie = cookie.slice(1, -1); 380 } 381 382 try { 383 var name = decode(parts[0]); 384 cookie = (converter.read || converter)(cookie, name) || 385 decode(cookie); 386 387 if (json) { 388 try { 389 cookie = JSON.parse(cookie); 390 } catch (e) {} 391 } 392 393 jar[name] = cookie; 394 395 if (key === name) { 396 break; 397 } 398 } catch (e) {} 399 } 400 401 return key ? jar[key] : jar; 402 } 403 404 api.set = set; 405 api.get = function (key) { 406 return get(key, false /* read as raw */); 407 }; 408 api.getJSON = function (key) { 409 return get(key, true /* read as json */); 410 }; 411 api.remove = function (key, attributes) { 412 set(key, '', extend(attributes, { 413 expires: -1 414 })); 415 }; 416 417 api.defaults = {}; 418 419 api.withConverter = init; 420 421 return api; 422 } 423 424 return init(function () {}); 425})); 426 427 428/***/ }), 429/* 3 */ 430/***/ (function(module, exports, __webpack_require__) { 431 432"use strict"; 433 434 435Object.defineProperty(exports, "__esModule", { 436 value: true 437}); 438 439var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 440 441var _es6ObjectAssign = __webpack_require__(4); 442 443var _util = __webpack_require__(5); 444 445function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 446 447var defaults = { 448 suggestClass: 'is-active', 449 scrollableClass: 'is-scrollable', 450 scrollableRightClass: 'is-right-scrollable', 451 scrollableLeftClass: 'is-left-scrollable', 452 scrollHintClass: 'scroll-hint', 453 scrollHintIconClass: 'scroll-hint-icon', 454 scrollHintIconAppendClass: '', // 'scroll-hint-icon-white' 455 scrollHintIconWrapClass: 'scroll-hint-icon-wrap', 456 scrollHintText: 'scroll-hint-text', 457 scrollHintBorderWidth: 10, 458 remainingTime: -1, 459 enableOverflowScrolling: true, 460 applyToParents: false, 461 suggestiveShadow: false, 462 offset: 0, 463 i18n: { 464 scrollable: 'scrollable' 465 } 466}; 467 468var ScrollHint = function () { 469 function ScrollHint(ele, option) { 470 var _this = this; 471 472 _classCallCheck(this, ScrollHint); 473 474 this.opt = (0, _es6ObjectAssign.assign)({}, defaults, option); 475 this.items = []; 476 var elements = typeof ele === 'string' ? document.querySelectorAll(ele) : ele; 477 var applyToParents = this.opt.applyToParents; 478 479 [].forEach.call(elements, function (element) {
480 if (applyToParents) { 481 element = element.parentElement; 482 } 483 element.style.position = 'relative'; 484 element.style.overflow = 'auto'; 485 if (_this.opt.enableOverflowScrolling) { 486 if ('overflowScrolling' in element.style) { 487 element.style.overflowScrolling = 'touch'; 488 } else if ('webkitOverflowScrolling' in element.style) { 489 element.style.webkitOverflowScrolling = 'touch'; 490 } 491 } 492 var item = { 493 element: element, 494 scrolledIn: false, 495 interacted: false 496 }; 497 document.addEventListener('scroll', function (e) { 498 if (e.target === element) { 499 item.interacted = true; 500 _this.updateItem(item); 501 } 502 }, true); 503 (0, _util.addClass)(element, _this.opt.scrollHintClass); 504 (0, _util.append)(element, '<div class="' + _this.opt.scrollHintIconWrapClass + '" data-target="scrollable-icon">\n <span class="' + _this.opt.scrollHintIconClass + (_this.opt.scrollHintIconAppendClass ? ' ' + _this.opt.scrollHintIconAppendClass : '') + '">\n <div class="' + _this.opt.scrollHintText + '">' + _this.opt.i18n.scrollable + '</div>\n </span>\n </div>'); 505 _this.items.push(item); 506 }); 507 window.addEventListener('scroll', function () { 508 _this.updateItems(); 509 }); 510 window.addEventListener('resize', function () { 511 _this.updateItems(); 512 }); 513 this.updateItems(); 514 } 515 516 _createClass(ScrollHint, [{ 517 key: 'isScrollable', 518 value: function isScrollable(item) { 519 var offset = this.opt.offset; 520 var element = item.element; 521 var offsetWidth = element.offsetWidth; 522 523 return offsetWidth + offset < element.scrollWidth; 524 } 525 }, { 526 key: 'checkScrollableDir', 527 value: function checkScrollableDir(item) { 528 var _opt = this.opt, 529 scrollHintBorderWidth = _opt.scrollHintBorderWidth, 530 scrollableRightClass = _opt.scrollableRightClass, 531 scrollableLeftClass = _opt.scrollableLeftClass; 532 var element = item.element; 533 534 var child = element.children[0]; 535 var width = child.scrollWidth; 536 var parentWidth = element.offsetWidth; 537 var scrollLeft = element.scrollLeft; 538 if (parentWidth + scrollLeft < width - scrollHintBorderWidth) { 539 (0, _util.addClass)(element, scrollableRightClass); 540 } else { 541 (0, _util.removeClass)(element, scrollableRightClass); 542 } 543 if (parentWidth < width && scrollLeft > scrollHintBorderWidth) { 544 (0, _util.addClass)(element, scrollableLeftClass); 545 } else { 546 (0, _util.removeClass)(element, scrollableLeftClass); 547 } 548 } 549 }, { 550 key: 'needSuggest', 551 value: function needSuggest(item) { 552 var scrolledIn = item.scrolledIn, 553 interacted = item.interacted; 554 555 return !interacted && scrolledIn && this.isScrollable(item); 556 } 557 }, { 558 key: 'updateItems', 559 value: function updateItems() { 560 var _this2 = this; 561 562 [].forEach.call(this.items, function (item) { 563 _this2.updateItem(item); 564 }); 565 } 566 }, { 567 key: 'updateStatus', 568 value: function updateStatus(item) { 569 var _this3 = this; 570 571 var element = item.element, 572 scrolledIn = item.scrolledIn; 573 574 if (scrolledIn) { 575 return; 576 } 577 if ((0, _util.getOffset)(element).top + element.offsetHeight / 2 < (0, _util.getScrollTop)() + window.innerHeight) { 578 item.scrolledIn = true; 579 if (this.opt.remainingTime !== -1) { 580 setTimeout(function () { 581 item.interacted = true; 582 _this3.updateItem(item); 583 }, this.opt.remainingTime); 584 } 585 } 586 } 587 }, { 588 key: 'updateItem', 589 value: function updateItem(item) { 590 var opt = this.opt; 591 var element = item.element; 592 593 var target = element.querySelector('[data-target="scrollable-icon"]'); 594 this.updateStatus(item); 595 if (this.isScrollable(item)) { 596 (0, _util.addClass)(element, opt.scrollableClass); 597 } else { 598 (0, _util.removeClass)(element, opt.scrollableClass); 599 } 600 if (this.needSuggest(item)) { 601 (0, _util.addClass)(target, opt.suggestClass); 602 } else { 603 (0, _util.removeClass)(target, opt.suggestClass); 604 } 605 if (opt.suggestiveShadow) { 606 this.checkScrollableDir(item); 607 } 608 } 609 }]); 610 611 return ScrollHint; 612}(); 613 614exports.default = ScrollHint; 615module.exports = exports['default']; 616 617/***/ }), 618/* 4 */ 619/***/ (function(module, exports, __webpack_require__) { 620 621"use strict"; 622/** 623 * Code refactored from Mozilla Developer Network: 624 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign 625 */ 626 627 628 629function assign(target, firstSource) { 630 if (target === undefined || target === null) { 631 throw new TypeError('Cannot convert first argument to object'); 632 } 633 634 var to = Object(target); 635 for (var i = 1; i < arguments.length; i++) { 636 var nextSource = arguments[i]; 637 if (nextSource === undefined || nextSource === null) { 638 continue; 639 } 640 641 var keysArray = Object.keys(Object(nextSource)); 642 for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { 643 var nextKey = keysArray[nextIndex]; 644 var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 645 if (desc !== undefined && desc.enumerable) { 646 to[nextKey] = nextSource[nextKey]; 647 } 648 } 649 } 650 return to; 651} 652 653function polyfill() { 654 if (!Object.assign) { 655 Object.defineProperty(Object, 'assign', { 656 enumerable: false, 657 configurable: true, 658 writable: true, 659 value: assign 660 }); 661 } 662} 663 664module.exports = { 665 assign: assign, 666 polyfill: polyfill 667}; 668 669 670/***/ }), 671/* 5 */ 672/***/ (function(module, exports, __webpack_require__) { 673 674"use strict"; 675 676 677Object.defineProperty(exports, "__esModule", { 678 value: true 679}); 680var append = exports.append = function append(element, string) { 681 var div = document.createElement('div'); 682 div.innerHTML = string; 683 while (div.children.length > 0) { 684 element.appendChild(div.children[0]); 685 } 686}; 687 688var addClass = exports.addClass = function addClass(element, className) { 689 if (element.classList) { 690 element.classList.add(className); 691 } else { 692 element.className += ' ' + className; 693 } 694}; 695 696var removeClass = exports.removeClass = function removeClass(element, className) { 697 if (element.classList) { 698 element.classList.remove(className); 699 } else { 700 element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); 701 } 702}; 703 704var getScrollTop = exports.getScrollTop = function getScrollTop() { 705 return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 706}; 707 708var getScrollLeft = exports.getScrollLeft = function getScrollLeft() { 709 return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; 710}; 711 712var getOffset = exports.getOffset = function getOffset(el) { 713 var rect = el.getBoundingClientRect(); 714 return { 715 top: rect.top + getScrollTop(), 716 left: rect.left + getScrollLeft() 717 }; 718}; 719 720/***/ }), 721/* 6 */
722/***/ (function(module, exports) { 723 724// removed by extract-text-webpack-plugin 725 726/***/ }), 727/* 7 */ 728/***/ (function(module, exports) { 729 730// removed by extract-text-webpack-plugin 731 732/***/ }), 733/* 8 */ 734/***/ (function(module, exports) { 735 736// removed by extract-text-webpack-plugin 737 738/***/ }), 739/* 9 */ 740/***/ (function(module, exports) { 741 742// removed by extract-text-webpack-plugin 743 744/***/ }) 745/******/ ]); 746//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgMmMyYmY1N2E5YWM4NzBjMGZjYWIiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9qcy9zY3JpcHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2pzLWNvb2tpZS9zcmMvanMuY29va2llLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zY3JvbGwtaGludC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VzNi1vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zY3JvbGwtaGludC9saWIvdXRpbC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL3Njc3Mvc3R5bGUuc2Nzcz80Zjc1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Nzcy9zbGljay5zY3NzP2JhN2MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2Fzc2V0cy9zY3NzL3JlbW9kYWwuc2Nzcz8zNTdhIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9hc3NldHMvc2Nzcy9sb2dvX2FuaW1hdGlvbi5zY3NzP2M1YjQiXSwibmFtZXMiOlsid2lkdGhPcmciLCIkIiwid2luZG93Iiwid2lkdGgiLCJsb3VwZSIsIm9uIiwic2xpZGVUb2dnbGUiLCJzZWFyY2hfY2xvc2UiLCJzbGlkZVVwIiwicmVzaXplIiwiaGlkZSIsInNwX21lbnUiLCJzcF9uYXYiLCJmYWRlSW4iLCJjbG9zZV9idG4iLCJmYWRlT3V0IiwidyIsInNob3ciLCJoYXNfbWVudSIsImNoaWxkcmVuIiwiZG9jdW1lbnQiLCJoZWFkZXJIZWlnaHQiLCJzcGVlZCIsImhyZWYiLCJhdHRyIiwidGFyZ2V0IiwicG9zaXRpb24iLCJvZmZzZXQiLCJ0b3AiLCJhbmltYXRlIiwic2Nyb2xsVG9wIiwidXJsSGFzaCIsImxvY2F0aW9uIiwiaGFzaCIsInN0b3AiLCJzZXRUaW1lb3V0IiwibGFuZ19zZWxlY3QiLCJjbGljayIsImxhbmciLCJhbmNob3IiLCJ1cmwiLCJwcm90b2NvbCIsImhvc3QiLCJwYXRobmFtZSIsInJlbG9hZCIsImxhbmdfcmVzZXQiLCJDb29raWVzIiwicmVtb3ZlIiwiZG9tYWluIiwic2VhcmNoIiwiU2Nyb2xsSGludCIsImluZmluaXRlc2xpZGUiLCJjbG9uZSIsImFwcGVuZFRvIiwibGFuZ19mdW5jIiwiZXZlbnQiLCJjdXJyZW50VGFyZ2V0IiwibmV4dCIsInRvZ2dsZUNsYXNzIiwicmVtb3ZlQ2xhc3MiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwic2Nyb2xsVGltZW91dElkIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFkZENsYXNzIiwiY2xlYXJUaW1lb3V0Il0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOztRQUVBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSUEsV0FBV0MsRUFBRUMsTUFBRixFQUFVQyxLQUFWLEVBQWY7QUFDQUYsRUFBRSxZQUFVO0FBQ1g7QUFDRzs7O0FBR0EsUUFBTUcsUUFBUUgsRUFBRSxRQUFGLENBQWQ7QUFDQUcsVUFBTUMsRUFBTixDQUFTLE9BQVQsRUFBa0IsWUFBVTtBQUN4QkosVUFBRSxjQUFGLEVBQWtC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QSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLG9DOzs7Ozs7O0FDdExBO0F
746BQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNCQUFzQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRCxpQkFBaUI7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDN0NhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7O0FDM0NBLHlDOzs7Ozs7QUNBQSx5Qzs7Ozs7O0FDQUEseUM7Ozs7OztBQ0FBLHlDIiwiZmlsZSI6Ii9wdWJsaWMvY29tbW9uL2pzL3NjcmlwdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9cIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAyYzJiZjU3YTlhYzg3MGMwZmNhYiIsIi8vaW1wb3J0ICQgZnJvbSBcImpxdWVyeVwiXG5pbXBvcnQgQ29va2llcyBmcm9tICdqcy1jb29raWUnXG4vL2ltcG9ydCAnbGl0eSdcbmltcG9ydCBTY3JvbGxIaW50IGZyb20gJ3Njcm9sbC1oaW50JztcblxuLy9kb2N1bWVudC5vbmNvbnRleHRtZW51ID0gZnVuY3Rpb24gKCkge3JldHVybiBmYWxzZTt9XG52YXIgd2lkdGhPcmcgPSAkKHdpbmRvdykud2lkdGgoKTtcbiQoZnVuY3Rpb24oKXtcblx0Ly8kKFwiaW1nXCIpLndyYXAoJzxkaXYgY2xhc3M9XCJpbWdfd3JhcFwiPjwvZGl2PicpO1xuICAgIC8qICoqKioqKioqKioqKioqKioqKioqXG4gICAgKiDmpJzntKLjg5zjgr/jg7PmirzkuIvjgafmpJzntKLnqpPjga7ooajnpLpcbiAgICAqKioqKioqKioqKioqKioqKioqKiAqL1xuICAgIGNvbnN0IGxvdXBlID0gJChcIi5sb3VwZVwiKVxuICAgIGxvdXBlLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oKXtcbiAgICAgICAgJChcIi5zaG93X3NlYXJjaFwiKS5zbGlkZVRvZ2dsZSgyMDApO1xuICAgIH0pXG4gICAgXG4gICAgLyogKioqKioqKioqKioqKioqKioqKipcbiAgICAqIOOBsOOBpOODnOOCv+ODs+aKvOS4i+OBp+aknOe0oueqk+OCkumdnuihqOekulxuICAgICoqKioqKioqKioqKioqKioqKioqICovXG4gICAgY29uc3Qgc2VhcmNoX2Nsb3NlID0gJChcIi5zZWFyY2hfY2xvc2VcIilcbiAgICBzZWFyY2hfY2xvc2Uub24oXCJjbGlja1wiLCBmdW5jdGlvbigpe1xuICAgICAgICAkKFwiLnNob3dfc2VhcmNoXCIpLnNsaWRlVXAoMjAwKTtcbiAgICB9KVxuICAgIFxuICAgICQo
746d2luZG93KS5yZXNpemUoZnVuY3Rpb24oKSB7XG4gICAgICAgICQoXCIuc2hvd19zZWFyY2hcIikuaGlkZSgpXG4gICAgfSlcbiAgICBcbiAgICBcbiAgICAvKiAqKioqKioqKioqKioqKioqKioqKlxuICAgICog44OP44Oz44OQ44O844Ks44O844Oc44K/44Oz5oq85LiL44Gn44Oh44OL44Ol44O844KS6KGo56S6XG4gICAgKioqKioqKioqKioqKioqKioqKiogKi9cbiAgICAvL1NQ5pmC44Gu44OP44Oz44OQ44O844Ks44O844Oc44K/44OzXG4gICAgY29uc3Qgc3BfbWVudSA9ICQoXCIuc3BfbWVudVwiKVxuICAgIGNvbnN0IHNwX25hdiA9ICQoXCIuc3BfbmF2XCIpXG4gICAgc3BfbWVudS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKCl7XG4gICAgICAgIHNwX25hdi5mYWRlSW4oMjUwKVxuICAgIH0pXG4gICAgXG4gICAgLy/jg4rjg5PjgrLjg7zjgrfjg6fjg7PjgpLplonjgZjjgovjg5zjgr/jg7NcbiAgICBjb25zdCBjbG9zZV9idG4gPSAkKFwiLmNsb3NlX2J0blwiKVxuICAgIGNsb3NlX2J0bi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKCl7XG4gICAgICAgIHNwX25hdi5mYWRlT3V0KDIwMClcbiAgICB9KVxuICAgIFxuICAgIC8v44Oq44K144Kk44K644GV44KM44Gf5pmC44Gu5Yem55CGXG4gICAgLy9TUOaZguOBq+ODoeODi+ODpeODvOOCkumdnuihqOekuuOBq+OBl+OBpuOCgumWvuWApOOCkuS4iuWbnuOCi+OBqOODoeODi+ODpeODvOOCkuihqOekuuOBmeOCi+OAglxuICAgICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCB3ID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgIGlmKHdpZHRoT3JnICE9IHcpe1xuICAgICAgICBcdHdpZHRoT3JnID0gdztcblx0ICAgICAgICBpZih3IDw9IDg0MCl7XG5cdCAgICAgICAgICAgIHNwX25hdi5oaWRlKClcblx0ICAgICAgICB9ZWxzZXtcblx0ICAgICAgICAgICAgc3BfbmF2LnNob3coKVxuXHQgICAgICAgIH1cblx0XHR9XG4gICAgfSlcbiAgICBcbiAgICAvKiAqKioqKioqKioqKioqKioqKioqKlxuICAgICog56ysMumajuWxpOOBjOOBguOCi+WgtOWQiOOBr+OCouOCs+ODvOODh+OCo+OCquODs1xuICAgICoqKioqKioqKioqKioqKioqKioqICovXG4gICAgY29uc3QgaGFzX21lbnUgPSAkKFwiLmhhc19tZW51XCIpXG4gICAgaGFzX21lbnUub24oXCJjbGlja1wiLCBmdW5jdGlvbigpe1xuICAgICAgICAkKHRoaXMpLmNoaWxkcmVuKFwidWxcIikuc2xpZGVUb2dnbGUoMzAwKTtcbiAgICB9KVxuICAgIFxuICAgIC8qICoqKioqKioqKioqKioqKioqKioqXG4gICAgKiDjgrnjg6Djg7zjgrnjgrnjgq/jg63jg7zjg6tcbiAgICAqKioqKioqKioqKioqKioqKioqKiAqL1xuICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgJ2FbaHJlZl49XCIjXCJdOm5vdChbZGF0YS1saXR5XSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBoZWFkZXJIZWlnaHQgPSAwO1xuICAgICAgICBpZigkKHdpbmRvdykud2lkdGgoKSA8PSA4NDApe1xuICAgICAgICAgICAgaGVhZGVySGVpZ2h0ID0gOTM7XG4gICAgICAgIH1cbiAgICAgICAgLy9jb25zb2xlLmxvZyhoZWFkZXJIZWlnaHQpO1xuICAgICAgICBjb25zdCBzcGVlZCA9IDUwMDtcbiAgICAgICAgY29uc3QgaHJlZj0gJCh0aGlzKS5hdHRyKFwiaHJlZlwiKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gJChocmVmID09IFwiI1wiIHx8IGhyZWYgPT0gXCJcIiA/ICdodG1sJyA6IGhyZWYpO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRhcmdldC5vZmZzZXQoKS50b3AgLSBoZWFkZXJIZWlnaHQ7XG4gICAgICAgICQoXCJodG1sLCBib2R5XCIpLmFuaW1hdGUoe3Njcm9sbFRvcDpwb3NpdGlvbn0sIHNwZWVkLCBcInN3aW5nXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgLy8g5aSW6YOo44GL44KJ44Gu44Oa44O844K45YaF44Oq44Oz44KvXG4gICAgdmFyIHVybEhhc2ggPSBsb2NhdGlvbi5oYXNoOyAvLyDjg4/jg4Pjgrfjg6XlgKTjgYzjgYLjgozjgbDjg5rjg7zjgrjlhoXjgrnjgq/jg63jg7zjg6tcblx0aWYodXJsSGFzaCkgeyAvLyDlpJbpg6jjg6rjg7Pjgq/jgYvjgonjga7jgq/jg6rjg4Pjgq/mmYJcblx0XHQkKCdib2R5LGh0bWwnKS5zdG9wKCkuc2Nyb2xsVG9wKDApOyAvLyDjgrnjgq/jg63jg7zjg6vjgpIw44Gr5oi744GZXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpeyAvLyDjg63jg7zjg4nmmYLjga7lh6bnkIbjgpLlvoXjgaHjgIHmmYLplpPlt67jgafjgrnjgq/jg63jg7zjg6vlrp/ooYxcblx0ICBcdFx0Y29uc3QgdGFyZ2V0ID0gJCh1cmxIYXNoKTtcblx0ICBcdFx0bGV0IGhlYWRlckhlaWdodCA9IDA7XG4gICAgICAgIFx0aWYoJCh3aW5kb3cpLndpZHRoKCkgPD0gODQwKXtcbiAgICAgICAgICAgIFx0aGVhZGVySGVpZ2h0ID0gOTM7XG4gICAgICAgIFx0fVxuICAgICAgICBcdGNvbnN0IHNwZWVkID0gNTAwO1xuXHQgIFx0XHRjb25zdCBwb3NpdGlvbiA9IHRhcmdldC5vZmZzZXQoKS50b3AgLSBoZWFkZXJIZWlnaHQ7XG5cdCAgXHRcdCQoXCJodG1sLCBib2R5XCIpLmFuaW1hdGUoe3Njcm9sbFRvcDpwb3NpdGlvbn0sIHNwZWVkLCBcInN3aW5nXCIpO1xuICAgIFx0fSwgMTAwMCk7XG4gIFx0fVxuICAgIFxuICAgIC8qICoqKioqKioqKioqKioqKioqKioqXG4gICAgKiDnv7voqLNcbiAgICAqKioqKioqKioqKioqKioqKioqKiAqL1xuICAgIGNvbnN0IGxhbmdfc2VsZWN0ID0gJChcIi5sYW5nLXNlbGVjdFwiKVxuICAgIGxhbmdfc2VsZWN0LmNsaWNrKGZ1bmN0aW9uKCkge1xuXHQgIHZhciBsYW5nID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxhbmcnKTtcblx0ICB2YXIgYW5jaG9yID0gJ
746Ch0aGlzKS5hdHRyKCdkYXRhLWFuY2hvcicpO1xuXHQgIHZhciB1cmwgPSBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIGxvY2F0aW9uLmhvc3QgKyBsb2NhdGlvbi5wYXRobmFtZSArICcjJyArIGFuY2hvcjtcblx0ICB3aW5kb3cubG9jYXRpb24gPSB1cmw7XG5cdCAgbG9jYXRpb24ucmVsb2FkKCk7XG5cdH0pXG5cdC8qICoqKioqKioqKioqKioqKioqKioqXG4gICAgKiDnv7voqLPjg6rjgrvjg4Pjg4hcbiAgICAqKioqKioqKioqKioqKioqKioqKiAqL1xuICAgIGNvbnN0IGxhbmdfcmVzZXQgPSAkKFwiLmxhbmctcmVzZXRcIilcbiAgICBsYW5nX3Jlc2V0LmNsaWNrKGZ1bmN0aW9uKCkge1xuXHQgIENvb2tpZXMucmVtb3ZlKFwiZ29vZ3RyYW5zXCIpO1xuXHQgIENvb2tpZXMucmVtb3ZlKCdnb29ndHJhbnMnLCB7IGRvbWFpbjogJy5jb25jZXB0LWguYXNpYScgfSk7XG5cdCAgdmFyIHVybCA9IGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgbG9jYXRpb24uaG9zdCArIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoO1xuXHQgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuXHR9KVxuXHQvKiAqKioqKioqKioqKioqKioqKioqKlxuICAgICog5qiq44K544Kv44Ot44O844OrXG4gICAgKioqKioqKioqKioqKioqKioqKiogKi9cblx0bmV3IFNjcm9sbEhpbnQoJy5qcy1zY3JvbGxhYmxlJyk7XG4gICAgXG4gICAgXG4gICAgLyogKioqKioqKioqKioqKioqKioqKipcbiAgICAqIOe3iuaApeaZguOBruihqOekulxuICAgICoqKioqKioqKioqKioqKioqKioqICovXG4gICAgJCgnLmVtZXJnZW5jeV9jb250ZW50cycpLmluZmluaXRlc2xpZGUoe1xuICAgICAgICAnc3BlZWQnOiA4MCxcbiAgICAgICAgJ2RpcmVjdGlvbic6ICdsZWZ0JyxcbiAgICAgICAgJ3BhdXNlb25ob3Zlcic6IHRydWUsXG4gICAgICAgICdyZXNwb25zaXZlJzogdHJ1ZSxcbiAgICAgICAgJ2Nsb25lJzogMVxuICAgIH0pO1xuICAgIFxuICAgIC8qICoqKioqKioqKioqKioqKioqKioqXG4gICAgKiDnv7voqLNcbiAgICAqIOOCs+ODs+ODnOODnOODg+OCr+OCuVxuICAgICoqKioqKioqKioqKioqKioqKioqICovXG4gICAkKCcubGFuZ3VhZ2VTZWxlY3QnKS5jbG9uZSgpLmFwcGVuZFRvKCcucGNMYW5nJyk7XG4gICAgY29uc3QgbGFuZ19mdW5jID0gJChcIi5sYW5ndWFnZVNlbGVjdCAubGFuZ0J0blwiKVxuICAgIGxhbmdfZnVuYy5vbihcImNsaWNrXCIsICgpPT57XG4gICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldCkubmV4dCgnLmxhbmdMaXN0JykudG9nZ2xlQ2xhc3MoJ2xhbmdTaG93Jyk7XG4gICAgfSlcbiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICQoJy5sYW5nTGlzdCcpLnJlbW92ZUNsYXNzKCdsYW5nU2hvdycpO1xuICAgIH0pXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5sYW5ndWFnZVNlbGVjdCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSlcblxuICAgIC8qICoqKioqKioqKioqKioqKioqKioqXG4gICAgKiDjgrnjg57jg5tTTlPjgqLjgqTjgrPjg7NcbiAgICAqIOOCueOCr+ODreODvOODq+WBnOatouaZglxuICAgICoqKioqKioqKioqKioqKioqKioqICovXG4gICAgdmFyIHNjcm9sbFRpbWVvdXRJZDtcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixmdW5jdGlvbigpIHtcblx0XHQkKCdib2R5JykuYWRkQ2xhc3MoJ3Njcm9sbE5vdycpO1xuXHRcdGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0SWQpO1xuXHRcdHNjcm9sbFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHQkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3Njcm9sbE5vdycpO1xuXHRcdH0sMzAwKTtcblx0fSk7XG59KVxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvc2NyaXB0LmpzIiwiLyohXG4gKiBKYXZhU2NyaXB0IENvb2tpZSB2Mi4yLjFcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qcy1jb29raWUvanMtY29va2llXG4gKlxuICogQ29weXJpZ2h0IDIwMDYsIDIwMTUgS2xhdXMgSGFydGwgJiBGYWduZXIgQnJhY2tcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICovXG47KGZ1bmN0aW9uIChmYWN0b3J5KSB7XG5cdHZhciByZWdpc3RlcmVkSW5Nb2R1bGVMb2FkZXI7XG5cdGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRkZWZpbmUoZmFjdG9yeSk7XG5cdFx0cmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyID0gdHJ1ZTtcblx0fVxuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdFx0cmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyID0gdHJ1ZTtcblx0fVxuXHRpZiAoIXJlZ2lzdGVyZWRJbk1vZHVsZUxvYWRlcikge1xuXHRcdHZhciBPbGRDb29raWVzID0gd2luZG93LkNvb2tpZXM7XG5cdFx0dmFyIGFwaSA9IHdpbmRvdy5Db29raWVzID0gZmFjdG9yeSgpO1xuXHRcdGFwaS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0d2luZG93LkNvb2tpZXMgPSBPbGRDb29raWVzO1xuXHRcdFx0cmV0dXJuIGFwaTtcblx0XHR9O1xuXHR9XG59KGZ1bmN0aW9uICgpIHtcblx0ZnVuY3Rpb24gZXh0ZW5kICgpIHtcblx0XHR2YXIgaSA9IDA7XG5cdFx0dmFyIHJlc3VsdCA9IHt9O1xuXHRcdGZvciAoOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXR0cmlidXRlcyA9IGFyZ3VtZW50c1sgaSBdO1xuXHRcdFx0Zm9yICh2YXIga2V5IGluIGF0dHJpYnV0ZXMpIHtcblx0XHRcdFx0cmVzdWx0W2tleV0gPSBhdHRyaWJ1dGVzW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRmdW5jdGlvbiBkZWNvZGUgKHMpIHtcblx0XHRyZXR1cm4gcy5yZXBsYWNlKC8oJVswLTlBLVpdezJ9KSsvZywgZGVjb2RlVVJJQ29tcG9uZW50KTtcblx0fVxuXG5cdGZ1bmN0aW9uIGluaXQgKGNvbnZlcnRlcikge1xuXHRcdGZ1bmN0aW9uIGFwaSgpIHt9XG5cblx0XHRmdW5jdGlvbiBzZXQgKGtleSwgdmFsdWUsIGF0dHJpYnV0ZXMpIHtcblx0XHRcdGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0YXR0cmlidXRlcyA9IGV4dGVuZCh7XG5cdFx0XHRcdHBhdGg6ICcvJ1xuXHRcdFx0fSwgYXBpLmRlZmF1bHRzLCBhdHRyaWJ1dGVzKTtcblxuXHRcdFx0aWYgKHR5cGVvZiBhdHRyaWJ1dGVzLmV4cGlyZXMgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGF0dHJpYnV0ZXMuZXhwaXJlcyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkgKiAxICsgYXR0cmlidXRlcy5leHBpcmVzICogODY0ZSs1KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2UncmUgdXNpbmcgXCJleHBpcmVzXCIgYmVjYXVzZSBcIm1heC1hZ2
746VcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IElFXG5cdFx0XHRhdHRyaWJ1dGVzLmV4cGlyZXMgPSBhdHRyaWJ1dGVzLmV4cGlyZXMgPyBhdHRyaWJ1dGVzLmV4cGlyZXMudG9VVENTdHJpbmcoKSA6ICcnO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXHRcdFx0XHRpZiAoL15bXFx7XFxbXS8udGVzdChyZXN1bHQpKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSByZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cblx0XHRcdHZhbHVlID0gY29udmVydGVyLndyaXRlID9cblx0XHRcdFx0Y29udmVydGVyLndyaXRlKHZhbHVlLCBrZXkpIDpcblx0XHRcdFx0ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2YWx1ZSkpXG5cdFx0XHRcdFx0LnJlcGxhY2UoLyUoMjN8MjR8MjZ8MkJ8M0F8M0N8M0V8M0R8MkZ8M0Z8NDB8NUJ8NUR8NUV8NjB8N0J8N0R8N0MpL2csIGRlY29kZVVSSUNvbXBvbmVudCk7XG5cblx0XHRcdGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoa2V5KSlcblx0XHRcdFx0LnJlcGxhY2UoLyUoMjN8MjR8MjZ8MkJ8NUV8NjB8N0MpL2csIGRlY29kZVVSSUNvbXBvbmVudClcblx0XHRcdFx0LnJlcGxhY2UoL1tcXChcXCldL2csIGVzY2FwZSk7XG5cblx0XHRcdHZhciBzdHJpbmdpZmllZEF0dHJpYnV0ZXMgPSAnJztcblx0XHRcdGZvciAodmFyIGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykge1xuXHRcdFx0XHRpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0pIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdHJpbmdpZmllZEF0dHJpYnV0ZXMgKz0gJzsgJyArIGF0dHJpYnV0ZU5hbWU7XG5cdFx0XHRcdGlmIChhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDb25zaWRlcnMgUkZDIDYyNjUgc2VjdGlvbiA1LjI6XG5cdFx0XHRcdC8vIC4uLlxuXHRcdFx0XHQvLyAzLiAgSWYgdGhlIHJlbWFpbmluZyB1bnBhcnNlZC1hdHRyaWJ1dGVzIGNvbnRhaW5zIGEgJXgzQiAoXCI7XCIpXG5cdFx0XHRcdC8vICAgICBjaGFyYWN0ZXI6XG5cdFx0XHRcdC8vIENvbnN1bWUgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMgdXAgdG8sXG5cdFx0XHRcdC8vIG5vdCBpbmNsdWRpbmcsIHRoZSBmaXJzdCAleDNCIChcIjtcIikgY2hhcmFjdGVyLlxuXHRcdFx0XHQvLyAuLi5cblx0XHRcdFx0c3RyaW5naWZpZWRBdHRyaWJ1dGVzICs9ICc9JyArIGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uc3BsaXQoJzsnKVswXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIChkb2N1bWVudC5jb29raWUgPSBrZXkgKyAnPScgKyB2YWx1ZSArIHN0cmluZ2lmaWVkQXR0cmlidXRlcyk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gZ2V0IChrZXksIGpzb24pIHtcblx0XHRcdGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGphciA9IHt9O1xuXHRcdFx0Ly8gVG8gcHJldmVudCB0aGUgZm9yIGxvb3AgaW4gdGhlIGZpcnN0IHBsYWNlIGFzc2lnbiBhbiBlbXB0eSBhcnJheVxuXHRcdFx0Ly8gaW4gY2FzZSB0aGVyZSBhcmUgbm8gY29va2llcyBhdCBhbGwuXG5cdFx0XHR2YXIgY29va2llcyA9IGRvY3VtZW50LmNvb2tpZSA/IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOyAnKSA6IFtdO1xuXHRcdFx0dmFyIGkgPSAwO1xuXG5cdFx0XHRmb3IgKDsgaSA8IGNvb2tpZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIHBhcnRzID0gY29va2llc1tpXS5zcGxpdCgnPScpO1xuXHRcdFx0XHR2YXIgY29va2llID0gcGFydHMuc2xpY2UoMSkuam9pbignPScpO1xuXG5cdFx0XHRcdGlmICghanNvbiAmJiBjb29raWUuY2hhckF0KDApID09PSAnXCInKSB7XG5cdFx0XHRcdFx0Y29va2llID0gY29va2llLnNsaWNlKDEsIC0xKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIG5hbWUgPSBkZWNvZGUocGFydHNbMF0pO1xuXHRcdFx0XHRcdGNvb2tpZSA9IChjb252ZXJ0ZXIucmVhZCB8fCBjb252ZXJ0ZXIpKGNvb2tpZSwgbmFtZSkgfHxcblx0XHRcdFx0XHRcdGRlY29kZShjb29raWUpO1xuXG5cdFx0XHRcdFx0aWYgKGpzb24pIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGNvb2tpZSA9IEpTT04ucGFyc2UoY29va2llKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0amFyW25hbWVdID0gY29va2llO1xuXG5cdFx0XHRcdFx0aWYgKGtleSA9PT0gbmFtZSkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGNhdGNoIChlKSB7fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4ga2V5ID8gamFyW2tleV0gOiBqYXI7XG5cdFx0fVxuXG5cdFx0YXBpLnNldCA9IHNldDtcblx0XHRhcGkuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuIGdldChrZXksIGZhbHNlIC8qIHJlYWQgYXMgcmF3ICovKTtcblx0XHR9O1xuXHRcdGFwaS5nZXRKU09OID0gZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuIGdldChrZXksIHRydWUgLyogcmVhZCBhcyBqc29uICovKTtcblx0XHR9O1xuXHRcdGFwaS5yZW1vdmUgPSBmdW5jdGlvbiAoa2V5LCBhdHRyaWJ1dGVzKSB7XG5cdFx0XHRzZXQoa2V5LCAnJywgZXh0ZW5kKGF0dHJpYnV0ZXMsIHtcblx0XHRcdFx0ZXhwaXJlczogLTFcblx0XHRcdH0pKTtcblx0XHR9O1xuXG5cdFx0YXBpLmRlZmF1bHRzID0ge307XG5cblx0XHRhcGkud2l0aENvbnZlcnRlciA9IGluaXQ7XG5cblx0XHRyZXR1cm4gYXBpO1xuXHR9XG5cblx0cmV0dXJuIGluaXQoZnVuY3Rpb24gKCkge30pO1xufSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvanMtY29va2llL3NyYy9qcy5jb29raWUuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci
7465rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG52YXIgX2VzNk9iamVjdEFzc2lnbiA9IHJlcXVpcmUoJ2VzNi1vYmplY3QtYXNzaWduJyk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgZGVmYXVsdHMgPSB7XG4gIHN1Z2dlc3RDbGFzczogJ2lzLWFjdGl2ZScsXG4gIHNjcm9sbGFibGVDbGFzczogJ2lzLXNjcm9sbGFibGUnLFxuICBzY3JvbGxhYmxlUmlnaHRDbGFzczogJ2lzLXJpZ2h0LXNjcm9sbGFibGUnLFxuICBzY3JvbGxhYmxlTGVmdENsYXNzOiAnaXMtbGVmdC1zY3JvbGxhYmxlJyxcbiAgc2Nyb2xsSGludENsYXNzOiAnc2Nyb2xsLWhpbnQnLFxuICBzY3JvbGxIaW50SWNvbkNsYXNzOiAnc2Nyb2xsLWhpbnQtaWNvbicsXG4gIHNjcm9sbEhpbnRJY29uQXBwZW5kQ2xhc3M6ICcnLCAvLyAnc2Nyb2xsLWhpbnQtaWNvbi13aGl0ZSdcbiAgc2Nyb2xsSGludEljb25XcmFwQ2xhc3M6ICdzY3JvbGwtaGludC1pY29uLXdyYXAnLFxuICBzY3JvbGxIaW50VGV4dDogJ3Njcm9sbC1oaW50LXRleHQnLFxuICBzY3JvbGxIaW50Qm9yZGVyV2lkdGg6IDEwLFxuICByZW1haW5pbmdUaW1lOiAtMSxcbiAgZW5hYmxlT3ZlcmZsb3dTY3JvbGxpbmc6IHRydWUsXG4gIGFwcGx5VG9QYXJlbnRzOiBmYWxzZSxcbiAgc3VnZ2VzdGl2ZVNoYWRvdzogZmFsc2UsXG4gIG9mZnNldDogMCxcbiAgaTE4bjoge1xuICAgIHNjcm9sbGFibGU6ICdzY3JvbGxhYmxlJ1xuICB9XG59O1xuXG52YXIgU2Nyb2xsSGludCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2Nyb2xsSGludChlbGUsIG9wdGlvbikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2Nyb2xsSGludCk7XG5cbiAgICB0aGlzLm9wdCA9ICgwLCBfZXM2T2JqZWN0QXNzaWduLmFzc2lnbikoe30sIGRlZmF1bHRzLCBvcHRpb24pO1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB2YXIgZWxlbWVudHMgPSB0eXBlb2YgZWxlID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZWxlKSA6IGVsZTtcbiAgICB2YXIgYXBwbHlUb1BhcmVudHMgPSB0aGlzLm9wdC5hcHBseVRvUGFyZW50cztcblxuICAgIFtdLmZvckVhY2guY2FsbChlbGVtZW50cywgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIGlmIChhcHBseVRvUGFyZW50cykge1xuICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgfVxuICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgICBlbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgaWYgKF90aGlzLm9wdC5lbmFibGVPdmVyZmxvd1Njcm9sbGluZykge1xuICAgICAgICBpZiAoJ292ZXJmbG93U2Nyb2xsaW5nJyBpbiBlbGVtZW50LnN0eWxlKSB7XG4gICAgICAgICAgZWxlbWVudC5zdHlsZS5vdmVyZmxvd1Njcm9sbGluZyA9ICd0b3VjaCc7XG4gICAgICAgIH0gZWxzZSBpZiAoJ3dlYmtpdE92ZXJmbG93U2Nyb2xsaW5nJyBpbiBlbGVtZW50LnN0eWxlKSB7XG4gICAgICAgICAgZWxlbWVudC5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZyA9ICd0b3VjaCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBpdGVtID0ge1xuICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICBzY3JvbGxlZEluOiBmYWxzZSxcbiAgICAgICAgaW50ZXJhY3RlZDogZmFsc2VcbiAgICAgIH07XG4gICAgICBkb2
746N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS50YXJnZXQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICBpdGVtLmludGVyYWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIF90aGlzLnVwZGF0ZUl0ZW0oaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0sIHRydWUpO1xuICAgICAgKDAsIF91dGlsLmFkZENsYXNzKShlbGVtZW50LCBfdGhpcy5vcHQuc2Nyb2xsSGludENsYXNzKTtcbiAgICAgICgwLCBfdXRpbC5hcHBlbmQpKGVsZW1lbnQsICc8ZGl2IGNsYXNzPVwiJyArIF90aGlzLm9wdC5zY3JvbGxIaW50SWNvbldyYXBDbGFzcyArICdcIiBkYXRhLXRhcmdldD1cInNjcm9sbGFibGUtaWNvblwiPlxcbiAgICAgICAgPHNwYW4gY2xhc3M9XCInICsgX3RoaXMub3B0LnNjcm9sbEhpbnRJY29uQ2xhc3MgKyAoX3RoaXMub3B0LnNjcm9sbEhpbnRJY29uQXBwZW5kQ2xhc3MgPyAnICcgKyBfdGhpcy5vcHQuc2Nyb2xsSGludEljb25BcHBlbmRDbGFzcyA6ICcnKSArICdcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIicgKyBfdGhpcy5vcHQuc2Nyb2xsSGludFRleHQgKyAnXCI+JyArIF90aGlzLm9wdC5pMThuLnNjcm9sbGFibGUgKyAnPC9kaXY+XFxuICAgICAgICA8L3NwYW4+XFxuICAgICAgPC9kaXY+Jyk7XG4gICAgICBfdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy51cGRhdGVJdGVtcygpO1xuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy51cGRhdGVJdGVtcygpO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlSXRlbXMoKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTY3JvbGxIaW50LCBbe1xuICAgIGtleTogJ2lzU2Nyb2xsYWJsZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzU2Nyb2xsYWJsZShpdGVtKSB7XG4gICAgICB2Y
746XIgb2Zmc2V0ID0gdGhpcy5vcHQub2Zmc2V0O1xuICAgICAgdmFyIGVsZW1lbnQgPSBpdGVtLmVsZW1lbnQ7XG4gICAgICB2YXIgb2Zmc2V0V2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgICByZXR1cm4gb2Zmc2V0V2lkdGggKyBvZmZzZXQgPCBlbGVtZW50LnNjcm9sbFdpZHRoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NoZWNrU2Nyb2xsYWJsZURpcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNoZWNrU2Nyb2xsYWJsZURpcihpdGVtKSB7XG4gICAgICB2YXIgX29wdCA9IHRoaXMub3B0LFxuICAgICAgICAgIHNjcm9sbEhpbnRCb3JkZXJXaWR0aCA9IF9vcHQuc2Nyb2xsSGludEJvcmRlcldpZHRoLFxuICAgICAgICAgIHNjcm9sbGFibGVSaWdodENsYXNzID0gX29wdC5zY3JvbGxhYmxlUmlnaHRDbGFzcyxcbiAgICAgICAgICBzY3JvbGxhYmxlTGVmdENsYXNzID0gX29wdC5zY3JvbGxhYmxlTGVmdENsYXNzO1xuICAgICAgdmFyIGVsZW1lbnQgPSBpdGVtLmVsZW1lbnQ7XG5cbiAgICAgIHZhciBjaGlsZCA9IGVsZW1lbnQuY2hpbGRyZW5bMF07XG4gICAgICB2YXIgd2lkdGggPSBjaGlsZC5zY3JvbGxXaWR0aDtcbiAgICAgIHZhciBwYXJlbnRXaWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB2YXIgc2Nyb2xsTGVmdCA9IGVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgIGlmIChwYXJlbnRXaWR0aCArIHNjcm9sbExlZnQgPCB3aWR0aCAtIHNjcm9sbEhpbnRCb3JkZXJXaWR0aCkge1xuICAgICAgICAoMCwgX3V0aWwuYWRkQ2xhc3MpKGVsZW1lbnQsIHNjcm9sbGFibGVSaWdodENsYXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICgwLCBfdXRpbC5yZW1vdmVDbGFzcykoZWxlbWVudCwgc2Nyb2xsYWJsZVJpZ2h0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudFdpZHRoIDwgd2lkdGggJiYgc2Nyb2xsTGVmdCA+IHNjcm9sbEhpbnRCb3JkZXJXaWR0aCkge1xuICAgICAgICAoMCwgX3V0aWwuYWRkQ2xhc3MpKGVsZW1lbnQsIHNjcm9sbGFibGVMZWZ0Q2xhc3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKDAsIF91dGlsLnJlbW92ZUNsYXNzKShlbGVtZW50LCBzY3JvbGxhYmxlTGVmdENsYXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICduZWVkU3VnZ2VzdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5lZWRTdWdnZXN0KGl0ZW0pIHtcbiAgICAgIHZhciBzY3JvbGxlZEluID0gaXRlbS5zY3JvbGxlZEluLFxuICAgICAgICAgIGludGVyYWN0ZWQgPSBpdGVtLmludGVyYWN0ZWQ7XG5cbiAgICAgIHJldHVybiAhaW50ZXJhY3RlZCAmJiBzY3JvbGxlZEluICYmIHRoaXMuaXNTY3JvbGxhYmxlKGl0ZW0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUl0ZW1zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlSXRlbXMoKSB7XG4gICAgICB2Y
746XIgX3RoaXMyID0gdGhpcztcblxuICAgICAgW10uZm9yRWFjaC5jYWxsKHRoaXMuaXRlbXMsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIF90aGlzMi51cGRhdGVJdGVtKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAndXBkYXRlU3RhdHVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlU3RhdHVzKGl0ZW0pIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgZWxlbWVudCA9IGl0ZW0uZWxlbWVudCxcbiAgICAgICAgICBzY3JvbGxlZEluID0gaXRlbS5zY3JvbGxlZEluO1xuXG4gICAgICBpZiAoc2Nyb2xsZWRJbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoKDAsIF91dGlsLmdldE9mZnNldCkoZWxlbWVudCkudG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyIDwgKDAsIF91dGlsLmdldFNjcm9sbFRvcCkoKSArIHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgICBpdGVtLnNjcm9sbGVkSW4gPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5vcHQucmVtYWluaW5nVGltZSAhPT0gLTEpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGl0ZW0uaW50ZXJhY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBfdGhpczMudXBkYXRlSXRlbShpdGVtKTtcbiAgICAgICAgICB9LCB0aGlzLm9wdC5yZW1haW5pbmdUaW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3VwZGF0ZUl0ZW0nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVJdGVtKGl0ZW0pIHtcbiAgICAgIHZhciBvcHQgPSB0aGlzLm9wdDtcbiAgICAgIHZhciBlbGVtZW50ID0gaXRlbS5lbGVtZW50O1xuXG4gICAgICB2Y
746XIgdGFyZ2V0ID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10YXJnZXQ9XCJzY3JvbGxhYmxlLWljb25cIl0nKTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdHVzKGl0ZW0pO1xuICAgICAgaWYgKHRoaXMuaXNTY3JvbGxhYmxlKGl0ZW0pKSB7XG4gICAgICAgICgwLCBfdXRpbC5hZGRDbGFzcykoZWxlbWVudCwgb3B0LnNjcm9sbGFibGVDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAoMCwgX3V0aWwucmVtb3ZlQ2xhc3MpKGVsZW1lbnQsIG9wdC5zY3JvbGxhYmxlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVlZFN1Z2dlc3QoaXRlbSkpIHtcbiAgICAgICAgKDAsIF91dGlsLmFkZENsYXNzKSh0YXJnZXQsIG9wdC5zdWdnZXN0Q2xhc3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKDAsIF91dGlsLnJlbW92ZUNsYXNzKSh0YXJnZXQsIG9wdC5zdWdnZXN0Q2xhc3MpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdC5zdWdnZXN0aXZlU2hhZG93KSB7XG4gICAgICAgIHRoaXMuY2hlY2tTY3JvbGxhYmxlRGlyKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTY3JvbGxIaW50O1xufSgpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBTY3JvbGxIaW50O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvc2Nyb2xsLWhpbnQvbGliL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29kZSByZWZhY3RvcmVkIGZyb20gTW96aWxsYSBEZXZlbG9wZXIgTmV0d29yazpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9hc3NpZ25cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIGZpcnN0U291cmNlKSB7XG4gIGlmICh0YXJnZXQgPT09IHVuZGVmaW5lZCB8fCB0YXJnZXQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBmaXJzdCBhcmd1bWVudCB0byBvYmplY3QnKTtcbiAgfVxuXG4gIHZhciB0byA9IE9iamVjdCh0YXJnZXQpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBuZXh0U291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgIGlmIChuZXh0U291cmNlID09PSB1bmRlZmluZWQgfHwgbmV4dFNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGtleXNBcnJheSA9IE9iamVjdC5rZXlzKE9iamVjdChuZXh0U291cmNlKSk7XG4gICAgZm9yICh2YXIgbmV4dEluZGV4ID0gMCwgbGVuID0ga2V5c0FycmF5Lmxlbmd0aDsgbmV4dEluZGV4IDwgbGVuOyBuZXh0SW5kZXgrKykge1xuICAgICAgdmFyIG5leHRLZXkgPSBrZXlzQXJyYXlbbmV4dEluZGV4XTtcbiAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuZXh0U291cmNlLCBuZXh0S2V5KTtcbiAgICAgIGlmIChkZXNjICE9PSB1bmRlZmluZWQgJiYgZGVzYy5lbnVtZXJhYmxlKSB7XG4gICAgICAgIHRvW25leHRLZXldID0gbmV4dFNvdXJjZVtuZXh0S2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvO1xufVxuXG5mdW5jdGlvbiBwb2x5ZmlsbCgpIHtcbiAgaWYgKCFPYmplY3QuYXNzaWduKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdCwgJ2Fzc2lnbicsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogYXNzaWduXG4gICAgfSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzc2lnbjogYXNzaWduLFxuICBwb2x5ZmlsbDogcG9seWZpbGxcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9lczYtb2JqZWN0LWFzc2lnbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgYXBwZW5kID0gZXhwb3J0cy5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQoZWxlbWVudCwgc3RyaW5nKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IHN0cmluZztcbiAgd2hpbGUgKGRpdi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgZWxlbWVudC5hcHBlbmRDaGlsZChkaXYuY2hpbGRyZW5bMF0pO1xuICB9XG59O1xuXG52YXIgYWRkQ2xhc3MgPSBleHBvcnRzLmFkZENsYXNzID0gZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuY2xhc3NOYW1lICs9ICcgJyArIGNsYXNzTmFtZTtcbiAgfVxufTtcblxudmFyIHJlbW92ZUNsYXNzID0gZXhwb3J0cy5yZW1vdmVDbGFzcyA9IGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgnKF58XFxcXGIpJyArIGNsYXNzTmFtZS5zcGxpdCgnICcpLmpvaW4oJ3wnKSArICcoXFxcXGJ8JCknLCAnZ2knKSwgJyAnKTtcbiAgfVxufTtcblxudmFyIGdldFNjcm9sbFRvcCA9IGV4cG9ydHMuZ2V0U2Nyb2xsVG9wID0gZnVuY3Rpb24gZ2V0U2Nyb2xsVG9wKCkge1xuICByZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgMDtcbn07XG5cbnZhciBnZXRTY3JvbGxMZWZ0ID0gZXhwb3J0cy5nZXRTY3JvbGxMZWZ0ID0gZnVuY3Rpb24gZ2V0U2Nyb2xsTGVmdCgpIHtcbiAgcmV0dXJuIHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgfHwgMDtcbn07XG5cbnZhciBnZXRPZmZzZXQgPSBleHBvcnRzLmdldE9mZnNldCA9IGZ1bmN0aW9uIGdldE9mZnNldChlbCkge1xuICB2YXIgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdC50b3AgKyBnZXRTY3JvbGxUb3AoKSxcbiAgICBsZWZ0OiByZWN0LmxlZnQgKyBnZXRTY3JvbGxMZWZ0KClcbiAgfTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvc2Nyb2xsLWhpbnQvbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvc2Nzcy9zdHlsZS5zY3NzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZX
746h0LXdlYnBhY2stcGx1Z2luXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9yZXNvdXJjZXMvYXNzZXRzL3Njc3Mvc2xpY2suc2Nzc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vcmVzb3VyY2VzL2Fzc2V0cy9zY3NzL3JlbW9kYWwuc2Nzc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vcmVzb3VyY2VzL2Fzc2V0cy9zY3NzL2xvZ29fYW5pbWF0aW9uLnNjc3Ncbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.