@internetarchive/bookreader 5.0.0-12-fixsorting-7 → 5.0.0-120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/BookReader/474.js +2 -0
  2. package/BookReader/474.js.map +1 -0
  3. package/BookReader/BookReader.css +670 -1190
  4. package/BookReader/bergamot-translator-worker.js +2966 -0
  5. package/BookReader/bergamot-translator-worker.wasm +0 -0
  6. package/BookReader/hypothesis/LICENSE +50 -0
  7. package/BookReader/hypothesis/README.md +55 -0
  8. package/BookReader/hypothesis/build/boot-template.js +1 -0
  9. package/BookReader/hypothesis/build/boot.js +1 -0
  10. package/BookReader/hypothesis/build/manifest.json +20 -0
  11. package/BookReader/hypothesis/build/scripts/annotator.bundle.js +199 -0
  12. package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
  13. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +811 -0
  14. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
  15. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +437 -0
  16. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
  17. package/BookReader/hypothesis/build/styles/annotator.css +4 -0
  18. package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
  19. package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  20. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  21. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  22. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  23. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  24. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
  25. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  26. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
  27. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
  28. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  29. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
  30. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  31. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  32. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  33. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
  34. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  35. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  36. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  37. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  38. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  39. package/BookReader/hypothesis/build/styles/highlights.css +2 -0
  40. package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
  41. package/BookReader/hypothesis/build/styles/katex.min.css +3 -0
  42. package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
  43. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +14 -0
  44. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
  45. package/BookReader/hypothesis/build/styles/sidebar.css +4 -0
  46. package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
  47. package/BookReader/hypothesis/build/styles/ui-playground.css +4 -0
  48. package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
  49. package/BookReader/hypothesis/package.json +126 -0
  50. package/BookReader/ia-bookreader.js +1886 -0
  51. package/BookReader/{BookReader.js.LICENSE.txt → ia-bookreader.js.LICENSE.txt} +26 -20
  52. package/BookReader/ia-bookreader.js.map +1 -0
  53. package/BookReader/icons/1up.svg +1 -12
  54. package/BookReader/icons/2up.svg +1 -15
  55. package/BookReader/icons/advance.svg +3 -26
  56. package/BookReader/icons/chevron-right.svg +1 -1
  57. package/BookReader/icons/close-circle-dark.svg +1 -1
  58. package/BookReader/icons/close-circle.svg +1 -1
  59. package/BookReader/icons/fullscreen.svg +1 -17
  60. package/BookReader/icons/fullscreen_exit.svg +1 -17
  61. package/BookReader/icons/hamburger.svg +1 -15
  62. package/BookReader/icons/left-arrow.svg +1 -12
  63. package/BookReader/icons/magnify-minus.svg +1 -16
  64. package/BookReader/icons/magnify-plus.svg +1 -17
  65. package/BookReader/icons/magnify.svg +1 -15
  66. package/BookReader/icons/pause.svg +1 -23
  67. package/BookReader/icons/play.svg +1 -22
  68. package/BookReader/icons/playback-speed.svg +1 -34
  69. package/BookReader/icons/read-aloud.svg +1 -22
  70. package/BookReader/icons/review.svg +3 -22
  71. package/BookReader/icons/slider-toggle.svg +1 -0
  72. package/BookReader/icons/thumbnails.svg +1 -17
  73. package/BookReader/icons/voice.svg +1 -0
  74. package/BookReader/icons/volume-full.svg +1 -22
  75. package/BookReader/images/BRicons.svg +5 -94
  76. package/BookReader/images/books_graphic.svg +1 -177
  77. package/BookReader/images/hypothesis.ico +0 -0
  78. package/BookReader/images/icon_book.svg +1 -12
  79. package/BookReader/images/icon_bookmark.svg +1 -12
  80. package/BookReader/images/icon_experiment.svg +1 -0
  81. package/BookReader/images/icon_gear.svg +1 -14
  82. package/BookReader/images/icon_hamburger.svg +1 -20
  83. package/BookReader/images/icon_home.svg +1 -21
  84. package/BookReader/images/icon_info.svg +1 -11
  85. package/BookReader/images/icon_one_page.svg +1 -8
  86. package/BookReader/images/icon_pause.svg +1 -1
  87. package/BookReader/images/icon_play.svg +1 -1
  88. package/BookReader/images/icon_playback-rate.svg +1 -15
  89. package/BookReader/images/icon_search_button.svg +1 -8
  90. package/BookReader/images/icon_share.svg +1 -9
  91. package/BookReader/images/icon_skip-ahead.svg +1 -6
  92. package/BookReader/images/icon_skip-back.svg +2 -13
  93. package/BookReader/images/icon_speaker.svg +1 -18
  94. package/BookReader/images/icon_speaker_open.svg +1 -10
  95. package/BookReader/images/icon_thumbnails.svg +1 -12
  96. package/BookReader/images/icon_toc.svg +1 -5
  97. package/BookReader/images/icon_two_pages.svg +1 -9
  98. package/BookReader/images/marker_chap-off.svg +1 -11
  99. package/BookReader/images/marker_chap-on.svg +1 -11
  100. package/BookReader/images/marker_srch-on.svg +1 -11
  101. package/BookReader/images/translate.svg +1 -0
  102. package/BookReader/images/unviewable_page.png +0 -0
  103. package/BookReader/jquery-3.js +2 -0
  104. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  105. package/BookReader/plugins/plugin.archive_analytics.js +1 -172
  106. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  107. package/BookReader/plugins/plugin.autoplay.js +1 -165
  108. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  109. package/BookReader/plugins/plugin.chapters.js +19 -301
  110. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  111. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  112. package/BookReader/plugins/plugin.experiments.js +3 -0
  113. package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
  114. package/BookReader/plugins/plugin.experiments.js.map +1 -0
  115. package/BookReader/plugins/plugin.iframe.js +1 -74
  116. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  117. package/BookReader/plugins/plugin.iiif.js +2 -0
  118. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  119. package/BookReader/plugins/plugin.resume.js +1 -368
  120. package/BookReader/plugins/plugin.resume.js.map +1 -1
  121. package/BookReader/plugins/plugin.search.js +2 -1385
  122. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  123. package/BookReader/plugins/plugin.search.js.map +1 -1
  124. package/BookReader/plugins/plugin.text_selection.js +2 -1080
  125. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  126. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  127. package/BookReader/plugins/plugin.translate.js +3 -0
  128. package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
  129. package/BookReader/plugins/plugin.translate.js.map +1 -0
  130. package/BookReader/plugins/plugin.tts.js +2 -9193
  131. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
  132. package/BookReader/plugins/plugin.tts.js.map +1 -1
  133. package/BookReader/plugins/plugin.url.js +1 -269
  134. package/BookReader/plugins/plugin.url.js.map +1 -1
  135. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
  136. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  137. package/BookReader/plugins/translator-worker.js +2 -0
  138. package/BookReader/plugins/translator-worker.js.map +1 -0
  139. package/BookReader/silence.mp3 +0 -0
  140. package/BookReader/translator-worker.js +475 -0
  141. package/BookReader/webcomponents-bundle.js +3 -0
  142. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  143. package/BookReader/webcomponents-bundle.js.map +1 -0
  144. package/README.md +17 -4
  145. package/dist/esm/ia-bookreader.js +3 -0
  146. package/dist/esm/ia-bookreader.js.LICENSE.txt +17 -0
  147. package/dist/esm/ia-bookreader.js.map +1 -0
  148. package/dist/esm/plugins/plugin.archive_analytics.js +2 -0
  149. package/dist/esm/plugins/plugin.archive_analytics.js.map +1 -0
  150. package/dist/esm/plugins/plugin.autoplay.js +2 -0
  151. package/dist/esm/plugins/plugin.autoplay.js.map +1 -0
  152. package/dist/esm/plugins/plugin.chapters.js +2 -0
  153. package/dist/esm/plugins/plugin.chapters.js.map +1 -0
  154. package/dist/esm/plugins/plugin.experiments.js +2 -0
  155. package/dist/esm/plugins/plugin.experiments.js.map +1 -0
  156. package/dist/esm/plugins/plugin.iframe.js +2 -0
  157. package/dist/esm/plugins/plugin.iframe.js.map +1 -0
  158. package/dist/esm/plugins/plugin.iiif.js +2 -0
  159. package/dist/esm/plugins/plugin.iiif.js.map +1 -0
  160. package/dist/esm/plugins/plugin.resume.js +2 -0
  161. package/dist/esm/plugins/plugin.resume.js.map +1 -0
  162. package/dist/esm/plugins/plugin.search.js +2 -0
  163. package/dist/esm/plugins/plugin.search.js.map +1 -0
  164. package/dist/esm/plugins/plugin.text_selection.js +2 -0
  165. package/dist/esm/plugins/plugin.text_selection.js.map +1 -0
  166. package/dist/esm/plugins/plugin.translate.js +2 -0
  167. package/dist/esm/plugins/plugin.translate.js.map +1 -0
  168. package/dist/esm/plugins/plugin.tts.js +2 -0
  169. package/dist/esm/plugins/plugin.tts.js.map +1 -0
  170. package/dist/esm/plugins/plugin.url.js +2 -0
  171. package/dist/esm/plugins/plugin.url.js.map +1 -0
  172. package/dist/esm/plugins/plugin.vendor-fullscreen.js +2 -0
  173. package/dist/esm/plugins/plugin.vendor-fullscreen.js.map +1 -0
  174. package/jsconfig.json +18 -0
  175. package/package.json +113 -71
  176. package/src/BookReader/BookModel.js +92 -46
  177. package/src/BookReader/DragScrollable.js +233 -0
  178. package/src/BookReader/ImageCache.js +49 -16
  179. package/src/BookReader/Mode1Up.js +66 -365
  180. package/src/BookReader/Mode1UpLit.js +392 -0
  181. package/src/BookReader/Mode2Up.js +87 -1315
  182. package/src/BookReader/Mode2UpLit.js +786 -0
  183. package/src/BookReader/ModeAbstract.js +43 -0
  184. package/src/BookReader/ModeCoordinateSpace.js +29 -0
  185. package/src/BookReader/ModeSmoothZoom.js +312 -0
  186. package/src/BookReader/ModeThumb.js +29 -15
  187. package/src/BookReader/Navbar/Navbar.js +204 -84
  188. package/src/BookReader/PageContainer.js +120 -23
  189. package/src/BookReader/ReduceSet.js +2 -2
  190. package/src/BookReader/Toolbar/Toolbar.js +18 -40
  191. package/src/BookReader/events.js +3 -3
  192. package/src/BookReader/options.js +105 -18
  193. package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
  194. package/src/BookReader/utils/ScrollClassAdder.js +31 -0
  195. package/src/BookReader/utils/SelectionObserver.js +72 -0
  196. package/src/BookReader/utils/classes.js +1 -1
  197. package/src/BookReader/utils.js +136 -12
  198. package/src/BookReader.js +732 -1231
  199. package/src/BookReaderPlugin.js +52 -0
  200. package/src/assets/icons/magnify-minus.svg +3 -7
  201. package/src/assets/icons/magnify-plus.svg +3 -7
  202. package/src/assets/icons/slider-toggle.svg +1 -0
  203. package/src/assets/icons/voice.svg +1 -0
  204. package/src/assets/images/hypothesis.ico +0 -0
  205. package/src/assets/images/icon_experiment.svg +1 -0
  206. package/src/assets/images/translate.svg +1 -0
  207. package/src/assets/images/unviewable_page.png +0 -0
  208. package/src/assets/silence.mp3 +0 -0
  209. package/src/css/BookReader.scss +1 -5
  210. package/src/css/_BRBookmarks.scss +1 -1
  211. package/src/css/_BRComponent.scss +1 -1
  212. package/src/css/_BRicon.scss +8 -2
  213. package/src/css/_BRmain.scss +16 -3
  214. package/src/css/_BRnav.scss +74 -70
  215. package/src/css/_BRpages.scss +174 -42
  216. package/src/css/_BRsearch.scss +69 -30
  217. package/src/css/_BRtoolbar.scss +5 -5
  218. package/src/css/_TextSelection.scss +249 -25
  219. package/src/css/_colorbox.scss +2 -2
  220. package/src/css/_controls.scss +24 -7
  221. package/src/css/_icons.scss +8 -1
  222. package/src/{BookNavigator/assets → css}/button-base.js +2 -2
  223. package/src/css/icon_checkmark.js +9 -0
  224. package/src/css/sharedStyles.js +15 -0
  225. package/src/ia-bookreader/downloads/downloads-provider.js +81 -0
  226. package/src/{BookNavigator → ia-bookreader}/downloads/downloads.js +25 -5
  227. package/src/ia-bookreader/ia-bookreader.js +686 -0
  228. package/src/ia-bookreader/sharing.js +27 -0
  229. package/src/ia-bookreader/viewable-files.js +98 -0
  230. package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments-provider.js +17 -17
  231. package/src/{BookNavigator → ia-bookreader}/visual-adjustments/visual-adjustments.js +75 -67
  232. package/src/{BookNavigator → plugins}/bookmarks/bookmark-button.js +4 -3
  233. package/src/{BookNavigator/assets → plugins/bookmarks}/bookmark-colors.js +1 -1
  234. package/src/{BookNavigator → plugins}/bookmarks/bookmark-edit.js +43 -31
  235. package/src/{BookNavigator → plugins}/bookmarks/bookmarks-list.js +48 -49
  236. package/src/{BookNavigator → plugins}/bookmarks/bookmarks-loginCTA.js +3 -3
  237. package/src/plugins/bookmarks/bookmarks-provider.js +63 -0
  238. package/src/{BookNavigator → plugins/bookmarks}/delete-modal-actions.js +1 -1
  239. package/src/{BookNavigator → plugins}/bookmarks/ia-bookmarks.js +117 -68
  240. package/src/plugins/plugin.archive_analytics.js +84 -78
  241. package/src/plugins/plugin.autoplay.js +99 -104
  242. package/src/plugins/plugin.chapters.js +323 -205
  243. package/src/plugins/plugin.experiments.js +375 -0
  244. package/src/plugins/plugin.iframe.js +36 -37
  245. package/src/plugins/plugin.iiif.js +147 -0
  246. package/src/plugins/plugin.resume.js +54 -51
  247. package/src/plugins/plugin.text_selection.js +464 -219
  248. package/src/plugins/plugin.vendor-fullscreen.js +5 -5
  249. package/src/plugins/search/plugin.search.js +347 -397
  250. package/src/{BookNavigator → plugins}/search/search-provider.js +59 -27
  251. package/src/{BookNavigator → plugins}/search/search-results.js +105 -76
  252. package/src/plugins/search/utils.js +50 -0
  253. package/src/plugins/search/view.js +51 -69
  254. package/src/plugins/translate/TranslationManager.js +164 -0
  255. package/src/plugins/translate/plugin.translate.js +559 -0
  256. package/src/plugins/tts/AbstractTTSEngine.js +78 -49
  257. package/src/plugins/tts/FestivalTTSEngine.js +20 -30
  258. package/src/plugins/tts/PageChunk.js +117 -23
  259. package/src/plugins/tts/PageChunkIterator.js +11 -17
  260. package/src/plugins/tts/WebTTSEngine.js +132 -92
  261. package/src/plugins/tts/plugin.tts.js +341 -351
  262. package/src/plugins/tts/utils.js +76 -67
  263. package/src/plugins/url/UrlPlugin.js +213 -0
  264. package/src/plugins/{plugin.url.js → url/plugin.url.js} +54 -18
  265. package/src/util/TextSelectionManager.js +1464 -0
  266. package/src/util/browserSniffing.js +42 -1
  267. package/src/util/cache.js +20 -0
  268. package/src/util/docCookies.js +21 -2
  269. package/src/util/dom.js +88 -0
  270. package/src/util/generators.js +89 -0
  271. package/src/util/lit.js +15 -0
  272. package/src/util/strings.js +11 -0
  273. package/.babelrc +0 -12
  274. package/.dependabot/config.yml +0 -6
  275. package/.eslintrc.js +0 -50
  276. package/.gitattributes +0 -2
  277. package/.github/ISSUE_TEMPLATE/bug.md +0 -32
  278. package/.github/ISSUE_TEMPLATE/feature-request.md +0 -30
  279. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -15
  280. package/.github/workflows/node.js.yml +0 -37
  281. package/.github/workflows/npm-publish.yml +0 -47
  282. package/.testcaferc.json +0 -5
  283. package/BookReader/BookReader.js +0 -21613
  284. package/BookReader/BookReader.js.map +0 -1
  285. package/BookReader/bookreader-component-bundle.js +0 -14497
  286. package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
  287. package/BookReader/bookreader-component-bundle.js.map +0 -1
  288. package/BookReader/jquery-1.10.1.js +0 -108
  289. package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
  290. package/BookReader/plugins/plugin.menu_toggle.js +0 -369
  291. package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
  292. package/BookReader/plugins/plugin.mobile_nav.js +0 -335
  293. package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
  294. package/BookReaderDemo/BookReaderDemo.css +0 -41
  295. package/BookReaderDemo/BookReaderJSAdvanced.js +0 -115
  296. package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
  297. package/BookReaderDemo/BookReaderJSSimple.js +0 -55
  298. package/BookReaderDemo/IIIFBookReader.js +0 -207
  299. package/BookReaderDemo/assets/v5/Bookreader-logo-cool-grad.svg +0 -1
  300. package/BookReaderDemo/assets/v5/Bookreader-logo-flat.svg +0 -1
  301. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-cool-grad.png +0 -0
  302. package/BookReaderDemo/assets/v5/Bookreader-logo-hex-flat.png +0 -0
  303. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.png +0 -0
  304. package/BookReaderDemo/assets/v5/Bookreader-logo-lines.svg +0 -1
  305. package/BookReaderDemo/assets/v5/Bookreader-logo-warm.svg +0 -1
  306. package/BookReaderDemo/assets/v5/bookreader-logo-renders@1x.png +0 -0
  307. package/BookReaderDemo/assets/v5/bookreader-logo-renders@2x.png +0 -0
  308. package/BookReaderDemo/assets/v5/bookreader-v5-screenshot.png +0 -0
  309. package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
  310. package/BookReaderDemo/demo-advanced.html +0 -33
  311. package/BookReaderDemo/demo-autoplay.html +0 -38
  312. package/BookReaderDemo/demo-embed-iframe-src.html +0 -84
  313. package/BookReaderDemo/demo-embed.html +0 -26
  314. package/BookReaderDemo/demo-fullscreen-mobile.html +0 -36
  315. package/BookReaderDemo/demo-fullscreen.html +0 -33
  316. package/BookReaderDemo/demo-iiif.html +0 -34
  317. package/BookReaderDemo/demo-iiif.js +0 -26
  318. package/BookReaderDemo/demo-internetarchive.html +0 -74
  319. package/BookReaderDemo/demo-multiple.html +0 -43
  320. package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
  321. package/BookReaderDemo/demo-preview-pages.html +0 -1092
  322. package/BookReaderDemo/demo-simple.html +0 -34
  323. package/BookReaderDemo/demo-vendor-fullscreen.html +0 -36
  324. package/BookReaderDemo/immersion-1up.html +0 -64
  325. package/BookReaderDemo/immersion-mode.html +0 -35
  326. package/BookReaderDemo/toggle_controls.html +0 -53
  327. package/BookReaderDemo/view_mode.html +0 -39
  328. package/BookReaderDemo/viewmode-cycle.html +0 -41
  329. package/CHANGELOG.md +0 -499
  330. package/CONTRIBUTING.md +0 -7
  331. package/codecov.yml +0 -17
  332. package/index.html +0 -31
  333. package/karma.conf.js +0 -23
  334. package/screenshot.png +0 -0
  335. package/scripts/postversion.js +0 -10
  336. package/scripts/preversion.js +0 -14
  337. package/scripts/version.js +0 -26
  338. package/src/BookNavigator/BookModel.js +0 -14
  339. package/src/BookNavigator/BookNavigator.js +0 -459
  340. package/src/BookNavigator/assets/book-loader.js +0 -27
  341. package/src/BookNavigator/assets/icon_checkmark.js +0 -6
  342. package/src/BookNavigator/assets/icon_close.js +0 -3
  343. package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
  344. package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
  345. package/src/BookNavigator/assets/icon_sort_neutral.js +0 -5
  346. package/src/BookNavigator/assets/icon_volumes.js +0 -11
  347. package/src/BookNavigator/bookmarks/bookmarks-provider.js +0 -53
  348. package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
  349. package/src/BookNavigator/downloads/downloads-provider.js +0 -66
  350. package/src/BookNavigator/search/a-search-result.js +0 -55
  351. package/src/BookNavigator/volumes/volumes-provider.js +0 -83
  352. package/src/BookNavigator/volumes/volumes.js +0 -178
  353. package/src/BookReader/DebugConsole.js +0 -54
  354. package/src/BookReaderComponent/BookReaderComponent.js +0 -112
  355. package/src/ItemNavigator/ItemNavigator.js +0 -376
  356. package/src/ItemNavigator/providers/sharing.js +0 -33
  357. package/src/css/_MobileNav.scss +0 -194
  358. package/src/dragscrollable-br.js +0 -261
  359. package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
  360. package/src/plugins/plugin.mobile_nav.js +0 -287
  361. package/tests/BookReader/BookModel.test.js +0 -312
  362. package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
  363. package/tests/BookReader/DebugConsole.test.js +0 -25
  364. package/tests/BookReader/ImageCache.test.js +0 -150
  365. package/tests/BookReader/Mode1Up.test.js +0 -164
  366. package/tests/BookReader/Mode2Up.test.js +0 -247
  367. package/tests/BookReader/Navbar/Navbar.test.js +0 -169
  368. package/tests/BookReader/PageContainer.test.js +0 -115
  369. package/tests/BookReader/ReduceSet.test.js +0 -38
  370. package/tests/BookReader/Toolbar/Toolbar.test.js +0 -26
  371. package/tests/BookReader/utils/classes.test.js +0 -88
  372. package/tests/BookReader/utils.test.js +0 -109
  373. package/tests/BookReader.options.test.js +0 -39
  374. package/tests/BookReader.test.js +0 -301
  375. package/tests/e2e/README.md +0 -75
  376. package/tests/e2e/autoplay.test.js +0 -13
  377. package/tests/e2e/base.test.js +0 -35
  378. package/tests/e2e/helpers/base.js +0 -263
  379. package/tests/e2e/helpers/debug.js +0 -13
  380. package/tests/e2e/helpers/desktopSearch.js +0 -72
  381. package/tests/e2e/helpers/mobileSearch.js +0 -85
  382. package/tests/e2e/helpers/mockSearch.js +0 -93
  383. package/tests/e2e/helpers/rightToLeft.js +0 -29
  384. package/tests/e2e/ia-production/ia-prod-base.js +0 -17
  385. package/tests/e2e/models/BookReader.js +0 -11
  386. package/tests/e2e/models/Navigation.js +0 -56
  387. package/tests/e2e/rightToLeft.test.js +0 -20
  388. package/tests/e2e/viewmode.test.js +0 -37
  389. package/tests/karma/BookNavigator/book-navigator.test.js +0 -139
  390. package/tests/karma/BookNavigator/bookmarks/bookmark-edit.test.js +0 -133
  391. package/tests/karma/BookNavigator/bookmarks/bookmarks-list.test.js +0 -222
  392. package/tests/karma/BookNavigator/search/search-provider.test.js +0 -23
  393. package/tests/karma/BookNavigator/search/search-results.test.js +0 -240
  394. package/tests/karma/BookNavigator/sharing/sharing-provider.test.js +0 -40
  395. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
  396. package/tests/karma/BookNavigator/volumes/volumes-provider.test.js +0 -141
  397. package/tests/karma/BookNavigator/volumes/volumes.test.js +0 -98
  398. package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
  399. package/tests/plugins/plugin.archive_analytics.test.js +0 -23
  400. package/tests/plugins/plugin.autoplay.test.js +0 -52
  401. package/tests/plugins/plugin.chapters.test.js +0 -130
  402. package/tests/plugins/plugin.iframe.test.js +0 -42
  403. package/tests/plugins/plugin.mobile_nav.test.js +0 -66
  404. package/tests/plugins/plugin.resume.test.js +0 -98
  405. package/tests/plugins/plugin.text_selection.test.js +0 -203
  406. package/tests/plugins/plugin.url.test.js +0 -129
  407. package/tests/plugins/plugin.vendor-fullscreen.test.js +0 -65
  408. package/tests/plugins/search/plugin.search.test.js +0 -173
  409. package/tests/plugins/search/plugin.search.view.test.js +0 -106
  410. package/tests/plugins/tts/AbstractTTSEngine.test.js +0 -153
  411. package/tests/plugins/tts/FestivalTTSEngine.test.js +0 -59
  412. package/tests/plugins/tts/PageChunk.test.js +0 -57
  413. package/tests/plugins/tts/PageChunkIterator.test.js +0 -179
  414. package/tests/plugins/tts/WebTTSEngine.test.js +0 -126
  415. package/tests/plugins/tts/utils.test.js +0 -133
  416. package/tests/util/browserSniffing.test.js +0 -56
  417. package/tests/util/docCookies.test.js +0 -15
  418. package/tests/util/strings.test.js +0 -63
  419. package/tests/utils.js +0 -42
  420. package/webpack.config.js +0 -86
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack://@internetarchive/bookreader/./src/BookReader/BookModel.js","webpack://@internetarchive/bookreader/./src/BookReader/DebugConsole.js","webpack://@internetarchive/bookreader/./src/BookReader/ImageCache.js","webpack://@internetarchive/bookreader/./src/BookReader/Mode1Up.js","webpack://@internetarchive/bookreader/./src/BookReader/Mode2Up.js","webpack://@internetarchive/bookreader/./src/BookReader/ModeThumb.js","webpack://@internetarchive/bookreader/./src/BookReader/Navbar/Navbar.js","webpack://@internetarchive/bookreader/./src/BookReader/PageContainer.js","webpack://@internetarchive/bookreader/./src/BookReader/ReduceSet.js","webpack://@internetarchive/bookreader/./src/BookReader/Toolbar/Toolbar.js","webpack://@internetarchive/bookreader/./src/BookReader/events.js","webpack://@internetarchive/bookreader/./src/BookReader/options.js","webpack://@internetarchive/bookreader/./src/BookReader/utils.js","webpack://@internetarchive/bookreader/./src/BookReader/utils/classes.js","webpack://@internetarchive/bookreader/./src/dragscrollable-br.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/a-function.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/a-possible-prototype.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/add-to-unscopables.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/advance-string-index.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/an-instance.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/an-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-for-each.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-from.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-includes.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-iteration.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-method-is-strict.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-reduce.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-species-create.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/classof-raw.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/classof.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-property-descriptor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/create-property.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/define-iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/descriptors.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/document-create-element.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/dom-iterables.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-is-ios.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-is-node.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-user-agent.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/engine-v8-version.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/enum-bug-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/export.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/fails.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/flatten-into-array.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/function-bind-context.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-built-in.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-iterator-method.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-substitution.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/global.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/has.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/hidden-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/host-report-errors.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/html.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/ie8-dom-define.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/indexed-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/inspect-source.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/internal-state.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-array.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-pure.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/is-regexp.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterate.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterator-close.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterators-core.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/iterators.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/microtask.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-promise-constructor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-url.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/native-weak-map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/new-promise-capability.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/not-a-regexp.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-assign.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-create.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-define-properties.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-define-property.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-keys-internal.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-to-string.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/own-keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/path.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/perform.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/promise-resolve.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/redefine-all.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/redefine.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-exec.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-flags.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/require-object-coercible.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/same-value.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/set-global.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/set-species.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/set-to-string-tag.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/shared-key.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/shared-store.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/shared.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/species-constructor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-multibyte.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-repeat.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/task.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/this-number-value.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-absolute-index.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-indexed-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-integer.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-length.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-object.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-primitive.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/to-string-tag-support.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/uid.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/well-known-symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.concat.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.filter.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.find-index.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.find.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.flat-map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.from.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.includes.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.join.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.reduce.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.slice.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.function.name.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.math.log2.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.keys.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.to-string.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.promise.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.regexp.exec.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.includes.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.replace.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.search.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.split.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.symbol.description.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.symbol.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.url-search-params.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.url.js","webpack://@internetarchive/bookreader/./node_modules/jquery-colorbox/jquery.colorbox.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui-touch-punch/jquery.ui.touch-punch.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/effect.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/ie.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/keycode.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/version.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/widget.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/widgets/mouse.js","webpack://@internetarchive/bookreader/./node_modules/jquery-ui/ui/widgets/slider.js","webpack://@internetarchive/bookreader/./node_modules/regenerator-runtime/runtime.js","webpack://@internetarchive/bookreader/external \"jQuery\"","webpack://@internetarchive/bookreader/webpack/bootstrap","webpack://@internetarchive/bookreader/webpack/runtime/chunk loaded","webpack://@internetarchive/bookreader/webpack/runtime/compat get default export","webpack://@internetarchive/bookreader/webpack/runtime/define property getters","webpack://@internetarchive/bookreader/webpack/runtime/global","webpack://@internetarchive/bookreader/webpack/runtime/hasOwnProperty shorthand","webpack://@internetarchive/bookreader/webpack/runtime/make namespace object","webpack://@internetarchive/bookreader/webpack/runtime/node module decorator","webpack://@internetarchive/bookreader/webpack/runtime/jsonp chunk loading","webpack://@internetarchive/bookreader/./src/BookReader.js"],"names":["UNVIEWABLE_PAGE_URI","BookModel","br","reduceSet","ppi","options","DEFAULT_OPTIONS","_medianPageSize","_medianPageSizePixels","_getDataFlattenedCached","widths","heights","i","getNumLeafs","push","getPageWidth","getPageHeight","sort","width","Math","floor","length","height","pagesIterator","page","widthInches","heightInches","index","clamp","clampedIndex","pageNum","pageIndices","getPageIndices","undefined","indices","slice","pageIntStr","pageIndex","parseInt","err","getPageNum","numLeafs","_getDataFlattened","getPageProp","reduce","rotate","propName","fallbackValue","_getDataProp","pindex","pageProgression","getPageSide","leafNum","findIndex","d","pageString","leafMatch","exec","leafNumToIndex","getPageIndex","loop","PageModel","start","end","Infinity","combineConsecutiveUnviewables","max","min","getPage","isConsecutiveUnviewable","data","prevPageSide","unviewablesChunkStart","flattened","flatMap","spread","map","pageSide","viewable","unviewablesStart","prop","dataf","invalidIndex","isNaN","book","isViewable","_rawData","newViewableState","prev","findPrev","findNext","getPageURI","initialReduce","topReduce","decr","reduces","r","getURI","join","next","value","DebugConsole","currentRun","$log","$","document","body","prepend","$form","append","submit","ev","preventDefault","result","eval","find","val","logToScreen","_realLog","console","log","bind","args","window","onerror","html","JSON","stringify","$lastEntry","children","text","ImageCache","useSrcSet","Pow2ReduceSet","cache","defaultScale","cachedImages","sufficientImages","filter","x","loaded","bestReduce","e","_serveImageElement","cacheImg","idealMaxReduce","candidates","lowerResImages","higherRestImages","validReduce","cacheEntry","entries","$img","src","attr","getURISrcSet","one","Mode1Up","bookModel","$documentContainer","screenDPI","calcScreenDPI","LEAF_SPACING_IN","realWorldReduce","refs","$brContainer","startLeaf","currentIndex","$scrollContainer","empty","css","overflowX","overflowY","dragscrollable","bindGestures","resizePageView","jumpToIndex","updateBrClasses","inches","pageSpacing","leafTop","leafBottom","physicalInchesToDisplayPixels","top","bottom","scrollTop","scrollBottom","scrollRegion","pagesWithBounds","intersection","boundIntersection","cur","pagesToDisplay","Array","from","findIntersectingPages","documentContainerWidth","firstProperPage","updateFirstIndex","displayedIndices","includes","pageContainer","_createPageContainer","update","dimensions","left","$container","appendTo","notInArray","remove","enableSearch","updateSearchHilites","updateToolbarZoom","updateNavIndexThrottled","pageX","pageY","noAnimate","prevCurrentIndex","abs","offset","getPageTop","leafLeft","clientHeight","padding","clientWidth","scrollLeft","animating","stop","animate","direction","nextReductionFactor","nextReduce","onePage","reductionFactors","autofit","removeSearchHilites","widthPadding","availableWidth","medianWidthInches","getMedianPageSizeInches","medianPageWidth","availableHeight","innerHeight","medianHeightInches","medianPageHeight","autoWidthReduce","getAutofitWidth","concat","getAutofitHeight","_reduceSort","viewWidth","oldScrollTop","oldPageViewHeight","oldPageViewWidth","scrollRatio","oldCenterX","oldCenterY","centerY","centerX","fudgeFactor","oldLeafTop","oldViewDimensions","calculateViewDimensions","calculateReductionFactors","reductionFactor","viewDimensions","newCenterX","newCenterY","sizeX","sizeY","drawLeafs","leafSpacing","pageWidth","bound1","bound2","intersect","boundingBox","Mode2Up","leafEdgeL","leafEdgeR","pageContainers","twoPage","currentIndexL","currentIndexR","flipBackToIndex","flipFwdToIndex","element","handler","unbind","$twoPageViewEl","$brTwoPageView","indexL","indexR","createPageContainer","leftLeafCss","rightLeafCss","setMouseHandlers","trigger","stopFlipAnimations","pageScale","oldCenter","getViewCenter","drawNewSpread","prepareTwoPageView","percentageX","percentageY","resizeBRcontainer","calculateSpreadSize","mainContainerCss","centerView","coverDiv","spreadCoverCss","$spreadLayers","leafEdgeRCss","leafEdgeLCss","spineCss","centerPercentageX","centerPercentageY","startingReduce","startingIndices","targetLeaf","firstIndex","firstDisplayableIndex","lastDisplayableIndex","currentSpreadIndices","getSpreadIndices","sameReducer","sameStart","hasNewDisplayPagesOrDimensions","prunePageContainers","prefetch","totalWidth","totalHeight","createElement","className","div","preparePopUp","twoPagePopUp","zIndex","hide","leafEdges","$leafEdge","jumpIndexForPageX","jumpIndexForLeftEdgePageX","leftOffset","jumpIndexForRightEdgePageX","on","show","EVENTS","jumpIndex","getPageName","secondIndex","spreadSize","getIdealSpreadSize","getSpreadSizeFromReduce","scaledWL","scaledWR","edgeWidth","totalLeafEdgeWidth","leafEdgeWidthL","leafEdgeWidth","leafEdgeWidthR","bookCoverDivWidth","coverWidth","bookCoverDivHeight","coverInternalPadding","leftGutterOffset","gutterOffsetForIndex","leftWidthFromCenter","rightWidthFromCenter","largestWidthFromCenter","coverExternalPadding","middle","gutter","bookCoverDivLeft","bookCoverDivTop","bookSpineDivHeight","bookSpineDivLeft","bookSpineDivWidth","bookSpineDivTop","ideal","canon5Dratio","first","_getPageHeight","_getPageWidth","second","firstIndexRatio","secondIndexRatio","ratio","maxLeafEdgeWidth","widthOutsidePages","heightOutsidePages","round","nativeWidth","nativeHeight","isZoomedIn","getAutofitReduce","warn","constMode1up","mode","leafEdgeTmp","alert","minDisplayedIndex","previousIndices","prepareFlipLeftToRight","flipLeftToRight","prepareFlipRightToLeft","flipRightToLeft","newIndexL","newIndexR","addClass","leftLeaf","oldLeafEdgeWidthL","newLeafEdgeWidthL","leafEdgeTmpW","currWidthL","newWidthL","newWidthR","leftEdgeTmpLeft","right","flipSpeed","resizeSpread","animationFinishedCallback","removeClass","textSelectionPlugin","stopPageFlip","fetch","maxDisplayedIndex","nextPage","nextIndices","oldLeafEdgeWidthR","newLeafEdgeWidthR","scaledW","speed","which","self","protected","setClickHandler","prevL","prevR","leftCSS","rightCSS","nextL","nextR","totalPageWidth","center","containerOffset","viewOffset","containerClientWidth","intoViewX","viewHeight","containerClientHeight","intoViewY","flipAreaWidth","pageL","pageT","ADJACENT_PAGES_TO_LOAD","lowPage","highPage","position","baseLeafCss","heightCss","border","visibility","ModeThumb","seekIndex","leafHeight","rightPos","bottomPos","maxRight","currentRow","leafIndex","leafMap","seekTop","leafWidth","thumbWidth","thumbPadding","leafs","num","$brPageViewEl","pageViewBuffer","rowsToDisplay","imagesToDisplay","leastVisible","mostVisible","topInView","bottomInView","middleInView","firstRow","lastRow","thumbRowBuffer","row","displayedRows","leaf","idealReduce","nearestFactor2","thumbReduce","event","suppressFragmentChange","switchMode","nextModeID","viewModeOrder","shift","updateViewModeButton","stopPropagation","imgPlaceholder","imageCache","image","$parent","parent","oldColumns","thumbColumns","prepare","thumbnailColumns","DEFAULT_THUMBNAIL_WIDTH","idealThumbnailWidth","getThumbnailWidth","rowHeight","Navbar","$root","$nav","maxPageNum","minimumControls","maximumControls","controlName","option","controls","visible","template","label","iconClassName","controlFor","viewModeOptions","viewmode","viewModes","title","constMode2up","constModeThumb","excludedModes","m","currentModeIndex","indexOf","$button","off","newViewMode","nextViewMode","currentTarget","currentViewModeButton","iconClass","tooltipText","bookType","showMinimumNavbarControls","showMaximumNavbarControls","forEach","control","querySelector","classList","add","navbarTitle","isRTL","bookFlipLeft","bookFlipRight","$BRfooter","$BRnav","_renderControls","$br","$slider","slider","range","ui","updateNavPageNum","_bindViewModeButton","thisLink","location","replace","logoHtml","showLogo","logoURL","bookTitle","pageType","pageNumVal","getNavPageNumHtml","getNavPageNumString","pageIsAsserted","bookLengthLabel","PageContainer","isProtected","loadingImage","alreadyLoaded","imageLoaded","nextBestLoadedReduce","getBestLoadedReduce","prependTo","backgroundLayers","target","IntegerReduceSet","n","log2","NAMED_REDUCE_SETS","pow2","integer","Toolbar","$BRtoolbar","$titleSectionEl","bookUrl","enableBookTitleLink","href","bookUrlTitle","bookUrlText","buildToolbarElement","canSwitchToMode","blankShareDiv","blankInfoDiv","buildInfoDiv","buildShareDiv","colorbox","inline","opacity","onLoad","toUpperCase","toFixed","$shareDiv","pageView","bookView","embedHtml","getEmbedCode","form","parents","params","frameWidth","frameHeight","select","click","param","u","_getSocialShareUrl","url","createPopup","encodeURI","shareThisPage","protocol","hostname","pathname","$infoDiv","$leftCol","thumbnail","escapeHTML","$rightCol","metadata","extraValueClass","escapedValue","moreInfoText","bookUrlMoreInfo","$footer","$children","outerHeight","name","dualScreenLeft","screenLeft","screen","dualScreenTop","screenTop","win_w","innerWidth","documentElement","win_h","opts","open","fragmentChange","PostInit","resize","navToggled","fullscreenToggled","zoomOut","zoomIn","mobileNavOpen","defaults","uiAutoHide","thumbMaxLoading","showToolbar","showNavbar","navBarTitle","imagesBaseURL","onePageMinBreakpoint","bookLanguage","enableExperimentalControls","el","plugins","textSelection","vars","bookLeft","bookRight","fullScreen","startFullscreen","autoResize","disableSelect","jObject","onselectstart","cssPercentage","array","getIFrameDocument","iframe","outer","contentWindow","contentDocument","str","decodeURIComponentPlus","decodeURIComponent","encodeURIComponentPlus","encodeURIComponent","debounce","func","wait","immediate","timeout","context","arguments","later","apply","callNow","clearTimeout","setTimeout","throttle","fn","threshold","delay","last","deferTimer","Date","now","polyfillCustomEvent","CustomEvent","PolyfilledCustomEvent","eventName","bubbles","cancelable","detail","createEvent","initCustomEvent","sleep","ms","Promise","res","style","appendChild","dpi","offsetWidth","removeChild","exposeOverrideable","FromClass","fromMethod","fromTransform","ToClass","toMethod","toTransform","wrapper","prototype","Object","defineProperty","get","set","overrideFn","newThis","append_namespace","string_of_events","ns","pieces","split","ret","left_top","y","clientX","clientY","screenX","screenY","targetTouches","originalEvent","error","type","handling_element","settings","extend","dragSelector","acceptPropagatedEvent","dragstart","dragcontinue","dragend","dragMinDistance","namespace","scrollWindow","shouldAbort","isTouchDevice","navigator","dragContinueHandlerProxy","dragscroll","dragStartHandler","firstCoord","lastCoord","dragContinueHandler","dragEndHandler","each","idx","addEventListener","lt","delta","scrollTarget","scrollable","removeEventListener","distance","stopImmediatePropagation","removedragscrollable","andSelf","jQuery","toString","init","BookReader","overrides","defaultOptions","optionOverrides","setup","version","PACKAGE_JSON","constNavAnimationDuration","constResizeAnimationDuration","eventNames","prevReadMode","imgs","prefetchedImgs","flipDelay","lastDisplayableIndex2up","isFullscreenActive","lastScroll","titleLeaf","popup","_models","_components","navbar","toolbar","_modes","mode1Up","mode2Up","modeThumb","_overrideable","newVal","util","utils","extendParams","newParams","modifiedNewParams","parsePageString","initParams","pageFound","defaultParams","paramsFromFragment","enablePageResume","getResumeValue","enableUrlPlugin","urlParams","urlReadFragment","hasHashURL","keys","urlReadHashFragment","urlMode","goToFirstResult","initialSearchTerm","search","searchTerm","searchParams","URLSearchParams","readQueryString","getLocationSearch","getLocationHash","hash","queryString","found","getInitialMode","windowWidth","nextMode","enableMobileNav","initComplete","initEmbedNavbar","initToolbar","initNavbar","switchNavbarControls","updateFromParams","initUIStrings","bindNavigationHandlers","setupKeyListeners","getTime","drawLeafsThrottled","toggleFullscreen","props","dispatchEvent","composed","callback","resizePageView1up","centerPageView","prepareThumbnailView","twoPageGetViewCenter","doRecenter","twoPageCenterView","KEY_PGUP","KEY_PGDOWN","KEY_END","KEY_HOME","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_MINUS","KEY_MINUS_F","KEY_NUMPAD_SUBTRACT","KEY_EQUAL","KEY_EQUAL_F","KEY_NUMPAD_ADD","keydown","keyboardNavigationIsDisabled","keyCode","zoom","drawLeafsOnePage","drawLeafsThumbnail","drawLeafsTwoPage","jElement","numTouches","touches","scale","exposeOverrideableMethod","lazyLoadThumbnails","lazyLoadImage","zoomThumb","zoom1up","zoom2up","getToolBarHeight","getFooterHeight","scrollWidth","quantizeReduce","quantized","newDistance","currentReduce","newReduceIndex","lastIndex","autoMatch","rf","choice","match","a","b","jumpToPage","_isIndexDisplayed","alreadyInPreview","newIndex","getPrevReadMode","onePageCalculateReductionFactors","prepareOnePageView","setSpreadIndices","twoPageCalculateReductionFactors","modeToClass","isFullscreen","bindKeyboardControls","exitFullScreen","enterFullscreen","_fullscreenCloseHandler","keyup","canShow2up","rightmost","leftmost","isOnFrontPage","scrollDown","inArray","onePageGetAutofitHeight","_scrollAmount","scrollUp","prefetchImg","fetchNow","pruneUnusedImgs","onePageGetAutofitWidth","onePageGetPageTop","onePageCalculateViewDimensions","centerX1up","centerY1up","twoPageGetAutofitReduce","setHilightCss2UP","setClickHandler2UP","prepareTwoPagePopUp","twoPageIsZoomedIn","twoPageSetCursor","setMouseHandlers2UP","getPageWidth2UP","twoPageGutter","twoPageTop","twoPageCoverWidth","twoPageFlipAreaHeight","twoPageFlipAreaWidth","twoPageFlipAreaTop","twoPageLeftFlipAreaLeft","twoPageRightFlipAreaLeft","tagName","Class","classKey","method","brMethod","classToBr","cls","brToClass","updateNavIndex","updateNavIndexDebounced","jIcons","navigationControls","book_left","book_right","book_up","book_down","book_top","book_bottom","book_leftmost","book_rightmost","onepg","thumb","twopg","zoom_in","zoom_out","full","$brNavCntlBtmEl","$brNavCntlTopEl","promises","hasClass","promise","when","done","mouseover","mouseleave","initSwipeData","navigationMousemoveHandler","swipeMousedownHandler","bindMozTouchHandlers","unbindNavigationHandlers","navkey","hideNavigation","showNavigation","_swipe","mightBeSwiping","didSwipe","mightBeDraggin","didDrag","startTime","startX","startY","lastX","lastY","deltaX","deltaY","deltaT","swipeMouseupHandler","swipeMousemoveHandler","mightBeDragging","returnValue","cancelBubble","absX","absY","minSwipeLength","maxSwipeTime","navigationIsVisible","toolpos","tooltop","setNavigationView","brSetNavigationView","animationLength","animationType","resizePageContainer","toolbarHeight","navbarHeight","getMedianPageSize","enableThemesPlugin","theme","updateTheme","_getPageURISrcset","_getPageURI","showProgressPopup","msg","onCloseCallback","closeButton","setAttribute","icon","removeProgressPopup","bar","msgdiv","innerHTML","titles","reloadImages","elem","complete","naturalHeight","$heightEl","paramsFromCurrent","fragment","substr","oldStyleLeafNum","urlArray","urlHash","fragmentFromParams","separator","fragments","queryStringFromParams","currQueryString","selector","curCSS"],"mappings":"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AC,uEAAqB;AAC1C,+BAA+B,sJAA4D;AAC3F,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,gCAAgC,mBAAO,CAAC,iHAA0C;AAClF,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mDAAmD;AACnD,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrDA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;ACNa;AACb;AACA,mBAAO,CAAC,mFAA2B;AACnC,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,YAAY,mBAAO,CAAC,qEAAoB;AACxC,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;;AAEA,2BAA2B,mBAAmB,aAAa;;AAE3D;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,4CAA4C;AAC5E;AACA;AACA,2BAA2B,uCAAuC;AAClE;AACA;;AAEA;AACA;;;;;;;;;;;;AC7Ha;AACb,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,WAAW,mBAAO,CAAC,qGAAoC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvBA,WAAW,mBAAO,CAAC,mEAAmB;AACtC,aAAa,mBAAO,CAAC,uEAAqB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACVA,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,gBAAgB,mBAAO,CAAC,6EAAwB;AAChD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,wBAAwB,mBAAO,CAAC,iGAAkC;;AAElE;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACRA,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA,yCAAyC,IAAI;AAC7C,kDAAkD,IAAI;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACvCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;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A8B,aAAa;;AAE3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC5CA;;;;;;;;;;;ACAA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,+BAA+B,sJAA4D;AAC3F,gBAAgB,4FAAgC;AAChD,aAAa,mBAAO,CAAC,qFAA4B;AACjD,sBAAsB,mBAAO,CAAC,uGAAqC;AACnE,cAAc,mBAAO,CAAC,uFAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;AC/EA,aAAa,mBAAO,CAAC,uEAAqB;;AAE1C;;;;;;;;;;;ACFA,cAAc,mBAAO,CAAC,uFAA6B;AACnD,iBAAiB,mBAAO,CAAC,6FAAgC;AACzD,YAAY,mBAAO,CAAC,qEAAoB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACXD,YAAY,mBAAO,CAAC,qEAAoB;AACxC,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,cAAc,mBAAO,CAAC,yEAAsB;;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AChCD,aA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AY;AACZ;AACA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,2BAA2B,mBAAO,CAAC,uGAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACXA,eAAe,mBAAO,CAAC,2EAAuB;;AAE9C;AACA;AACA;AACA;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,UAAU,mBAAO,CAAC,iEAAkB;AACpC,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,0BAA0B,mBAAO,CAAC,uFAA6B;;AAE/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;;;ACvCD,cAAc,mBAAO,CAAC,sEAAe;AACrC,iBAAiB,mBAAO,CAAC,sEAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACpBa;AACb,kBAAkB,mBAAO,CAAC,wEAAgB;AAC1C,oBAAoB,mBAAO,CAAC,0FAAyB;AACrD,aAAa,mBAAO,CAAC,4DAAU;;AAE/B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrFa;AACb,eAAe,mBAAO,CAAC,6EAAwB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfa;;AAEb,YAAY,mBAAO,CAAC,0DAAS;;AAE7B;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB;AACpB;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACtBD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACNA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;;;;;;;;;;;ACTa;AACb,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,kBAAkB,mBAAO,CAAC,iFAA0B;;AAEpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,KAAK;AACL;AACA;;;;;;;;;;;AClBA,qBAAqB,8HAAgD;AACrE,UAAU,mBAAO,CAAC,iEAAkB;AACpC,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA,uCAAuC,iCAAiC;AACxE;AACA;;;;;;;;;;;ACVA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,UAAU,mBAAO,CAAC,iEAAkB;;AAEpC;;AAEA;AACA;AACA;;;;;;;;;;;ACPA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA,kDAAkD;;AAElD;;;;;;;;;;;ACNA,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,YAAY,mBAAO,CAAC,mFAA2B;;AAE/C;AACA,qEAAqE;AACrE,CAAC;AACD;AACA;AACA;AACA,CAAC;;;;;;;;;;;ACTD,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACZA,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1Ba;AACb;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,oBAAoB;AACpB,mCAAmC;AACnC,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA,OAAO;AACP,uCAAuC;AACvC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mCAAmC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC,mCAAmC;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oBAAoB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvKa;AACb,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM;AACd;AACA;;;;;;;;;;;ACbA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,YAAY,mBAAO,CAAC,qEAAoB;AACxC,WAAW,mBAAO,CAAC,qGAAoC;AACvD,WAAW,mBAAO,CAAC,mEAAmB;AACtC,oBAAoB,mBAAO,CAAC,yGAAsC;AAClE,aAAa,mBAAO,CAAC,qFAA4B;AACjD,cAAc,mBAAO,CAAC,uFAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC1GA,cAAc,mBAAO,CAAC,iFAA0B;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACTA,gBAAgB,mBAAO,CAAC,+EAAyB;;AAEjD;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;;;;;;;;;;;ACXA;AACA,oBAAoB,mBAAO,CAAC,uFAA6B;AACzD,6BAA6B,mBAAO,CAAC,2GAAuC;;AAE5E;AACA;AACA;;;;;;;;;;;ACNA;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AED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,cAAc;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK,GAAG,eAAe;;AAEvB;AACA,wCAAwC,+CAA+C;AACvF;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,GAAG,2CAA2C;AAC9C;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,GAAG,8CAA8C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,yDAAyD;AAC5D;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,2DAA2D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC5XY;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,WAAW,mBAAO,CAAC,iFAA0B;;AAE7C;AACA;AACA,GAAG,2DAA2D;AAC9D;AACA,CAAC;;;;;;;;;;;;ACRY;AACb,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,YAAY,mBAAO,CAAC,qEAAoB;AACxC,YAAY,mBAAO,CAAC,mFAA2B;;AAE/C;AACA;AACA;;AAEA,qCAAqC,6BAA6B,0BAA0B,YAAY,EAAE;AAC1G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,GAAG,eAAe;AACrB;;;;;;;;;;;;ACxBa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,2BAA2B,mBAAO,CAAC,yGAAsC;;AAEzE;AACA;AACA,GAAG,2EAA2E;AAC9E;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACbY;AACb,aAAa,uHAA+C;AAC5D,0BAA0B,mBAAO,CAAC,uFAA6B;AAC/D,qBAAqB,mBAAO,CAAC,yFAA8B;;AAE3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV,CAAC;;;;;;;;;;;;AC5BY;AACb,oCAAoC,mBAAO,CAAC,+HAAiD;AAC7F,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,yBAAyB,mBAAO,CAAC,mGAAmC;AACpE,sBAAsB,mBAAO,CAAC,2FAA+B;AAC7D,iBAAiB,mBAAO,CAAC,mGAAmC;;AAE5D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACjGY;AACb,oCAAoC,mBAAO,CAAC,+HAAiD;AAC7F,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,iBAAiB,mBAAO,CAAC,mGAAmC;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACjCY;AACb,oCAAoC,mBAAO,CAAC,+HAAiD;AAC7F,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,6BAA6B,mBAAO,CAAC,2GAAuC;AAC5E,yBAAyB,mBAAO,CAAC,iGAAkC;AACnE,yBAAyB,mBAAO,CAAC,mGAAmC;AACpE,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,mGAAmC;AAChE,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,oBAAoB,mBAAO,CAAC,qGAAoC;;AAEhE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;ACrID;AACA;AACa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,UAAU,mBAAO,CAAC,iEAAkB;AACpC,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,qBAAqB,8HAAgD;AACrE,gCAAgC,mBAAO,CAAC,iHAA0C;;AAElF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,KAAK,6BAA6B;AAClC;AACA,GAAG;AACH;;;;;;;;;;;ACjDA,4BAA4B,mBAAO,CAAC,2GAAuC;;AAE3E;AACA;AACA;;;;;;;;;;;;ACJa;AACb,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,oBAAoB,mBAAO,CAAC,qFAA4B;AACxD,wBAAwB,mBAAO,CAAC,6FAAgC;AAChE,YAAY,mBAAO,CAAC,qEAAoB;AACxC,UAAU,mBAAO,CAAC,iEAAkB;AACpC,cAAc,mBAAO,CAAC,2EAAuB;AAC7C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,+BAA+B,mBAAO,CAAC,+GAAyC;AAChF,yBAAyB,mBAAO,CAAC,qFAA4B;AAC7D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,gCAAgC,mBAAO,CAAC,qHAA4C;AACpF,kCAAkC,mBAAO,CAAC,uIAAqD;AAC/F,kCAAkC,mBAAO,CAAC,yHAA8C;AACxF,qCAAqC,mBAAO,CAAC,+HAAiD;AAC9F,2BAA2B,mBAAO,CAAC,uGAAqC;AACxE,iCAAiC,mBAAO,CAAC,qHAA4C;AACrF,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,UAAU,mBAAO,CAAC,iEAAkB;AACpC,sBAAsB,mBAAO,CAAC,6FAAgC;AAC9D,mCAAmC,mBAAO,CAAC,6GAAwC;AACnF,4BAA4B,mBAAO,CAAC,2GAAuC;AAC3E,qBAAqB,mBAAO,CAAC,6FAAgC;AAC7D,0BAA0B,mBAAO,CAAC,uFAA6B;AAC/D,eAAe,sHAA+C;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,sBAAsB,yCAAyC,WAAW,IAAI;AAC9E,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;AACA,KAAK;AACL;AACA,mDAAmD,iDAAiD;AACpG,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,kCAAkC;AAChH;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gFAAgF,eAAe;AAC/F;AACA;AACA;;AAEA,GAAG,yEAAyE;AAC5E;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED,GAAG,qDAAqD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,mBAAmB,EAAE;AAC/C,0BAA0B,oBAAoB;AAC9C,CAAC;;AAED,GAAG,2EAA2E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,uDAAuD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,GAAG,0DAA0D,kCAAkC,EAAE,GAAG;AACpG;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY,QAAQ;AACzC;AACA,0CAA0C;AAC1C,GAAG;;AAEH,KAAK,4DAA4D;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtTA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,mBAAmB,mBAAO,CAAC,qFAA4B;AACvD,cAAc,mBAAO,CAAC,uFAA6B;AACnD,kCAAkC,mBAAO,CAAC,uHAA6C;;AAEvF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;ACdA,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,mBAAmB,mBAAO,CAAC,qFAA4B;AACvD,2BAA2B,mBAAO,CAAC,yFAA8B;AACjE,kCAAkC,mBAAO,CAAC,uHAA6C;AACvF,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCa;AACb;AACA,mBAAO,CAAC,yFAA8B;AACtC,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,iBAAiB,mBAAO,CAAC,mFAA2B;AACpD,qBAAqB,mBAAO,CAAC,+EAAyB;AACtD,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,qBAAqB,mBAAO,CAAC,6FAAgC;AAC7D,gCAAgC,mBAAO,CAAC,iHAA0C;AAClF,0BAA0B,mBAAO,CAAC,uFAA6B;AAC/D,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,aAAa,mBAAO,CAAC,iEAAkB;AACvC,WAAW,mBAAO,CAAC,qGAAoC;AACvD,cAAc,mBAAO,CAAC,yEAAsB;AAC5C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,eAAe,mBAAO,CAAC,6EAAwB;AAC/C,aAAa,mBAAO,CAAC,qFAA4B;AACjD,+BAA+B,mBAAO,CAAC,+GAAyC;AAChF,kBAAkB,mBAAO,CAAC,mFAA2B;AACrD,wBAAwB,mBAAO,CAAC,iGAAkC;AAClE,sBAAsB,mBAAO,CAAC,6FAAgC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+EAA+E,EAAE,EAAE,cAAc;AACjG;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kDAAkD;AAC1E;AACA,OAAO,6DAA6D,kCAAkC;AACtG,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uBAAuB;AACrD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAmB;;AAEvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC,GAAG,mBAAmB;;AAEvB;;AAEA,GAAG,wCAAwC;AAC3C;AACA,CAAC;;AAED;AACA;AACA;AACA,KAAK,+CAA+C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;AC1Va;AACb;AACA,mBAAO,CAAC,2FAA+B;AACvC,QAAQ,mBAAO,CAAC,uEAAqB;AACrC,kBAAkB,mBAAO,CAAC,iFAA0B;AACpD,qBAAqB,mBAAO,CAAC,+EAAyB;AACtD,aAAa,mBAAO,CAAC,uEAAqB;AAC1C,uBAAuB,mBAAO,CAAC,2GAAuC;AACtE,eAAe,mBAAO,CAAC,2EAAuB;AAC9C,iBAAiB,mBAAO,CAAC,iFAA0B;AACnD,UAAU,mBAAO,CAAC,iEAAkB;AACpC,aAAa,mBAAO,CAAC,qFAA4B;AACjD,gBAAgB,mBAAO,CAAC,+EAAyB;AACjD,aAAa,uHAA+C;AAC5D,cAAc,mBAAO,CAAC,2GAAuC;AAC7D,qBAAqB,mBAAO,CAAC,6FAAgC;AAC7D,4BAA4B,mBAAO,CAAC,iGAAkC;AACtE,0BAA0B,mBAAO,CAAC,uFAA6B;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,wCAAwC;AACxC;AACA,CAAC;AACD,oCAAoC;AACpC,oBAAoB,QAAQ;AAC5B,CAAC;AACD,wCAAwC;AACxC,oBAAoB;AACpB,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,yBAAyB,6BAA6B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAmB;;AAEvB;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAmB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,GAAG,4DAA4D;AAC/D;AACA,CAAC;;;;;;;;;;;;AC7+BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,QAAQ,KAAK,MAAM;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;;AAGF;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,yBAAyB;;AAEzB;;AAEA;AACA,cAAc,iDAAiD;;AAE/D,kDAAkD,UAAU,iBAAiB;AAC7E,kBAAkB,oBAAoB;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,4BAA4B;AAC7C;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;AACJ,8BAA8B;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAqB;AACpE,+CAA+C,iBAAiB;AAChE,oDAAoD,sBAAsB;AAC1E;AACA;;AAEA,+CAA+C,kBAAkB;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB;;AAE1C,qDAAqD,cAAc,mBAAmB,cAAc,gBAAgB;;AAEpH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,sBAAsB;;AAElC;AACA;;AAEA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B,GAAG;AACH;AACA;AACA,aAAa,qBAAqB;AAClC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA,YAAY,yDAAyD;;AAErE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,kBAAkB;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;;AAEA,gBAAgB,mBAAmB;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,2EAA2E;AACnF,QAAQ,oBAAoB;AAC5B;;AAEA;;AAEA;;AAEA,gBAAgB,gBAAgB;;AAEhC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,mBAAmB;AACnB;AACA,qDAAqD,QAAQ,wBAAwB,MAAM;AAC3F;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,KAAK;AACL,IAAI;;AAEJ;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC,CAAC,MAAM;;;;;;;;;;;;AChlCR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,CAAC,EAAE,MAAM,E;;;;;;;;;;ACnLT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAQ,EAAE,2CAAQ,EAAE,8EAAW,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AAC9C,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,IAAI,YAAY,IAAI,YAAY,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;;AAEJ;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB;AACxB;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,MAAM,qBAAqB;AAC3B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,iBAAiB,kBAAkB,IAAI,qBAAqB;AAC5D;AACA;AACA,IAAI;;AAEJ;AACA;AACA,MAAM,qBAAqB;AAC3B;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,uBAAuB;AACzC,kBAAkB,uBAAuB;AACzC,IAAI;AACJ;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;AAED;;AAEA,CAAC;;;;;;;;;;;AClmDD;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAQ,EAAE,2CAAQ,EAAE,8EAAW,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AAC9C,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;AACA;AACA,CAAC;;;;;;;;;;;ACdD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAQ,EAAE,2CAAQ,EAAE,8EAAW,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AAC9C,EAAE,MAAM,EAIN;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;AC5CD;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAQ,EAAE,2CAAQ,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AACjC,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;;AAEA;;AAEA,CAAC;;;;;;;;;;;AChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAQ,EAAE,2CAAQ,EAAE,8EAAW,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AAC9C,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,cAAc,+BAA+B;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,0BAA0B;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA,yBAAyB;;AAEzB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;;AAEA,8CAA8C,OAAO,WAAW;AAChE;AACA;AACA;AACA;AACA,oDAAoD;AACpD,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,4BAA4B,kBAAkB;AAC9C,EAAE;;AAEF;AACA,4BAA4B,iBAAiB;AAC7C,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,oBAAoB;AACnC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kCAAkC;AAC3C;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,CAAC;;AAED;;AAEA,CAAC;;;;;;;;;;;AC5tBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAQ;AACV,GAAG,2CAAQ;AACX,GAAG,qEAAO;AACV,GAAG,+EAAY;AACf,GAAG,6EAAW;AACd,GAAG,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AACd,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA,wCAAwC;AACxC,uCAAuC;AACvC,uCAAuC;AACvC,yCAAyC,aAAa;AACtD,CAAC;;AAED,CAAC;;;;;;;;;;;ACjOD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAA0C;;AAEhD;AACA,EAAE,iCAAQ;AACV,GAAG,2CAAQ;AACX,GAAG,kFAAS;AACZ,GAAG,+EAAY;AACf,GAAG,+EAAY;AACf,GAAG,6EAAW;AACd,GAAG,oCAAE,OAAO;AAAA;AAAA;AAAA,kGAAE;AACd,EAAE,MAAM,EAIN;AACF,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,iBAAiB;AACpD;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,yCAAyC,kBAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA,kBAAkB,iCAAiC;AACnD;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;;;;;;;;;;;AC/uBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,CAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC3uBA,wB;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA,8BAA8B,wCAAwC;WACtE;WACA;WACA;WACA;WACA,gBAAgB,qBAAqB;WACrC;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC,mHAAmH,gDAAgD,EAAE;WACrK;WACA,IAAI;WACJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,E;;;;;WC5BA;WACA;WACA;WACA,cAAc,0BAA0B,EAAE;WAC1C,cAAc,eAAe;WAC7B,gCAAgC,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA,CAAC,I;;;;;WCPD,6CAA6C,wDAAwD,E;;;;;WCArG;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;WCNA;WACA;WACA;WACA;WACA,E;;;;;WCJA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA,6CAA6C,uCAAuC;;WAEpF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,oBAAoB;WAC1B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA,4G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CAGA;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;AACA;;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI/O,QAAQ,CAACgP,QAAT,GAAoBhR,OAApB,CAA4B,wBAA5B,KAAyD,CAA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","file":"BookReader.js","sourcesContent":["// @ts-check\nimport { DEFAULT_OPTIONS } from './options.js';\nimport { clamp } from './utils.js';\n/** @typedef {import('./options.js').PageData} PageData */\n/** @typedef {import('../BookReader.js').default} BookReader */\n\n// URI to display when a page is not viewable.\n// TODO Render configurable html for the user instead.\n// FIXME Don't reference files on archive.org\nconst UNVIEWABLE_PAGE_URI = '/bookreader/static/preview-default.png';\n\n/**\n * Contains information about the Book/Document independent of the way it is\n * being rendering. Nothing here should reference e.g. the mode, zoom, etc.\n * It's just information about the book and its pages (usually as specified\n * in the BookReader data option.)\n */\nexport class BookModel {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n this.br = br;\n this.reduceSet = br.reduceSet;\n this.ppi = br.options?.ppi ?? DEFAULT_OPTIONS.ppi;\n\n /** @type {{width: number, height: number}} memoize storage */\n this._medianPageSize = null;\n /** @deprecated @type {{width: number, height: number}} memoize storage */\n this._medianPageSizePixels = null;\n /** @type {[PageData[], number]} */\n this._getDataFlattenedCached = null;\n }\n\n /**\n * @deprecated Use getMedianPageSizeInches\n * Memoized\n * @return {{width: number, height: number}}\n */\n getMedianPageSize() {\n if (this._medianPageSizePixels) {\n return this._medianPageSizePixels;\n }\n\n // A little expensive but we just do it once\n const widths = [];\n const heights = [];\n for (let i = 0; i < this.getNumLeafs(); i++) {\n widths.push(this.getPageWidth(i));\n heights.push(this.getPageHeight(i));\n }\n\n widths.sort();\n heights.sort();\n this._medianPageSizePixels = {\n width: widths[Math.floor(widths.length / 2)],\n height: heights[Math.floor(heights.length / 2)]\n };\n return this._medianPageSizePixels;\n }\n\n /** Get median width/height of page in inches. Memoized for performance. */\n getMedianPageSizeInches() {\n if (this._medianPageSize) {\n return this._medianPageSize;\n }\n\n const widths = [];\n const heights = [];\n for (const page of this.pagesIterator()) {\n widths.push(page.widthInches);\n heights.push(page.heightInches);\n }\n\n widths.sort();\n heights.sort();\n\n this._medianPageSize = {\n width: widths[Math.floor(widths.length / 2)],\n height: heights[Math.floor(heights.length / 2)]\n };\n return this._medianPageSize;\n }\n\n /**\n * Returns the page width for the given index, or first or last page if out of range\n * @deprecated see getPageWidth\n * @param {PageIndex} index\n */\n _getPageWidth(index) {\n // Synthesize a page width for pages not actually present in book.\n // May or may not be the best approach.\n // If index is out of range we return the width of first or last page\n index = clamp(index, 0, this.getNumLeafs() - 1);\n return this.getPageWidth(index);\n }\n\n /**\n * Returns the page height for the given index, or first or last page if out of range\n * @deprecated see getPageHeight\n * @param {PageIndex} index\n */\n _getPageHeight(index) {\n const clampedIndex = clamp(index, 0, this.getNumLeafs() - 1);\n return this.getPageHeight(clampedIndex);\n }\n\n /**\n * Returns the *highest* index the given page number, or undefined\n * @param {PageNumString} pageNum\n * @return {PageIndex|undefined}\n */\n getPageIndex(pageNum) {\n const pageIndices = this.getPageIndices(pageNum);\n return pageIndices.length ? pageIndices[pageIndices.length - 1] : undefined;\n }\n\n /**\n * Returns an array (possibly empty) of the indices with the given page number\n * @param {PageNumString} pageNum\n * @return {PageIndex[]}\n */\n getPageIndices(pageNum) {\n const indices = [];\n\n // Check for special \"nXX\" page number\n if (pageNum.slice(0,1) == 'n') {\n try {\n const pageIntStr = pageNum.slice(1, pageNum.length);\n const pageIndex = parseInt(pageIntStr);\n indices.push(pageIndex);\n return indices;\n } catch (err) {\n // Do nothing... will run through page names and see if one matches\n }\n }\n\n for (let i = 0; i < this.getNumLeafs(); i++) {\n if (this.getPageNum(i) == pageNum) {\n indices.push(i);\n }\n }\n\n return indices;\n }\n\n /**\n * Returns the name of the page as it should be displayed in the user interface\n * @param {PageIndex} index\n * @return {string}\n */\n getPageName(index) {\n return 'Page ' + this.getPageNum(index);\n }\n\n /**\n * @return {number} the total number of leafs (like an array length)\n */\n getNumLeafs() {\n // For deprecated interface support, if numLeafs is set, use that.\n if (this.br.numLeafs !== undefined)\n return this.br.numLeafs;\n return this._getDataFlattened().length;\n }\n\n /**\n * @param {PageIndex} index\n * @return {Number|undefined}\n */\n getPageWidth(index) {\n return this.getPageProp(index, 'width');\n }\n\n /**\n * @param {PageIndex} index\n * @return {Number|undefined}\n */\n getPageHeight(index) {\n return this.getPageProp(index, 'height');\n }\n\n /**\n * @param {PageIndex} index\n * @param {number} reduce - not used in default implementation\n * @param {number} rotate - not used in default implementation\n * @return {string|undefined}\n */\n // eslint-disable-next-line no-unused-vars\n getPageURI(index, reduce, rotate) {\n return !this.getPageProp(index, 'viewable', true) ? UNVIEWABLE_PAGE_URI : this.getPageProp(index, 'uri');\n }\n\n /**\n * @param {PageIndex} index\n * @return {'L' | 'R'}\n */\n getPageSide(index) {\n return this.getPageProp(index, 'pageSide') || (index % 2 === 0 ? 'R' : 'L');\n }\n\n /**\n * @param {PageIndex} index\n * @return {PageNumString}\n */\n getPageNum(index) {\n const pageNum = this.getPageProp(index, 'pageNum');\n return pageNum === undefined ? `n${index}` : pageNum;\n }\n\n /**\n * Generalized property accessor.\n * @param {PageIndex} index\n * @param {keyof PageData} propName\n * @param {*} [fallbackValue] return if undefined\n * @return {*|undefined}\n */\n getPageProp(index, propName, fallbackValue = undefined) {\n return this._getDataProp(index, propName, fallbackValue);\n }\n\n /**\n * This function returns the left and right indices for the user-visible\n * spread that contains the given index.\n * @note Can return indices out of range of what's in the book.\n * @param {PageIndex} pindex\n * @return {[PageIndex, PageIndex]} eg [0, 1]\n */\n getSpreadIndices(pindex) {\n if (this.br.pageProgression == 'rl') {\n return this.getPageSide(pindex) == 'R' ? [pindex + 1, pindex] : [pindex, pindex - 1];\n } else {\n return this.getPageSide(pindex) == 'L' ? [pindex, pindex + 1] : [pindex - 1, pindex];\n }\n }\n\n /**\n * Single images in the Internet Archive scandata.xml metadata are (somewhat incorrectly)\n * given a \"leaf\" number. Some of these images from the scanning process should not\n * be displayed in the BookReader (for example colour calibration cards). Since some\n * of the scanned images will not be displayed in the BookReader (those marked with\n * addToAccessFormats false in the scandata.xml) leaf numbers and BookReader page\n * indexes are generally not the same. This function returns the BookReader page\n * index given a scanned leaf number.\n *\n * This function is used, for example, to map between search results (that use the\n * leaf numbers) and the displayed pages in the BookReader.\n * @param {LeafNum} leafNum\n * @return {PageIndex}\n */\n leafNumToIndex(leafNum) {\n const index = this._getDataFlattened()\n .findIndex(d => d.leafNum == leafNum);\n // If no match is found, fall back to the leafNum provide (leafNum == index)\n return index > -1 ? index : leafNum;\n }\n\n /**\n * Parses the pageString format\n * @param {PageString} pageString\n * @return {PageIndex|undefined}\n */\n parsePageString(pageString) {\n let pageIndex;\n // Check for special \"leaf\"\n const leafMatch = /^leaf(\\d+)/.exec(pageString);\n if (leafMatch) {\n pageIndex = this.leafNumToIndex(parseInt(leafMatch[1], 10));\n if (pageIndex === null) {\n pageIndex = undefined; // to match return type of getPageIndex\n }\n } else {\n pageIndex = this.getPageIndex(pageString);\n }\n return pageIndex;\n }\n\n /**\n * @param {number} index use negatives to get page relative to end\n * @param loop whether to loop (i.e. -1 == last page)\n */\n getPage(index, loop = true) {\n const numLeafs = this.getNumLeafs();\n if (!loop && (index < 0 || index >= numLeafs)) {\n return undefined;\n }\n if (index < 0 && index >= -numLeafs) {\n index += numLeafs;\n }\n index = index % numLeafs;\n return new PageModel(this, index);\n }\n\n /**\n * @param {object} [arg0]\n * @param {number} [arg0.start] inclusive\n * @param {number} [arg0.end] exclusive\n * @param {boolean} [arg0.combineConsecutiveUnviewables] Yield only first unviewable\n * of a chunk of unviewable pages instead of each page\n */\n * pagesIterator({ start = 0, end = Infinity, combineConsecutiveUnviewables = false } = {}) {\n start = Math.max(0, start);\n end = Math.min(end, this.getNumLeafs());\n\n for (let i = start; i < end; i++) {\n const page = this.getPage(i);\n if (combineConsecutiveUnviewables && page.isConsecutiveUnviewable) continue;\n\n yield page;\n }\n }\n\n /**\n * Flatten the nested structure (make 1d array), and also add pageSide prop\n * @return {PageData[]}\n */\n _getDataFlattened() {\n if (this._getDataFlattenedCached && this._getDataFlattenedCached[1] === this.br.data.length)\n return this._getDataFlattenedCached[0];\n\n let prevPageSide = null;\n /** @type {number|null} */\n let unviewablesChunkStart = null;\n let index = 0;\n // @ts-ignore TS doesn't know about flatMap for some reason\n const flattened = this.br.data.flatMap(spread => {\n return spread.map(page => {\n if (!page.pageSide) {\n if (prevPageSide === null) {\n page.pageSide = spread.length === 2 ? 'L' : 'R';\n } else {\n page.pageSide = prevPageSide === 'L' ? 'R' : 'L';\n }\n }\n prevPageSide = page.pageSide;\n\n if (page.viewable === false) {\n if (unviewablesChunkStart === null) {\n page.unviewablesStart = unviewablesChunkStart = index;\n } else {\n page.unviewablesStart = unviewablesChunkStart;\n }\n } else {\n unviewablesChunkStart = null;\n }\n\n index++;\n return page;\n });\n });\n\n // length is used as a cache breaker\n this._getDataFlattenedCached = [flattened, this.br.data.length];\n return flattened;\n }\n\n /**\n * Helper. Return a prop for a given index. Returns `fallbackValue` if index is invalid or\n * property not on page.\n * @param {PageIndex} index\n * @param {keyof PageData} prop\n * @param {*} fallbackValue return if property not on the record\n * @return {*}\n */\n _getDataProp(index, prop, fallbackValue = undefined) {\n const dataf = this._getDataFlattened();\n const invalidIndex = isNaN(index) || index < 0 || index >= dataf.length;\n if (invalidIndex || 'undefined' == typeof(dataf[index][prop]))\n return fallbackValue;\n return dataf[index][prop];\n }\n}\n\n/**\n * A controlled schema for page data.\n */\nexport class PageModel {\n /**\n * @param {BookModel} book\n * @param {PageIndex} index\n */\n constructor(book, index) {\n // TODO: Get default from config\n this.ppi = book._getDataProp(index, 'ppi', book.ppi);\n this.book = book;\n this.index = index;\n this.width = book.getPageWidth(index);\n this.widthInches = this.width / this.ppi;\n this.height = book.getPageHeight(index);\n this.heightInches = this.height / this.ppi;\n this.pageSide = book.getPageSide(index);\n this.leafNum = book._getDataProp(index, 'leafNum', this.index);\n\n /** @type {boolean} */\n this.isViewable = book._getDataProp(index, 'viewable', true);\n /** @type {PageIndex} The first in the series of unviewable pages this is in. */\n this.unviewablesStart = book._getDataProp(index, 'unviewablesStart') || null;\n /**\n * Consecutive unviewable pages are pages in an unviewable \"chunk\" which are not the first\n * of that chunk.\n */\n this.isConsecutiveUnviewable = !this.isViewable && this.unviewablesStart != this.index;\n\n this._rawData = this.book._getDataFlattened()[this.index];\n }\n\n /**\n * Updates the page to no longer be unviewable. Assumes the\n * Page's URI is already set/correct.\n */\n makeViewable(newViewableState = true) {\n if (this.isViewable == newViewableState) return;\n\n if (newViewableState) {\n this._rawData.viewable = true;\n delete this._rawData.unviewablesStart;\n // Update any subsequent page to now point to the right \"start\"\n for (const page of this.book.pagesIterator({ start: this.index + 1 })) {\n if (page.isViewable) break;\n page._rawData.unviewablesStart = this.index + 1;\n }\n } else {\n this._rawData.viewable = false;\n this._rawData.unviewablesStart = (this.prev && !this.prev.isViewable) ? this.prev.unviewablesStart : this.index;\n // Update any subsequent page to now point to the right \"start\"\n for (const page of this.book.pagesIterator({ start: this.index + 1 })) {\n if (!page.isViewable) break;\n page._rawData.unviewablesStart = this._rawData.unviewablesStart;\n }\n }\n }\n\n get prev() {\n return this.findPrev();\n }\n\n get next() {\n return this.findNext();\n }\n\n /**\n * @param {number} reduce\n * @param {number} rotate\n */\n getURI(reduce, rotate) {\n return this.book.getPageURI(this.index, reduce, rotate);\n }\n\n /**\n * Returns the srcset with correct URIs or void string if out of range\n * @param {number} reduce\n * @param {number} [rotate]\n */\n getURISrcSet(reduce, rotate = 0) {\n const { reduceSet } = this.book;\n const initialReduce = reduceSet.floor(reduce);\n // We don't need to repeat the initial reduce in the srcset\n const topReduce = reduceSet.decr(initialReduce);\n const reduces = [];\n for (let r = topReduce; r >= 1; r = reduceSet.decr(r)) {\n reduces.push(r);\n }\n return reduces\n .map(r => `${this.getURI(r, rotate)} ${initialReduce / r}x`)\n .join(', ');\n }\n\n /**\n * @param {object} [arg0]\n * @param {boolean} [arg0.combineConsecutiveUnviewables] Whether to only yield the first page\n * of a series of unviewable pages instead of each page\n * @return {PageModel|void}\n */\n findNext({ combineConsecutiveUnviewables = false } = {}) {\n return this.book\n .pagesIterator({ start: this.index + 1, combineConsecutiveUnviewables })\n .next().value;\n }\n\n /**\n * @param {object} [arg0]\n * @param {boolean} [arg0.combineConsecutiveUnviewables] Whether to only yield the first page\n * of a series of unviewable pages instead of each page\n * @return {PageModel|void}\n */\n findPrev({ combineConsecutiveUnviewables = false } = {}) {\n if (this.index == 0) return undefined;\n\n if (combineConsecutiveUnviewables) {\n if (this.isConsecutiveUnviewable) {\n return this.book.getPage(this.unviewablesStart);\n } else {\n // Recursively goes backward through the book\n // TODO make a reverse iterator to make it look identical to findNext\n const prev = new PageModel(this.book, this.index - 1);\n return prev.isViewable ? prev : prev.findPrev({ combineConsecutiveUnviewables });\n }\n } else {\n return new PageModel(this.book, this.index - 1);\n }\n }\n}\n\n// There are a few main ways we can reference a specific page in a book:\n/**\n * @typedef {string} PageNumString\n * Possible values: /^n?\\d+$/. Example: 'n7', '18'\n * Not necessarily unique\n */\n/**\n * @typedef {number} LeafNum\n * No clue if 0 or 1 indexed or consecutive; generally from IA book info.\n */\n/**\n * @typedef {string} PageString\n * Possible values: /^(leaf)?\\d+$/ Example: 'leaf7', '18'\n * If leaf-prefixed, then the number is a LeafNum. Otherwise it's a PageNumString\n */\n/** @typedef {number} PageIndex 0-based index of all the pages */\n","/**\n * Displays a console on the document for debugging devices where remote\n * debugging is not feasible, and forwards all console.log's to be displayed\n * on screen.\n */\nexport class DebugConsole {\n constructor() {\n /** How many times we've seen the same line in a row */\n this.currentRun = 0;\n }\n\n init() {\n this.$log = $(`<div id=\"_debugLog\" style=\"width: 100%; height: 300px; overflow: auto\" />`);\n $(document.body).prepend(this.$log);\n\n this.$form = $(`\n <form>\n <input style=\"width:100%; font-family: monospace;\" id=\"_debugLogInput\">\n </form>`);\n this.$log.append(this.$form);\n\n this.$form.submit(ev => {\n ev.preventDefault();\n const result = eval(this.$form.find('input').val());\n this.logToScreen([result]);\n });\n\n const _realLog = console.log.bind(console);\n console.log = (...args) => {\n _realLog(...args);\n this.logToScreen(args);\n };\n\n window.onerror = (...args) => this.logToScreen(args);\n }\n\n /**\n * Log the provided array onto the on screen console\n * @param {Array} args\n */\n logToScreen(args) {\n const html = args.map(JSON.stringify).join(',');\n const $lastEntry = this.$log.children('.log-entry:last-child');\n if ($lastEntry.find('.entry-code').html() == html) {\n $lastEntry.find('.count').text(`(${++this.currentRun})`);\n } else {\n this.currentRun = 1;\n this.$log.append($(`\n <div class=\"log-entry\">\n <code class=\"count\"></code> <code class=\"entry-code\">${html}</code>\n </div>`));\n }\n }\n}\n","// @ts-check\n/**\n * Creates an image cache dictionary\n * storing images in `<img>` tags so that\n * BookReader can leverage browser caching\n */\n/** @typedef {import(\"./BookModel\").BookModel} BookModel */\n/** @typedef {import(\"./BookModel\").PageIndex} PageIndex */\n/** @typedef {import(\"./ReduceSet\").ReduceSet} ReduceSet */\n\nimport { Pow2ReduceSet } from \"./ReduceSet\";\n\nexport class ImageCache {\n /**\n * @param {BookModel} book\n * @param {object} opts\n * @param {boolean} [opts.useSrcSet]\n * @param {ReduceSet} [opts.reduceSet]\n */\n constructor(book, { useSrcSet = false, reduceSet = Pow2ReduceSet } = {}) {\n this.book = book;\n this.useSrcSet = useSrcSet;\n this.reduceSet = reduceSet;\n /** @type {{ [index: number]: { reduce: number, loaded: boolean }[] }} */\n this.cache = {};\n this.defaultScale = 8;\n }\n\n /**\n * Get an image\n * Checks cache first if image is available & of equal/better scale,\n * if not, a new image gets created\n *\n * @param {PageIndex} index\n * @param {Number} reduce\n */\n image(index, reduce) {\n const cachedImages = this.cache[index] || [];\n const sufficientImages = cachedImages\n .filter(x => x.loaded && x.reduce <= reduce);\n if (sufficientImages.length) {\n // Choose the largest reduction factor that meets our needs\n const bestReduce = Math.max(...sufficientImages.map(e => e.reduce));\n return this._serveImageElement(index, bestReduce);\n } else {\n // Don't use a cache entry; i.e. a fresh fetch will be made\n // for this reduce\n return this._serveImageElement(index, reduce);\n }\n }\n\n /**\n * Checks if an image of equal or greater quality has been loaded\n * @param {PageIndex} index\n * @param {Number} reduce\n * @returns {Boolean}\n */\n imageLoaded(index, reduce) {\n const cacheImg = this.cache[index]?.find(e => e.reduce <= reduce);\n return cacheImg?.loaded ?? false;\n }\n\n /**\n * Get the best image that's already loaded for the given index,\n * trying to choose values less that the given reduce\n * @param {PageIndex} index\n * @param idealMaxReduce\n * @returns {null | number}\n */\n getBestLoadedReduce(index, idealMaxReduce = Infinity) {\n const candidates = this.cache[index]?.filter(x => x.loaded) || [];\n if (!candidates.length) return null;\n\n const lowerResImages = candidates.filter(e => e.reduce >= idealMaxReduce);\n if (lowerResImages.length) {\n // Choose the highest quality loaded lower res image\n return Math.min(...lowerResImages.map(e => e.reduce));\n }\n // Otherwise choose whatever is closest to the reduce\n const higherRestImages = candidates.filter(e => e.reduce < idealMaxReduce);\n return Math.max(...higherRestImages.map(e => e.reduce));\n }\n\n /**\n * @private\n * Generates an image element on the fly from image info in cache\n *\n * @param {PageIndex} index\n * @param {number} reduce\n * @returns {JQuery<HTMLImageElement>} with base image classes\n */\n _serveImageElement(index, reduce) {\n const validReduce = this.reduceSet.floor(reduce);\n let cacheEntry = this.cache[index]?.find(e => e.reduce == validReduce);\n if (!cacheEntry) {\n cacheEntry = { reduce: validReduce, loaded: false };\n const entries = this.cache[index] || (this.cache[index] = []);\n entries.push(cacheEntry);\n }\n const page = this.book.getPage(index);\n\n const $img = $('<img />', {\n 'class': 'BRpageimage',\n 'alt': 'Book page image',\n src: page.getURI(validReduce, 0),\n })\n .data('reduce', validReduce);\n if (this.useSrcSet) {\n $img.attr('srcset', page.getURISrcSet(validReduce));\n }\n if (!cacheEntry.loaded) {\n $img.one('load', () => cacheEntry.loaded = true);\n }\n return $img;\n }\n}\n","// @ts-check\nimport { calcScreenDPI, notInArray } from '../BookReader/utils.js';\n/** @typedef {import('../BookReader.js').default} BookReader */\n/** @typedef {import('./BookModel.js').BookModel} BookModel */\n/** @typedef {import('./BookModel.js').PageIndex} PageIndex */\n\nexport class Mode1Up {\n /**\n * @param {BookReader} br\n * @param {BookModel} bookModel\n */\n constructor(br, bookModel) {\n this.br = br;\n this.book = bookModel;\n\n /** @private */\n this.$documentContainer = $('<div class=\"BRpageview\" />');\n /** @private */\n this.screenDPI = calcScreenDPI();\n /** @private */\n this.LEAF_SPACING_IN = 0.2;\n\n /**\n * How much smaller the picture on screen is than the real-world item\n *\n * Mode1Up doesn't use the br.reduce because it is DPI aware. The reduction factor\n * of a given leaf can change (since leaves can have different DPIs), but the real-world\n * reduction is constant throughout.\n */\n this.realWorldReduce = 1;\n }\n\n /** @private */\n get $scrollContainer() { return this.br.refs.$brContainer; }\n\n /**\n * This is called when we switch to one page view\n */\n prepare() {\n const startLeaf = this.br.currentIndex();\n\n this.$scrollContainer\n .empty()\n .css({ overflowX: 'auto', overflowY: 'scroll' })\n .append(this.$documentContainer);\n\n // Attaches to first child - child must be present\n this.$scrollContainer.dragscrollable();\n this.br.bindGestures(this.$scrollContainer);\n\n // This calls drawLeafs\n this.resizePageView();\n\n this.br.jumpToIndex(startLeaf);\n this.br.updateBrClasses();\n }\n\n /**\n * Get the number of pixels required to display the given inches with the given reduce\n * @param {number} inches\n * @param reduce Reduction factor currently at play\n * @param screenDPI The DPI of the screen\n **/\n physicalInchesToDisplayPixels(inches, reduce = this.realWorldReduce, screenDPI = this.screenDPI) {\n return inches * screenDPI / reduce;\n }\n\n /**\n * Iterate over pages, augmented with their top/bottom bounds\n * @param reduce Reduction factor currently at play\n * @param pageSpacing Inches of space to place between pages\n **/\n * pagesWithBounds(reduce = this.realWorldReduce, pageSpacing = this.LEAF_SPACING_IN) {\n let leafTop = 0;\n let leafBottom = 0;\n\n for (const page of this.book.pagesIterator({ combineConsecutiveUnviewables: true })) {\n const height = this.physicalInchesToDisplayPixels(page.heightInches, reduce);\n leafBottom += height;\n yield { page, top: leafTop, bottom: leafBottom };\n leafTop += height + this.physicalInchesToDisplayPixels(pageSpacing, reduce);\n leafBottom += this.physicalInchesToDisplayPixels(pageSpacing, reduce);\n }\n }\n\n /**\n * How much do the two bounds intersection?\n * @param {{ top: number; bottom: number; }} bound1\n * @param {{ top: number; bottom: number; }} bound2\n * @returns {number}\n */\n static boundIntersection(bound1, bound2) {\n const intersect = (bound1.bottom >= bound2.top) && (bound1.top <= bound2.bottom);\n if (!intersect) return 0;\n\n const boundingBox = {\n top: Math.min(bound1.top, bound2.top),\n bottom: Math.max(bound1.bottom, bound2.bottom),\n };\n const intersection = {\n top: Math.max(bound1.top, bound2.top),\n bottom: Math.min(bound1.bottom, bound2.bottom),\n };\n return (intersection.bottom - intersection.top) / (boundingBox.bottom - boundingBox.top);\n }\n\n /**\n * Find the pages that intersect the current viewport, including 1 before/after\n **/\n * findIntersectingPages() {\n // Rectangle of interest\n const height = this.$scrollContainer.height();\n const scrollTop = this.$scrollContainer.scrollTop();\n const scrollBottom = scrollTop + height;\n const scrollRegion = { top: scrollTop, bottom: scrollBottom };\n\n let prev = null;\n for (const {page, top, bottom} of this.pagesWithBounds()) {\n const intersection = Mode1Up.boundIntersection({ top, bottom }, scrollRegion);\n const cur = {page, top, bottom, intersection: intersection};\n if (intersection) {\n // Also yield the page just before the visible page\n if (prev && !prev.intersection) yield prev;\n yield cur;\n }\n // Also yield the page just after the last visible page\n else if (!cur.intersection && prev?.intersection) {\n yield cur;\n break;\n }\n prev = cur;\n }\n }\n\n drawLeafs() {\n const pagesToDisplay = Array.from(this.findIntersectingPages());\n\n if (pagesToDisplay.length) {\n const documentContainerWidth = this.$documentContainer.width();\n\n // The first page that's reasonably in view we set to the current index\n const firstProperPage = (\n pagesToDisplay.find(({intersection}) => intersection > 0.33) ||\n pagesToDisplay[0]\n ).page;\n this.br.updateFirstIndex(firstProperPage.index);\n\n for (const {page, top, bottom} of pagesToDisplay) {\n if (!this.br.displayedIndices.includes(page.index)) {\n const height = bottom - top;\n const width = this.physicalInchesToDisplayPixels(page.widthInches);\n const reduce = page.width / width;\n\n const pageContainer = this.br._createPageContainer(page.index)\n .update({\n dimensions: {\n width,\n height,\n top,\n left: Math.floor((documentContainerWidth - width) / 2),\n },\n reduce,\n });\n pageContainer.$container.appendTo(this.$documentContainer);\n }\n }\n }\n\n // Remove any pages we no longer need\n const displayedIndices = pagesToDisplay.map(({page}) => page.index);\n for (const index of this.br.displayedIndices) {\n if (notInArray(index, displayedIndices)) {\n this.br.$(`.pagediv${index}`).remove();\n }\n }\n\n this.br.displayedIndices = displayedIndices;\n if (this.br.enableSearch) this.br.updateSearchHilites();\n\n this.br.updateToolbarZoom(this.realWorldReduce);\n\n // Update the slider\n this.br.updateNavIndexThrottled();\n }\n\n /**\n * @param {PageIndex} index\n * @param {number} [pageX] x position on the page (in pixels) to center on\n * @param {number} [pageY] y position on the page (in pixels) to center on\n * @param {boolean} [noAnimate]\n */\n jumpToIndex(index, pageX, pageY, noAnimate) {\n const prevCurrentIndex = this.br.currentIndex();\n const { abs } = Math;\n let offset = 0;\n let leafTop = this.getPageTop(index);\n let leafLeft = 0;\n\n if (pageY) {\n const page = this.book.getPage(index);\n const clientHeight = this.$scrollContainer.prop('clientHeight');\n offset = this.physicalInchesToDisplayPixels((pageY / page.height) * page.heightInches) - (clientHeight / 2);\n leafTop += offset;\n } else {\n // Show page just a little below the top\n leafTop -= this.br.padding / 2;\n }\n\n if (pageX) {\n const page = this.book.getPage(index);\n const clientWidth = this.$scrollContainer.prop('clientWidth');\n offset = this.physicalInchesToDisplayPixels((pageX / page.width) * page.widthInches) - (clientWidth / 2);\n leafLeft += offset;\n } else {\n // Preserve left position\n leafLeft = this.$scrollContainer.scrollLeft();\n }\n\n // Only animate for small distances\n if (!noAnimate && abs(prevCurrentIndex - index) <= 4) {\n this.animating = true;\n this.$scrollContainer.stop(true).animate({\n scrollTop: leafTop,\n scrollLeft: leafLeft,\n }, 'fast', () => { this.animating = false; });\n } else {\n this.$scrollContainer.stop(true).prop('scrollTop', leafTop);\n }\n }\n\n /**\n * @param {'in' | 'out'} direction\n */\n zoom(direction) {\n const nextReductionFactor = this.br.nextReduce(this.realWorldReduce, direction, this.br.onePage.reductionFactors);\n\n if (this.realWorldReduce == nextReductionFactor.reduce) {\n // Already at this level\n return;\n }\n\n this.realWorldReduce = nextReductionFactor.reduce;\n this.br.onePage.autofit = nextReductionFactor.autofit;\n\n this.resizePageView();\n this.br.updateToolbarZoom(this.realWorldReduce);\n\n // Recalculate search hilites\n if (this.br.enableSearch) {\n this.br.removeSearchHilites();\n this.br.updateSearchHilites();\n }\n }\n\n /**\n * Returns the reduce factor which has the pages fill the width of the viewport.\n */\n getAutofitWidth() {\n const widthPadding = 20;\n const availableWidth = this.$scrollContainer.prop('clientWidth') - 2 * widthPadding;\n\n const medianWidthInches = this.book.getMedianPageSizeInches().width;\n const medianPageWidth = this.physicalInchesToDisplayPixels(medianWidthInches, 1);\n return medianPageWidth / availableWidth;\n }\n\n getAutofitHeight() {\n // make sure a little of adjacent pages show\n const availableHeight = this.$scrollContainer.innerHeight() - 2 * this.br.padding;\n const medianHeightInches = this.book.getMedianPageSizeInches().height;\n const medianPageHeight = this.physicalInchesToDisplayPixels(medianHeightInches, 1);\n\n return medianPageHeight / availableHeight;\n }\n\n /**\n * Returns where the top of the page with given index should be in one page view\n * @param {PageIndex} index\n * @return {number}\n */\n getPageTop(index) {\n for (const {page, top} of this.pagesWithBounds()) {\n if (page.index == index) return top;\n }\n }\n\n /**\n * Update the reduction factors for 1up mode given the available width and height.\n * Recalculates the autofit reduction factors.\n */\n calculateReductionFactors() {\n const autoWidthReduce = this.getAutofitWidth();\n this.br.onePage.reductionFactors = this.br.reductionFactors\n .filter(r => r.reduce != 1)\n .concat([\n { reduce: 1, autofit: null },\n { reduce: autoWidthReduce, autofit: 'width' },\n { reduce: this.getAutofitHeight(), autofit: 'height' },\n ]);\n this.br.onePage.reductionFactors.sort(this.br._reduceSort);\n // Default to real size if it fits, otherwise default to full width\n if (autoWidthReduce < 1) {\n this.br.onePage.reductionFactors.find(r => r.reduce == 1).autofit = 'auto';\n } else {\n this.br.onePage.reductionFactors.find(r => r.autofit == 'width').autofit = 'auto';\n }\n }\n\n /**\n * Resize the current one page view\n * Note this calls drawLeafs\n */\n resizePageView() {\n const viewWidth = this.$scrollContainer.prop('clientWidth');\n const oldScrollTop = this.$scrollContainer.prop('scrollTop');\n const oldPageViewHeight = this.$documentContainer.height();\n const oldPageViewWidth = this.$documentContainer.width();\n\n // May have come here after preparing the view, in which case the scrollTop and view height are not set\n\n let scrollRatio = 0;\n let oldCenterX;\n if (oldScrollTop > 0) {\n // We have scrolled - implies view has been set up\n const oldCenterY = this.centerY();\n oldCenterX = this.centerX();\n scrollRatio = oldCenterY / oldPageViewHeight;\n } else {\n // Have not scrolled, e.g. because in new container\n\n // We set the scroll ratio so that the current index will still be considered the\n // current index in drawLeafsOnePage after we create the new view container\n\n // Make sure this will count as current page after resize\n const fudgeFactor = 0.6 * this.physicalInchesToDisplayPixels(this.book.getPage(this.br.currentIndex()).heightInches);\n const oldLeafTop = this.getPageTop(this.br.currentIndex()) + fudgeFactor;\n const oldViewDimensions = this.calculateViewDimensions();\n scrollRatio = oldLeafTop / oldViewDimensions.height;\n }\n\n // Recalculate 1up reduction factors\n this.calculateReductionFactors();\n // Update current reduce (if in autofit)\n if (this.br.onePage.autofit) {\n const reductionFactor = this.br.nextReduce(this.realWorldReduce, this.br.onePage.autofit, this.br.onePage.reductionFactors);\n this.realWorldReduce = reductionFactor.reduce;\n }\n\n const viewDimensions = this.calculateViewDimensions();\n this.$documentContainer.height(viewDimensions.height);\n this.$documentContainer.width(viewDimensions.width);\n\n // Remove all pages\n this.$documentContainer.empty();\n this.br.displayedIndices = [];\n\n // Scroll to the right spot\n const newCenterX = oldCenterX * (viewWidth / oldPageViewWidth);\n const newCenterY = scrollRatio * viewDimensions.height;\n const sizeX = this.$scrollContainer.prop('clientWidth'); // Use clientWidth because of scroll bar\n const sizeY = this.$scrollContainer.height();\n this.$scrollContainer.prop({\n scrollLeft: Math.max(0, newCenterX - sizeX / 2),\n scrollTop: Math.max(0, newCenterY - sizeY / 2),\n });\n\n // Draw all visible pages\n this.drawLeafs();\n\n if (this.br.enableSearch) {\n this.br.removeSearchHilites();\n this.br.updateSearchHilites();\n }\n }\n\n /**\n * Calculate the total width/height in pixels of the document container\n * @param {number} reduce\n * @param {number} leafSpacing spacing between pages in inches\n */\n calculateViewDimensions(reduce = this.realWorldReduce, leafSpacing = this.LEAF_SPACING_IN) {\n let width = 0;\n let height = 0;\n for (const {page, bottom} of this.pagesWithBounds(reduce, leafSpacing)) {\n const pageWidth = this.physicalInchesToDisplayPixels(page.widthInches, reduce);\n width = Math.max(width, pageWidth);\n height = bottom;\n }\n return { width, height };\n }\n\n /**\n * Returns the current offset of the viewport center in scaled document coordinates.\n */\n centerX($scrollContainer = this.$scrollContainer, $documentContainer = this.$documentContainer) {\n let centerX;\n if ($documentContainer.width() < $scrollContainer.prop('clientWidth')) { // fully shown\n centerX = $documentContainer.width();\n } else {\n centerX = $scrollContainer.scrollLeft() + $scrollContainer.prop('clientWidth') / 2;\n }\n return Math.floor(centerX);\n }\n\n /**\n * Returns the current offset of the viewport center in scaled document coordinates.\n */\n centerY($scrollContainer = this.$scrollContainer) {\n const centerY = $scrollContainer.scrollTop() + $scrollContainer.height() / 2;\n return Math.floor(centerY);\n }\n}\n","// @ts-check\n// effect.js gives acces to extra easing function (e.g. easeInSine)\nimport 'jquery-ui/ui/effect.js';\nimport '../dragscrollable-br.js';\nimport { clamp } from './utils.js';\nimport { EVENTS } from './events.js';\n\n/** @typedef {import('../BookReader.js').default} BookReader */\n/** @typedef {import('./BookModel.js').BookModel} BookModel */\n/** @typedef {import('./BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('./options.js').BookReaderOptions} BookReaderOptions */\n/** @typedef {import('./PageContainer.js').PageContainer} PageContainer */\n\nexport class Mode2Up {\n /**\n * @param {BookReader} br\n * @param {BookModel} bookModel\n */\n constructor(br, bookModel) {\n this.br = br;\n this.book = bookModel;\n\n /** @type {HTMLDivElement} */\n this.leafEdgeL = null;\n /** @type {HTMLDivElement} */\n this.leafEdgeR = null;\n\n /** @type {{ [index: number]: PageContainer }} */\n this.pageContainers = {};\n }\n\n /**\n * @param {PageIndex} index\n */\n jumpToIndex(index) {\n // By checking against min/max we do nothing if requested index\n // is current\n if (index < Math.min(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR)) {\n this.flipBackToIndex(index);\n } else if (index > Math.max(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR)) {\n this.flipFwdToIndex(index);\n }\n }\n\n /**\n * @template T\n * @param {HTMLElement} element\n * @param {T} data\n * @param {function(HTMLElement, { data: T }): void} handler\n */\n setClickHandler(element, data, handler) {\n $(element).unbind('mouseup').bind('mouseup', data, function(e) {\n handler(this, e);\n });\n }\n\n /**\n * Draws book spread,\n * sets event handlers,\n * sets: `this.br.displayedIndices`\n * updates toolbar zoom\n * Important: `this.br.refs.$brTwoPageView` parent container must be emptied before calling\n */\n drawLeafs() {\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n const indexL = this.br.twoPage.currentIndexL;\n const indexR = this.br.twoPage.currentIndexR;\n\n this.createPageContainer(indexL).$container\n .css(this.leftLeafCss)\n .appendTo($twoPageViewEl);\n this.createPageContainer(indexR).$container\n .css(this.rightLeafCss)\n .appendTo($twoPageViewEl);\n\n this.displayedIndices = [this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR];\n this.setMouseHandlers();\n this.br.displayedIndices = this.displayedIndices;\n this.br.updateToolbarZoom(this.br.reduce);\n this.br.trigger('pageChanged');\n }\n\n /**\n * @param {1} direction\n */\n zoom(direction) {\n this.br.stopFlipAnimations();\n\n // Recalculate autofit factors\n this.calculateReductionFactors();\n\n // Get new zoom state\n const reductionFactor = this.br.nextReduce(this.br.reduce, direction, this.br.twoPage.reductionFactors);\n if ((this.br.reduce == reductionFactor.reduce) && (this.br.twoPage.autofit == reductionFactor.autofit)) {\n // Same zoom\n return;\n }\n this.br.twoPage.autofit = reductionFactor.autofit;\n this.br.reduce = reductionFactor.reduce;\n this.br.pageScale = this.br.reduce; // preserve current reduce\n\n // Preserve view center position\n const oldCenter = this.getViewCenter();\n\n // Prepare view with new center to minimize visual glitches\n const drawNewSpread = true;\n this.prepareTwoPageView(oldCenter.percentageX, oldCenter.percentageY, drawNewSpread);\n }\n\n /**\n * Resize spread containers, does not prefetch\n * uses `this.br.twoPage` properties\n */\n resizeSpread() {\n this.br.resizeBRcontainer(false); // no animation\n this.calculateSpreadSize();\n\n this.br.refs?.$brTwoPageView.css(this.mainContainerCss);\n this.centerView(); // let function self adjust\n\n $(this.br.twoPage.coverDiv).css(this.spreadCoverCss); // click sheath is memoized somehow\n const $spreadLayers = this.br.refs.$brTwoPageView;\n\n $spreadLayers.find('.BRleafEdgeR')?.css(this.leafEdgeRCss);\n $spreadLayers.find('.BRleafEdgeL')?.css(this.leafEdgeLCss);\n $spreadLayers.find('.BRgutter')?.css(this.spineCss);\n\n const indexL = this.br.twoPage.currentIndexL;\n const indexR = this.br.twoPage.currentIndexR;\n this.pageContainers[indexL].$container.css(this.leftLeafCss);\n this.pageContainers[indexR].$container.css(this.rightLeafCss);\n }\n\n /**\n * @param {number} centerPercentageX\n * @param {number} centerPercentageY\n * @param {Boolean} drawNewSpread\n */\n prepareTwoPageView(centerPercentageX, centerPercentageY, drawNewSpread = false) {\n // Some decisions about two page view:\n //\n // Both pages will be displayed at the same height, even if they were different physical/scanned\n // sizes. This simplifies the animation (from a design as well as technical standpoint). We\n // examine the page aspect ratios (in calculateSpreadSize) and use the page with the most \"normal\"\n // aspect ratio to determine the height.\n //\n // The two page view div is resized to keep the middle of the book in the middle of the div\n // even as the page sizes change. To e.g. keep the middle of the book in the middle of the BRcontent\n // div requires adjusting the offset of BRtwpageview and/or scrolling in BRcontent.\n const startingReduce = this.br.reduce;\n const startingIndices = this.br.displayedIndices;\n\n this.br.refs.$brContainer.empty();\n this.br.refs.$brContainer.css('overflow', 'auto');\n\n // We want to display two facing pages. We may be missing\n // one side of the spread because it is the first/last leaf,\n // foldouts, missing pages, etc\n\n const targetLeaf = clamp(this.br.firstIndex, this.br.firstDisplayableIndex(), this.br.lastDisplayableIndex());\n const currentSpreadIndices = this.book.getSpreadIndices(targetLeaf);\n this.br.twoPage.currentIndexL = currentSpreadIndices[0];\n this.br.twoPage.currentIndexR = currentSpreadIndices[1];\n\n this.calculateSpreadSize(); //sets this.br.reduce, twoPage.width, twoPage.height and others\n\n /* check if calculations have changed that warrant a new book draw */\n const sameReducer = startingReduce == this.br.reduce;\n const sameStart = startingIndices == this.br.displayedIndices;\n const hasNewDisplayPagesOrDimensions = !sameStart || (sameStart && !sameReducer);\n\n if (drawNewSpread || hasNewDisplayPagesOrDimensions) {\n this.prunePageContainers();\n this.prefetch();\n }\n\n // Add the two page view\n // $$$ Can we get everything set up and then append?\n const $twoPageViewEl = $('<div class=\"BRtwopageview\"></div>');\n this.br.refs.$brTwoPageView = $twoPageViewEl;\n this.br.refs.$brContainer.append($twoPageViewEl);\n\n // Attaches to first child, so must come after we add the page view\n this.br.refs.$brContainer.dragscrollable({preventDefault:true});\n this.br.bindGestures(this.br.refs.$brContainer);\n\n // $$$ calculate container size first\n this.br.refs?.$brTwoPageView.css(this.mainContainerCss);\n\n // This will trump the incoming coordinates\n // in order to center book when zooming out\n if (this.br.twoPage.totalWidth < this.br.refs.$brContainer.prop('clientWidth')) {\n centerPercentageX = 0.5;\n }\n if (this.br.twoPage.totalHeight < this.br.refs.$brContainer.prop('clientHeight')) {\n centerPercentageY = 0.5;\n }\n\n this.centerView(centerPercentageX, centerPercentageY);\n\n // then set\n this.br.twoPage.coverDiv = document.createElement('div');\n $(this.br.twoPage.coverDiv).attr('class', 'BRbookcover').css(this.spreadCoverCss).appendTo(this.br.refs.$brTwoPageView);\n\n this.leafEdgeR = document.createElement('div');\n this.leafEdgeR.className = 'BRleafEdgeR';\n $(this.leafEdgeR).css(this.leafEdgeRCss).appendTo(this.br.refs.$brTwoPageView);\n\n this.leafEdgeL = document.createElement('div');\n this.leafEdgeL.className = 'BRleafEdgeL';\n $(this.leafEdgeL).css(this.leafEdgeLCss).appendTo(this.br.refs.$brTwoPageView);\n\n const div = document.createElement('div');\n $(div).attr('class', 'BRgutter').css(this.spineCss).appendTo(this.br.refs.$brTwoPageView);\n\n this.preparePopUp();\n\n this.br.displayedIndices = [];\n\n this.drawLeafs();\n this.br.updateToolbarZoom(this.br.reduce);\n\n if (this.br.enableSearch) {\n this.br.removeSearchHilites();\n this.br.updateSearchHilites();\n }\n\n this.br.updateBrClasses();\n }\n\n prunePageContainers() {\n for (const index in this.pageContainers) {\n if ((index != this.br.twoPage.currentIndexL) && (index != this.br.twoPage.currentIndexR)) {\n $(this.pageContainers[index].$container).remove();\n }\n if ((index < this.br.twoPage.currentIndexL - 4) || (index > this.br.twoPage.currentIndexR + 4)) {\n delete this.pageContainers[index];\n }\n }\n }\n\n /**\n * This function prepares the \"View Page n\" popup that shows while the mouse is\n * over the left/right \"stack of sheets\" edges. It also binds the mouse\n * events for these divs.\n */\n preparePopUp() {\n this.br.twoPagePopUp = document.createElement('div');\n this.br.twoPagePopUp.className = 'BRtwoPagePopUp';\n $(this.br.twoPagePopUp).css({\n zIndex: '1000'\n }).appendTo(this.br.refs.$brContainer);\n $(this.br.twoPagePopUp).hide();\n\n const leafEdges = [\n {\n $leafEdge: $(this.leafEdgeL),\n /** @type {function(number): PageIndex} */\n jumpIndexForPageX: this.jumpIndexForLeftEdgePageX.bind(this),\n leftOffset: () => -$(this.br.twoPagePopUp).width() + 120,\n },\n {\n $leafEdge: $(this.leafEdgeR),\n /** @type {function(number): PageIndex} */\n jumpIndexForPageX: this.jumpIndexForRightEdgePageX.bind(this),\n leftOffset: () => -120,\n },\n ];\n\n for (const { $leafEdge, jumpIndexForPageX, leftOffset } of leafEdges) {\n $leafEdge.on('mouseenter', () => $(this.br.twoPagePopUp).show());\n $leafEdge.on('mouseleave', () => $(this.br.twoPagePopUp).hide());\n\n $leafEdge.on('click', e => {\n this.br.trigger(EVENTS.stop);\n this.br.jumpToIndex(jumpIndexForPageX(e.pageX));\n });\n\n $leafEdge.on('mousemove', e => {\n const jumpIndex = clamp(jumpIndexForPageX(e.pageX), 0, this.book.getNumLeafs() - 1);\n $(this.br.twoPagePopUp).text(`View ${this.book.getPageName(jumpIndex)}`);\n\n // $$$ TODO: Make sure popup is positioned so that it is in view\n // (https://bugs.edge.launchpad.net/gnubook/+bug/327456)\n $(this.br.twoPagePopUp).css({\n left: `${e.pageX - this.br.refs.$brContainer.offset().left + this.br.refs.$brContainer.scrollLeft() + leftOffset()}px`,\n top: `${e.pageY - this.br.refs.$brContainer.offset().top + this.br.refs.$brContainer.scrollTop()}px`\n });\n });\n }\n }\n\n setSpreadIndices() {\n const targetLeaf = clamp(this.br.firstIndex, this.br.firstDisplayableIndex(), this.br.lastDisplayableIndex());\n const currentSpreadIndices = this.book.getSpreadIndices(targetLeaf);\n this.br.twoPage.currentIndexL = currentSpreadIndices[0];\n this.br.twoPage.currentIndexR = currentSpreadIndices[1];\n }\n\n /**\n * Calculates 2-page spread dimensions based on this.br.twoPage.currentIndexL and\n * this.br.twoPage.currentIndexR\n * This function sets this.br.twoPage.height, twoPage.width\n */\n calculateSpreadSize() {\n const firstIndex = this.br.twoPage.currentIndexL;\n const secondIndex = this.br.twoPage.currentIndexR;\n\n // Calculate page sizes and total leaf width\n let spreadSize;\n if ( this.br.twoPage.autofit) {\n spreadSize = this.getIdealSpreadSize(firstIndex, secondIndex);\n } else {\n // set based on reduction factor\n spreadSize = this.getSpreadSizeFromReduce(firstIndex, secondIndex, this.br.reduce);\n }\n // Both pages together\n this.br.twoPage.height = spreadSize.height || 0;\n this.br.twoPage.width = spreadSize.width || 0;\n\n // Individual pages\n this.br.twoPage.scaledWL = this.getPageWidth(firstIndex) || 0;\n this.br.twoPage.scaledWR = this.getPageWidth(secondIndex) || 0;\n\n // Leaf edges\n this.br.twoPage.edgeWidth = spreadSize.totalLeafEdgeWidth; // The combined width of both edges\n this.br.twoPage.leafEdgeWidthL = this.br.leafEdgeWidth(this.br.twoPage.currentIndexL);\n this.br.twoPage.leafEdgeWidthR = this.br.twoPage.edgeWidth - this.br.twoPage.leafEdgeWidthL;\n\n\n // Book cover\n // The width of the book cover div. The combined width of both pages, twice the width\n // of the book cover internal padding (2*10) and the page edges\n this.br.twoPage.bookCoverDivWidth = this.coverWidth(this.br.twoPage.scaledWL + this.br.twoPage.scaledWR);\n // The height of the book cover div\n this.br.twoPage.bookCoverDivHeight = this.br.twoPage.height + 2 * this.br.twoPage.coverInternalPadding;\n\n\n // We calculate the total width and height for the div so that we can make the book\n // spine centered\n const leftGutterOffset = this.gutterOffsetForIndex(firstIndex);\n const leftWidthFromCenter = this.br.twoPage.scaledWL - leftGutterOffset + this.br.twoPage.leafEdgeWidthL;\n const rightWidthFromCenter = this.br.twoPage.scaledWR + leftGutterOffset + this.br.twoPage.leafEdgeWidthR;\n const largestWidthFromCenter = Math.max( leftWidthFromCenter, rightWidthFromCenter );\n this.br.twoPage.totalWidth = 2 * (largestWidthFromCenter + this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding);\n this.br.twoPage.totalHeight = this.br.twoPage.height + 2 * (this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding);\n\n // We want to minimize the unused space in two-up mode (maximize the amount of page\n // shown). We give width to the leaf edges and these widths change (though the sum\n // of the two remains constant) as we flip through the book. With the book\n // cover centered and fixed in the BRcontainer div the page images will meet\n // at the \"gutter\" which is generally offset from the center.\n this.br.twoPage.middle = this.br.twoPage.totalWidth >> 1;\n this.br.twoPage.gutter = this.br.twoPage.middle + this.gutterOffsetForIndex(firstIndex);\n\n // The left edge of the book cover moves depending on the width of the pages\n // $$$ change to getter\n this.br.twoPage.bookCoverDivLeft = this.br.twoPage.gutter - this.br.twoPage.scaledWL - this.br.twoPage.leafEdgeWidthL - this.br.twoPage.coverInternalPadding;\n // The top edge of the book cover stays a fixed distance from the top\n this.br.twoPage.bookCoverDivTop = this.br.twoPage.coverExternalPadding;\n\n // Book spine\n this.br.twoPage.bookSpineDivHeight = this.br.twoPage.height + 2 * this.br.twoPage.coverInternalPadding;\n this.br.twoPage.bookSpineDivLeft = this.br.twoPage.middle - (this.br.twoPage.bookSpineDivWidth >> 1);\n this.br.twoPage.bookSpineDivTop = this.br.twoPage.bookCoverDivTop;\n\n this.br.reduce = spreadSize.reduce < 0 ? this.br.reduce : spreadSize.reduce; // $$$ really set this here?\n }\n\n /**\n *\n * @param {number} firstIndex\n * @param {number} secondIndex\n * @return {{ width: number, height: number, totalLeafEdgeWidth: number, reduce: number}}\n */\n getIdealSpreadSize(firstIndex, secondIndex) {\n const ideal = {};\n\n // We check which page is closest to a \"normal\" page and use that to set the height\n // for both pages. This means that foldouts and other odd size pages will be displayed\n // smaller than the nominal zoom amount.\n const canon5Dratio = 1.5;\n\n const first = {\n height: this.book._getPageHeight(firstIndex),\n width: this.book._getPageWidth(firstIndex)\n };\n\n const second = {\n height: this.book._getPageHeight(secondIndex),\n width: this.book._getPageWidth(secondIndex)\n };\n\n const firstIndexRatio = first.height / first.width;\n const secondIndexRatio = second.height / second.width;\n\n let ratio;\n if (Math.abs(firstIndexRatio - canon5Dratio) < Math.abs(secondIndexRatio - canon5Dratio)) {\n ratio = firstIndexRatio;\n } else {\n ratio = secondIndexRatio;\n }\n\n const totalLeafEdgeWidth = Math.floor(this.book.getNumLeafs() * 0.1);\n const maxLeafEdgeWidth = Math.floor(this.br.refs.$brContainer.prop('clientWidth') * 0.1);\n ideal.totalLeafEdgeWidth = Math.min(totalLeafEdgeWidth, maxLeafEdgeWidth);\n\n const widthOutsidePages = 2 * (this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding) + ideal.totalLeafEdgeWidth;\n const heightOutsidePages = 2 * (this.br.twoPage.coverInternalPadding + this.br.twoPage.coverExternalPadding);\n\n ideal.width = (this.br.refs.$brContainer.width() - widthOutsidePages) >> 1;\n ideal.width = ideal.width > 10 ? ideal.width - 10 : 1; // $$$ fudge factor\n\n ideal.height = this.br.refs.$brContainer.height() - heightOutsidePages;\n ideal.height = ideal.height > 15 ? ideal.height - 15 : 1; // $$$ fudge factor\n\n if (ideal.height / ratio <= ideal.width) {\n //use height\n ideal.width = Math.floor(ideal.height / ratio) || 1;\n } else {\n //use width\n ideal.height = Math.floor(ideal.width * ratio) || 1;\n }\n\n // $$$ check this logic with large spreads\n ideal.reduce = Math.round(((first.height + second.height) / 2) / ideal.height);\n\n return ideal;\n }\n\n /**\n * Returns the spread size calculated from the reduction factor for the given pages\n * @param {number} firstIndex\n * @param {number} secondIndex\n * @return {Object}\n */\n getSpreadSizeFromReduce(firstIndex, secondIndex, reduce) {\n const spreadSize = {};\n // $$$ Scale this based on reduce?\n const totalLeafEdgeWidth = Math.floor(this.book.getNumLeafs() * 0.1);\n // $$$ Assumes leaf edge width constant at all zoom levels\n const maxLeafEdgeWidth = Math.floor(this.br.refs.$brContainer.prop('clientWidth') * 0.1);\n spreadSize.totalLeafEdgeWidth = Math.min(totalLeafEdgeWidth, maxLeafEdgeWidth);\n\n // $$$ Possibly incorrect -- we should make height \"dominant\"\n const nativeWidth = this.book._getPageWidth(firstIndex) + this.book._getPageWidth(secondIndex);\n const nativeHeight = this.book._getPageHeight(firstIndex) + this.book._getPageHeight(secondIndex);\n spreadSize.height = Math.floor( (nativeHeight / 2) / this.br.reduce );\n spreadSize.width = Math.floor( (nativeWidth / 2) / this.br.reduce );\n spreadSize.reduce = reduce;\n\n return spreadSize;\n }\n\n /**\n * Returns the current ideal reduction factor\n * @return {number}\n */\n getAutofitReduce() {\n const spreadSize = this.getIdealSpreadSize(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR);\n return spreadSize.reduce;\n }\n\n /**\n * Returns true if the pages extend past the edge of the view\n * @deprecated slated for deprecation by v5.0.0\n * @return {boolean}\n */\n isZoomedIn() {\n let isZoomedIn = false;\n if (this.br.twoPage.autofit != 'auto') {\n if (this.br.reduce < this.getAutofitReduce()) {\n isZoomedIn = true;\n }\n }\n return isZoomedIn;\n }\n\n calculateReductionFactors() {\n this.br.twoPage.reductionFactors = this.br.reductionFactors.concat([\n {\n reduce: this.getIdealSpreadSize( this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR ).reduce,\n autofit: 'auto'\n }\n ]);\n this.br.twoPage.reductionFactors.sort(this.br._reduceSort);\n }\n\n /**\n * Set the cursor for two page view\n * @deprecated Since version 4.3.3. Will be deleted in version 5.0\n */\n setCursor() {\n console.warn('Call to deprecated method, Mode2Up.setCursor. No-op.');\n }\n\n /**\n * @param {Number|null} index to flip back one spread, pass index=null\n */\n flipBackToIndex(index) {\n if (this.br.constMode1up == this.br.mode) return;\n if (this.br.animating) return;\n\n if (null != this.br.leafEdgeTmp) {\n alert('error: leafEdgeTmp should be null!');\n return;\n }\n\n if (null == index) {\n const {currentIndexL, currentIndexR} = this.br.twoPage;\n const minDisplayedIndex = Math.min(currentIndexL, currentIndexR);\n const prev = this.book.getPage(minDisplayedIndex).findPrev({ combineConsecutiveUnviewables: true });\n if (!prev) return;\n index = prev.index;\n // Can only flip to a left page\n // (downstream code handles index = -1, so this is ok I guess)\n if (prev.pageSide == 'R') index--;\n }\n\n this.br.updateNavIndexThrottled(index);\n\n const previousIndices = this.book.getSpreadIndices(index);\n\n if (previousIndices[0] < this.br.firstDisplayableIndex() || previousIndices[1] < this.br.firstDisplayableIndex()) {\n return;\n }\n\n this.br.animating = true;\n\n if ('rl' != this.br.pageProgression) {\n // Assume LTR and we are going backward\n this.prepareFlipLeftToRight(previousIndices[0], previousIndices[1]);\n this.flipLeftToRight(previousIndices[0], previousIndices[1]);\n } else {\n // RTL and going backward\n this.prepareFlipRightToLeft(previousIndices[0], previousIndices[1]);\n this.flipRightToLeft(previousIndices[0], previousIndices[1]);\n }\n }\n\n /**\n * Flips the page on the left towards the page on the right\n * @param {number} newIndexL\n * @param {number} newIndexR\n */\n flipLeftToRight(newIndexL, newIndexR) {\n this.br.refs.$brContainer.addClass(\"BRpageFlipping\");\n const leftLeaf = this.br.twoPage.currentIndexL;\n\n const oldLeafEdgeWidthL = this.br.leafEdgeWidth(this.br.twoPage.currentIndexL);\n const newLeafEdgeWidthL = this.br.leafEdgeWidth(newIndexL);\n const leafEdgeTmpW = oldLeafEdgeWidthL - newLeafEdgeWidthL;\n\n const currWidthL = this.getPageWidth(leftLeaf);\n const newWidthL = this.getPageWidth(newIndexL);\n const newWidthR = this.getPageWidth(newIndexR);\n\n const top = this.top();\n const gutter = this.br.twoPage.middle + this.gutterOffsetForIndex(newIndexL);\n\n //animation strategy:\n // 0. remove search highlight, if any.\n // 1. create a new div, called leafEdgeTmp to represent the leaf edge between the leftmost edge\n // of the left leaf and where the user clicked in the leaf edge.\n // Note that if this function was triggered by left() and not a\n // mouse click, the width of leafEdgeTmp is very small (zero px).\n // 2. animate both leafEdgeTmp to the gutter (without changing its width) and animate\n // leftLeaf to width=0.\n // 3. When step 2 is finished, animate leafEdgeTmp to right-hand side of new right leaf\n // (left=gutter+newWidthR) while also animating the new right leaf from width=0 to\n // its new full width.\n // 4. After step 3 is finished, do the following:\n // - remove leafEdgeTmp from the dom.\n // - resize and move the right leaf edge (leafEdgeR) to left=gutter+newWidthR\n // and width=twoPage.edgeWidth-newLeafEdgeWidthL.\n // - resize and move the left leaf edge (leafEdgeL) to left=gutter-newWidthL-newLeafEdgeWidthL\n // and width=newLeafEdgeWidthL.\n // - resize the back cover (twoPage.coverDiv) to left=gutter-newWidthL-newLeafEdgeWidthL-10\n // and width=newWidthL+newWidthR+twoPage.edgeWidth+20\n // - move new left leaf (newIndexL) forward to zindex=2 so it can receive clicks.\n // - remove old left and right leafs from the dom [prunePageContainers()].\n // - prefetch new adjacent leafs.\n // - set up click handlers for both new left and right leafs.\n // - redraw the search highlight.\n // - update the pagenum box and the url.\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n const leftEdgeTmpLeft = gutter - currWidthL - leafEdgeTmpW;\n\n this.br.leafEdgeTmp = document.createElement('div');\n this.br.leafEdgeTmp.className = 'BRleafEdgeTmp';\n $(this.br.leafEdgeTmp).css({\n width: `${leafEdgeTmpW}px`,\n height: `${this.br.twoPage.height}px`,\n left: `${leftEdgeTmpLeft}px`,\n top: `${top}px`,\n zIndex: 1000,\n }).appendTo($twoPageViewEl);\n\n $(this.leafEdgeL).css({\n width: `${newLeafEdgeWidthL}px`,\n left: `${gutter - currWidthL - newLeafEdgeWidthL}px`\n });\n\n // Left gets the offset of the current left leaf from the document\n const left = this.pageContainers[leftLeaf].$container.offset().left;\n // $$$ This seems very similar to the gutter. May be able to consolidate the logic.\n const right = `${$twoPageViewEl.prop('clientWidth') - left - this.pageContainers[leftLeaf].$container.width() + $twoPageViewEl.offset().left - 2}px`;\n\n // We change the left leaf to right positioning\n // $$$ This causes animation glitches during resize. See https://bugs.edge.launchpad.net/gnubook/+bug/328327\n this.pageContainers[leftLeaf].$container.css({\n right,\n left: ''\n });\n\n $(this.br.leafEdgeTmp).animate({left: gutter}, this.br.flipSpeed, 'easeInSine');\n\n if (this.br.enableSearch) this.br.removeSearchHilites();\n\n this.pageContainers[leftLeaf].$container.animate({width: '0px'}, this.br.flipSpeed, 'easeInSine', () => {\n\n $(this.br.leafEdgeTmp).animate({left: `${gutter + newWidthR}px`}, this.br.flipSpeed, 'easeOutSine');\n\n this.br.$('.BRgutter').css({left: `${gutter - this.br.twoPage.bookSpineDivWidth * 0.5}px`});\n\n this.pageContainers[newIndexR].$container.animate({width: `${newWidthR}px`}, this.br.flipSpeed, 'easeOutSine', () => {\n this.pageContainers[newIndexL].$container.css('zIndex', 2);\n\n $(this.leafEdgeR).css({\n // Moves the right leaf edge\n width: `${this.br.twoPage.edgeWidth - newLeafEdgeWidthL}px`,\n left: `${gutter + newWidthR}px`\n });\n\n $(this.leafEdgeL).css({\n // Moves and resizes the left leaf edge\n width: `${newLeafEdgeWidthL}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL}px`\n });\n\n // Resizes the brown border div\n $(this.br.twoPage.coverDiv).css({\n width: `${this.coverWidth(newWidthL + newWidthR)}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL - this.br.twoPage.coverInternalPadding}px`\n });\n\n $(this.br.leafEdgeTmp).remove();\n this.br.leafEdgeTmp = null;\n\n // $$$ TODO refactor with opposite direction flip\n\n this.br.twoPage.currentIndexL = newIndexL;\n this.br.twoPage.currentIndexR = newIndexR;\n this.br.twoPage.scaledWL = newWidthL;\n this.br.twoPage.scaledWR = newWidthR;\n this.br.twoPage.gutter = gutter;\n\n this.br.updateFirstIndex(this.br.twoPage.currentIndexL);\n this.br.displayedIndices = [newIndexL, newIndexR];\n this.prunePageContainers();\n this.br.animating = false;\n\n this.resizeSpread();\n\n if (this.br.enableSearch) this.br.updateSearchHilites();\n\n this.setMouseHandlers();\n\n if (this.br.animationFinishedCallback) {\n this.br.animationFinishedCallback();\n this.br.animationFinishedCallback = null;\n }\n\n this.br.refs.$brContainer.removeClass(\"BRpageFlipping\");\n this.br.textSelectionPlugin?.stopPageFlip(this.br.refs.$brContainer);\n this.centerView();\n this.br.trigger('pageChanged');\n\n // get next previous batch immediately\n this.prunePageContainers();\n this.createPageContainer(newIndexL - 2);\n this.createPageContainer(newIndexR - 2);\n this.createPageContainer(newIndexL - 3);\n this.createPageContainer(newIndexR - 3);\n });\n });\n }\n\n /**\n * @param {PageIndex} index\n */\n createPageContainer(index, fetch = false) {\n if (!this.pageContainers[index]) {\n this.pageContainers[index] = this.br._createPageContainer(index);\n }\n this.pageContainers[index].update({ reduce: this.br.reduce });\n return this.pageContainers[index];\n }\n\n /**\n * Whether we flip left or right is dependent on the page progression\n * to flip forward one spread, pass index=null\n * @param {number} index\n */\n flipFwdToIndex(index) {\n if (this.br.animating) return;\n\n if (null != this.br.leafEdgeTmp) {\n alert('error: leafEdgeTmp should be null!');\n return;\n }\n\n if (null == index) {\n // Need to use the max here, since it could be a right to left book\n const {currentIndexL, currentIndexR} = this.br.twoPage;\n const maxDisplayedIndex = Math.max(currentIndexL, currentIndexR);\n const nextPage = this.book.getPage(maxDisplayedIndex).findNext({ combineConsecutiveUnviewables: true });\n if (!nextPage) return;\n index = nextPage.index;\n }\n if (index > this.br.lastDisplayableIndex()) return;\n\n this.br.updateNavIndexThrottled(index);\n\n this.br.animating = true;\n\n const nextIndices = this.book.getSpreadIndices(index);\n\n if ('rl' != this.br.pageProgression) {\n // We did not specify RTL\n this.prepareFlipRightToLeft(nextIndices[0], nextIndices[1]);\n this.flipRightToLeft(nextIndices[0], nextIndices[1]);\n } else {\n // RTL\n this.prepareFlipLeftToRight(nextIndices[0], nextIndices[1]);\n this.flipLeftToRight(nextIndices[0], nextIndices[1]);\n }\n }\n\n /**\n * Flip from left to right and show the nextL and nextR indices on those sides\n * $$$ better not to have to pass gutter in\n * @param {number} newIndexL\n * @param {number} newIndexR\n */\n flipRightToLeft(newIndexL, newIndexR) {\n this.br.refs.$brContainer.addClass(\"BRpageFlipping\");\n\n const oldLeafEdgeWidthL = this.br.leafEdgeWidth(this.br.twoPage.currentIndexL);\n const oldLeafEdgeWidthR = this.br.twoPage.edgeWidth - oldLeafEdgeWidthL;\n const newLeafEdgeWidthL = this.br.leafEdgeWidth(newIndexL);\n const newLeafEdgeWidthR = this.br.twoPage.edgeWidth - newLeafEdgeWidthL;\n\n const leafEdgeTmpW = oldLeafEdgeWidthR - newLeafEdgeWidthR;\n\n const top = this.top();\n const scaledW = this.getPageWidth(this.br.twoPage.currentIndexR);\n\n const middle = this.br.twoPage.middle;\n const gutter = middle + this.gutterOffsetForIndex(newIndexL);\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n\n this.br.leafEdgeTmp = document.createElement('div');\n this.br.leafEdgeTmp.className = 'BRleafEdgeTmp';\n $(this.br.leafEdgeTmp).css({\n width: `${leafEdgeTmpW}px`,\n height: `${this.br.twoPage.height}px`,\n left: `${gutter + scaledW}px`,\n top: `${top}px`,\n zIndex:1000\n }).appendTo($twoPageViewEl);\n\n const newWidthL = this.getPageWidth(newIndexL);\n const newWidthR = this.getPageWidth(newIndexR);\n\n $(this.leafEdgeR).css({width: `${newLeafEdgeWidthR}px`, left: `${gutter + newWidthR}px` });\n const speed = this.br.flipSpeed;\n\n if (this.br.enableSearch) this.br.removeSearchHilites();\n\n $(this.br.leafEdgeTmp).animate({left: gutter}, speed, 'easeInSine');\n this.pageContainers[this.br.twoPage.currentIndexR].$container.animate({width: '0px'}, speed, 'easeInSine', () => {\n this.br.$('BRgutter').css({left: `${gutter - this.br.twoPage.bookSpineDivWidth * 0.5}px`});\n $(this.br.leafEdgeTmp).animate({left: `${gutter - newWidthL - leafEdgeTmpW}px`}, speed, 'easeOutSine');\n this.pageContainers[newIndexL].$container.animate({width: `${newWidthL}px`}, speed, 'easeOutSine', () => {\n this.pageContainers[newIndexR].$container.css('zIndex', 2);\n\n $(this.leafEdgeL).css({\n width: `${newLeafEdgeWidthL}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL}px`\n });\n\n // Resizes the book cover\n $(this.br.twoPage.coverDiv).css({\n width: `${this.coverWidth(newWidthL + newWidthR)}px`,\n left: `${gutter - newWidthL - newLeafEdgeWidthL - this.br.twoPage.coverInternalPadding}px`\n });\n\n $(this.br.leafEdgeTmp).remove();\n this.br.leafEdgeTmp = null;\n\n this.br.twoPage.currentIndexL = newIndexL;\n this.br.twoPage.currentIndexR = newIndexR;\n this.br.twoPage.scaledWL = newWidthL;\n this.br.twoPage.scaledWR = newWidthR;\n this.br.twoPage.gutter = gutter;\n\n this.br.updateFirstIndex(this.br.twoPage.currentIndexL);\n this.br.displayedIndices = [newIndexL, newIndexR];\n this.prunePageContainers();\n this.br.animating = false;\n\n this.resizeSpread();\n\n if (this.br.enableSearch) this.br.updateSearchHilites();\n\n this.setMouseHandlers();\n\n if (this.br.animationFinishedCallback) {\n this.br.animationFinishedCallback();\n this.br.animationFinishedCallback = null;\n }\n\n this.br.refs.$brContainer.removeClass(\"BRpageFlipping\");\n this.br.textSelectionPlugin?.stopPageFlip(this.br.refs.$brContainer);\n this.centerView();\n this.br.trigger('pageChanged');\n\n this.prunePageContainers();\n this.createPageContainer(newIndexL + 2);\n this.createPageContainer(newIndexR + 2);\n this.createPageContainer(newIndexL + 3);\n this.createPageContainer(newIndexR + 3);\n });\n });\n }\n\n setMouseHandlers() {\n /**\n * @param {HTMLElement} element\n * @param {JQuery.MouseDownEvent<HTMLElement, { self: Mode2Up, direction: 'R' | 'L'}>} e\n */\n const handler = function(element, e) {\n if (e.which == 3) {\n // right click\n return !e.data.self.br.protected;\n }\n e.data.self.br.trigger(EVENTS.stop);\n e.data.self.br[e.data.direction === 'L' ? 'left' : 'right']();\n\n // Removed event handler for mouse movement, seems not to be needed\n /*\n // Changes per WEBDEV-2737\n BookReader: zoomed-in 2 page view, clicking page should change the page\n $(element)\n .mousemove(function() {\n e.preventDefault();\n })\n */\n };\n\n this.setClickHandler(\n this.pageContainers[this.br.twoPage.currentIndexR].$container[0],\n { self: this, direction: 'R' },\n handler\n );\n this.setClickHandler(\n this.pageContainers[this.br.twoPage.currentIndexL].$container[0],\n { self: this, direction: 'L' },\n handler\n );\n }\n\n /**\n * Prepare to flip the left page towards the right. This corresponds to moving\n * backward when the page progression is left to right.\n * @param {number} prevL\n * @param {number} prevR\n */\n prepareFlipLeftToRight(prevL, prevR) {\n this.createPageContainer(prevL, true);\n this.createPageContainer(prevR, true);\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n const height = this.book._getPageHeight(prevL);\n const width = this.book._getPageWidth(prevL);\n const middle = this.br.twoPage.middle;\n const top = this.top();\n const scaledW = this.br.twoPage.height * width / height; // $$$ assumes height of page is dominant\n\n // The gutter is the dividing line between the left and right pages.\n // It is offset from the middle to create the illusion of thickness to the pages\n const gutter = middle + this.gutterOffsetForIndex(prevL);\n\n const leftCSS = {\n left: `${gutter - scaledW}px`,\n right: '', // clear right property\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: `${scaledW}px`,\n zIndex: 1\n };\n\n this.pageContainers[prevL].$container\n .css(leftCSS)\n .appendTo($twoPageViewEl);\n\n const rightCSS = {\n left: `${gutter}px`,\n right: '',\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: '0',\n zIndex: 2\n };\n\n this.pageContainers[prevR].$container\n .css(rightCSS)\n .appendTo($twoPageViewEl);\n }\n\n /**\n * // $$$ mang we're adding an extra pixel in the middle. See https://bugs.edge.launchpad.net/gnubook/+bug/411667\n */\n prepareFlipRightToLeft(nextL, nextR) {\n this.createPageContainer(nextL, true);\n this.createPageContainer(nextR, true);\n\n const $twoPageViewEl = this.br.refs.$brTwoPageView;\n let height = this.book._getPageHeight(nextR);\n let width = this.book._getPageWidth(nextR);\n const middle = this.br.twoPage.middle;\n const top = this.top();\n let scaledW = this.br.twoPage.height * width / height;\n\n const gutter = middle + this.gutterOffsetForIndex(nextL);\n\n $(this.pageContainers[nextR].$container).css({\n left: `${gutter}px`,\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: `${scaledW}px`,\n zIndex: 1,\n })\n .appendTo($twoPageViewEl);\n\n height = this.book._getPageHeight(nextL);\n width = this.book._getPageWidth(nextL);\n scaledW = this.br.twoPage.height * width / height;\n\n $(this.pageContainers[nextL].$container).css({\n right: `${$twoPageViewEl.prop('clientWidth') - gutter}px`,\n top: `${top}px`,\n height: this.br.twoPage.height,\n width: '0px', // Start at 0 width, then grow to the left\n zIndex: 2,\n })\n .appendTo($twoPageViewEl);\n }\n\n getPageWidth(index) {\n // We return the width based on the dominant height\n const height = this.book._getPageHeight(index);\n const width = this.book._getPageWidth(index);\n // $$$ we assume width is relative to current spread\n return Math.floor(this.br.twoPage.height * width / height);\n }\n\n /**\n * Returns the position of the gutter (line between the page images)\n */\n gutter() {\n return this.br.twoPage.middle + this.gutterOffsetForIndex(this.br.twoPage.currentIndexL);\n }\n\n /**\n * Returns the offset for the top of the page images\n */\n top() {\n return this.br.twoPage.coverExternalPadding + this.br.twoPage.coverInternalPadding; // $$$ + border?\n }\n\n /**\n * Returns the width of the cover div given the total page width\n * @param {number} totalPageWidth\n * @return {number}\n */\n coverWidth(totalPageWidth) {\n return totalPageWidth + this.br.twoPage.edgeWidth + 2 * this.br.twoPage.coverInternalPadding;\n }\n\n /**\n * Returns the percentage offset into twopageview div at the center of container div\n */\n getViewCenter() {\n const { $brContainer, $brTwoPageView } = this.br.refs;\n const center = {};\n\n const containerOffset = $brContainer.offset();\n const viewOffset = $brTwoPageView.offset();\n center.percentageX = (containerOffset.left - viewOffset.left + ($brContainer.prop('clientWidth') >> 1)) / this.br.twoPage.totalWidth;\n center.percentageY = (containerOffset.top - viewOffset.top + ($brContainer.prop('clientHeight') >> 1)) / this.br.twoPage.totalHeight;\n\n return center;\n }\n\n /**\n * Centers the point given by percentage from left,top of twopageview\n * @param {number} [percentageX=0.5]\n * @param {number} [percentageY=0.5]\n */\n centerView(percentageX, percentageY) {\n\n if ('undefined' == typeof(percentageX)) {\n percentageX = 0.5;\n }\n if ('undefined' == typeof(percentageY)) {\n percentageY = 0.5;\n }\n\n const viewWidth = this.br.refs.$brTwoPageView.width();\n const containerClientWidth = this.br.refs.$brContainer.prop('clientWidth');\n const intoViewX = percentageX * viewWidth;\n\n const viewHeight = this.br.refs.$brTwoPageView.height();\n const containerClientHeight = this.br.refs.$brContainer.prop('clientHeight');\n const intoViewY = percentageY * viewHeight;\n\n if (viewWidth < containerClientWidth) {\n // Can fit width without scrollbars - center by adjusting offset\n this.br.refs.$brTwoPageView.css('left', `${(containerClientWidth >> 1) - intoViewX}px`);\n } else {\n // Need to scroll to center\n this.br.refs.$brTwoPageView.css('left', 0);\n this.br.refs.$brContainer.scrollLeft(intoViewX - (containerClientWidth >> 1));\n }\n\n if (viewHeight < containerClientHeight) {\n // Fits with scrollbars - add offset\n this.br.refs.$brTwoPageView.css('top', `${(containerClientHeight >> 1) - intoViewY}px`);\n } else {\n this.br.refs.$brTwoPageView.css('top', 0);\n this.br.refs.$brContainer.scrollTop(intoViewY - (containerClientHeight >> 1));\n }\n }\n\n /**\n * Returns the integer height of the click-to-flip areas at the edges of the book\n * @return {number}\n */\n flipAreaHeight() {\n return Math.floor(this.br.twoPage.height);\n }\n\n /**\n * Returns the the integer width of the flip areas\n * @return {number}\n */\n flipAreaWidth() {\n const max = 100; // $$$ TODO base on view width?\n const min = 10;\n\n const width = this.br.twoPage.width * 0.15;\n return Math.floor(clamp(width, min, max));\n }\n\n /**\n * Returns integer top offset for flip areas\n * @return {number}\n */\n flipAreaTop() {\n return Math.floor(this.br.twoPage.bookCoverDivTop + this.br.twoPage.coverInternalPadding);\n }\n\n /**\n * Left offset for left flip area\n * @return {number}\n */\n leftFlipAreaLeft() {\n return Math.floor(this.br.twoPage.gutter - this.br.twoPage.scaledWL);\n }\n\n /**\n * Left offset for right flip area\n * @return {number}\n */\n rightFlipAreaLeft() {\n return Math.floor(this.br.twoPage.gutter + this.br.twoPage.scaledWR - this.flipAreaWidth());\n }\n\n /**\n * Position calculation shared between search and text-to-speech functions\n */\n setHilightCss(div, index, left, right, top, bottom) {\n // We calculate the reduction factor for the specific page because it can be different\n // for each page in the spread\n const height = this.book._getPageHeight(index);\n const width = this.book._getPageWidth(index);\n const reduce = this.br.twoPage.height / height;\n const scaledW = Math.floor(width * reduce);\n\n const gutter = this.gutter();\n let pageL;\n if ('L' == this.book.getPageSide(index)) {\n pageL = gutter - scaledW;\n } else {\n pageL = gutter;\n }\n const pageT = this.top();\n\n $(div).css({\n width: `${(right - left) * reduce}px`,\n height: `${(bottom - top) * reduce}px`,\n left: `${pageL + left * reduce}px`,\n top: `${pageT + top * reduce}px`\n });\n }\n\n /**\n * Returns the gutter offset for the spread containing the given index.\n * This function supports RTL\n * @param {number} pindex\n * @return {number}\n */\n gutterOffsetForIndex(pindex) {\n // To find the offset of the gutter from the middle we calculate our percentage distance\n // through the book (0..1), remap to (-0.5..0.5) and multiply by the total page edge width\n let offset = Math.floor(((pindex / this.book.getNumLeafs()) - 0.5) * this.br.twoPage.edgeWidth);\n\n // But then again for RTL it's the opposite\n if ('rl' == this.br.pageProgression) {\n offset *= -1;\n }\n\n return offset;\n }\n\n /**\n * Returns the width of the leaf edge div for the page with index given\n * @param {number} pindex\n * @return {number}\n */\n leafEdgeWidth(pindex) {\n // $$$ could there be single pixel rounding errors for L vs R?\n if ((this.book.getPageSide(pindex) == 'L') && (this.br.pageProgression != 'rl')) {\n return Math.floor( (pindex / this.book.getNumLeafs()) * this.br.twoPage.edgeWidth + 0.5);\n } else {\n return Math.floor( (1 - pindex / this.book.getNumLeafs()) * this.br.twoPage.edgeWidth + 0.5);\n }\n }\n\n /**\n * Returns the target jump leaf given a page coordinate (inside the left page edge div)\n * @param {number} pageX\n * @return {PageIndex}\n */\n jumpIndexForLeftEdgePageX(pageX) {\n let jumpIndex;\n if ('rl' != this.br.pageProgression) {\n // LTR - flipping backward\n jumpIndex = this.br.twoPage.currentIndexL - ($(this.leafEdgeL).offset().left + $(this.leafEdgeL).width() - pageX) * 10;\n\n // browser may have resized the div due to font size change -- see https://bugs.launchpad.net/gnubook/+bug/333570\n jumpIndex = clamp(Math.round(jumpIndex), this.br.firstDisplayableIndex(), this.br.twoPage.currentIndexL - 2);\n return jumpIndex;\n\n } else {\n jumpIndex = this.br.twoPage.currentIndexL + ($(this.leafEdgeL).offset().left + $(this.leafEdgeL).width() - pageX) * 10;\n jumpIndex = clamp(Math.round(jumpIndex), this.br.twoPage.currentIndexL + 2, this.br.lastDisplayableIndex());\n return jumpIndex;\n }\n }\n\n /**\n * Returns the target jump leaf given a page coordinate (inside the right page edge div)\n * @param {number} pageX\n * @return {PageIndex}\n */\n jumpIndexForRightEdgePageX(pageX) {\n let jumpIndex;\n if ('rl' != this.br.pageProgression) {\n // LTR\n jumpIndex = this.br.twoPage.currentIndexL + (pageX - $(this.leafEdgeR).offset().left) * 10;\n jumpIndex = clamp(Math.round(jumpIndex), this.br.twoPage.currentIndexL + 2, this.br.lastDisplayableIndex());\n return jumpIndex;\n } else {\n jumpIndex = this.br.twoPage.currentIndexL - (pageX - $(this.leafEdgeR).offset().left) * 10;\n jumpIndex = clamp(Math.round(jumpIndex), this.br.firstDisplayableIndex(), this.br.twoPage.currentIndexL - 2);\n return jumpIndex;\n }\n }\n\n /**\n * Fetches the currently displayed images (if not already fetching)\n * as wells as any nearby pages.\n */\n prefetch() {\n // $$$ We should check here if the current indices have finished\n // loading (with some timeout) before loading more page images\n // See https://bugs.edge.launchpad.net/bookreader/+bug/511391\n const { max, min } = Math;\n const { book } = this;\n const { currentIndexL, currentIndexR } = this.br.twoPage;\n const ADJACENT_PAGES_TO_LOAD = 2;\n // currentIndexL can be -1; getPage returns the last page of the book\n // when given -1, so need to prevent that.\n let lowPage = book.getPage(max(0, min(currentIndexL, currentIndexR)));\n let highPage = book.getPage(max(currentIndexL, currentIndexR));\n\n for (let i = 0; i < ADJACENT_PAGES_TO_LOAD + 2; i++) {\n if (lowPage) {\n this.createPageContainer(lowPage.index);\n lowPage = lowPage.findPrev({ combineConsecutiveUnviewables: true });\n }\n\n if (highPage) {\n this.createPageContainer(highPage.index);\n highPage = highPage.findNext({ combineConsecutiveUnviewables: true });\n }\n }\n }\n\n /* 2up Container Sizes */\n\n /** main positions for inner containers */\n get baseLeafCss() {\n return {\n position: 'absolute',\n right: '',\n top: `${this.top()}px`,\n zIndex: 2,\n };\n }\n\n /** main height for inner containers */\n get heightCss() {\n return {\n height: `${this.br.twoPage.height}px`, // $$$ height forced the same for both pages\n };\n }\n\n /** Left Page sizing */\n get leftLeafCss() {\n return {\n ...this.baseLeafCss,\n ...this.heightCss,\n left: `${this.br.twoPage.gutter - this.br.twoPage.scaledWL}px`,\n width: `${this.br.twoPage.scaledWL}px`,\n };\n }\n\n /** Left side book thickness */\n get leafEdgeLCss() {\n return {\n ...this.heightCss,\n width: `${this.br.twoPage.leafEdgeWidthL}px`,\n left: `${this.br.twoPage.bookCoverDivLeft + this.br.twoPage.coverInternalPadding}px`,\n top: `${this.br.twoPage.bookCoverDivTop + this.br.twoPage.coverInternalPadding}px`,\n border: this.br.twoPage.leafEdgeWidthL === 0 ? 'none' : null\n };\n }\n\n /** Right Page sizing */\n get rightLeafCss() {\n return {\n ...this.baseLeafCss,\n ...this.heightCss,\n left: `${this.br.twoPage.gutter}px`,\n width: `${this.br.twoPage.scaledWR}px`,\n };\n }\n\n /** Right side book thickness */\n get leafEdgeRCss() {\n return {\n ...this.heightCss,\n width: `${this.br.twoPage.leafEdgeWidthR}px`,\n left: `${this.br.twoPage.scaledWL + this.br.twoPage.scaledWR + this.br.twoPage.leafEdgeWidthL}px`,\n top: `${this.br.twoPage.bookCoverDivTop + this.br.twoPage.coverInternalPadding}px`,\n border: this.br.twoPage.leafEdgeWidthR === 0 ? 'none' : null\n };\n }\n\n /** main container sizing */\n get mainContainerCss() {\n return {\n height: `${this.br.twoPage.totalHeight}px`,\n width: `${this.br.twoPage.totalWidth}px`,\n position: 'absolute'\n };\n }\n\n /** book cover sizing */\n get spreadCoverCss() {\n return {\n width: `${this.br.twoPage.bookCoverDivWidth}px`,\n height: `${this.br.twoPage.bookCoverDivHeight}px`,\n visibility: 'visible'\n };\n }\n\n /** book spine sizing */\n get spineCss() {\n return {\n width: `${this.br.twoPage.bookSpineDivWidth}px`,\n height: `${this.br.twoPage.bookSpineDivHeight}px`,\n left: `${this.br.twoPage.gutter - (this.br.twoPage.bookSpineDivWidth / 2)}px`,\n top: `${this.br.twoPage.bookSpineDivTop}px`\n };\n }\n /** end CSS */\n}\n\n/**\n * @implements {BookReaderOptions[\"twoPage\"]}\n * @typedef {object} TwoPageState\n * @property {number} coverInternalPadding\n * @property {number} coverExternalPadding\n *\n * @property {import('./options.js').AutoFitValues} autofit\n * @property {number} width\n * @property {number} height\n * @property {number} currentIndexL\n * @property {number} currentIndexR\n * @property {number} scaledWL\n * @property {number} scaledWR\n * @property {number} gutter\n * @property {Array<{reduce: number, autofit: import('./options.js').AutoFitValues}>} reductionFactors\n * @property {number} totalHeight\n * @property {number} totalWidth\n *\n * @property {HTMLDivElement} coverDiv\n * @property {number} bookCoverDivTop\n * @property {number} bookCoverDivLeft\n * @property {number} bookCoverDivWidth\n * @property {number} bookCoverDivHeight\n *\n * @property {number} leafEdgeWidthL\n * @property {number} leafEdgeWidthR\n *\n * @property {number} bookSpineDivTop\n * @property {number} bookSpineDivLeft\n * @property {number} bookSpineDivWidth\n * @property {number} bookSpineDivHeight\n *\n * @property {number} edgeWidth\n * @property {number} middle\n */\n","// @ts-check\nimport { notInArray, clamp } from './utils.js';\nimport { EVENTS } from './events.js';\n/** @typedef {import('../BookREader.js').default} BookReader */\n/** @typedef {import('./BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('./BookModel.js').BookModel} BookModel */\n\n/** @typedef {JQuery} $lazyLoadImgPlaceholder * jQuery element with data attributes: leaf, reduce */\n\nexport class ModeThumb {\n /**\n * @param {BookReader} br\n * @param {BookModel} bookModel\n */\n constructor(br, bookModel) {\n this.br = br;\n this.book = bookModel;\n }\n\n /**\n * Draws the thumbnail view\n * @param {number} [seekIndex] If seekIndex is defined, the view will be drawn\n * with that page visible (without any animated scrolling).\n *\n * Creates place holder for image to load after gallery has been drawn\n */\n drawLeafs(seekIndex) {\n const { floor } = Math;\n const { book } = this;\n const viewWidth = this.br.refs.$brContainer.prop('scrollWidth') - 20; // width minus buffer\n\n let leafHeight;\n let rightPos = 0;\n let bottomPos = 0;\n let maxRight = 0;\n let currentRow = 0;\n let leafIndex = 0;\n /** @type {Array<{ leafs?: Array<{num: PageIndex, left: number}>, height?: number, top?: number }>} */\n const leafMap = [];\n\n // Will be set to top of requested seek index, if set\n let seekTop;\n\n // Calculate the position of every thumbnail. $$$ cache instead of calculating on every draw\n // make `leafMap`\n for (const page of book.pagesIterator({ combineConsecutiveUnviewables: true })) {\n const leafWidth = this.br.thumbWidth;\n if (rightPos + (leafWidth + this.br.thumbPadding) > viewWidth) {\n currentRow++;\n rightPos = 0;\n leafIndex = 0;\n }\n\n // Init current row in leafMap\n if (!leafMap[currentRow]) {\n leafMap[currentRow] = {};\n }\n if (!leafMap[currentRow].leafs) {\n leafMap[currentRow].leafs = [];\n leafMap[currentRow].height = 0;\n leafMap[currentRow].top = 0;\n }\n leafMap[currentRow].leafs[leafIndex] = {\n num: page.index,\n left: rightPos,\n };\n\n leafHeight = floor((page.height * this.br.thumbWidth) / page.width);\n if (leafHeight > leafMap[currentRow].height) {\n leafMap[currentRow].height = leafHeight;\n }\n if (leafIndex === 0) { bottomPos += this.br.thumbPadding + leafMap[currentRow].height; }\n rightPos += leafWidth + this.br.thumbPadding;\n if (rightPos > maxRight) { maxRight = rightPos; }\n leafIndex++;\n\n if (page.index == seekIndex) {\n seekTop = bottomPos - this.br.thumbPadding - leafMap[currentRow].height;\n }\n }\n\n // reset the bottom position based on thumbnails\n this.br.refs.$brPageViewEl.height(bottomPos);\n\n const pageViewBuffer = floor((this.br.refs.$brContainer.prop('scrollWidth') - maxRight) / 2) - 14;\n\n // If seekTop is defined, seeking was requested and target found\n if (typeof(seekTop) != 'undefined') {\n this.br.refs.$brContainer.scrollTop(seekTop);\n }\n\n const scrollTop = this.br.refs.$brContainer.prop('scrollTop');\n const scrollBottom = scrollTop + this.br.refs.$brContainer.height();\n\n let leafTop = 0;\n let leafBottom = 0;\n const rowsToDisplay = [];\n const imagesToDisplay = [];\n\n // Visible leafs with least/greatest index\n let leastVisible = book.getNumLeafs() - 1;\n let mostVisible = 0;\n\n // Determine the thumbnails in view\n for (let i = 0; i < leafMap.length; i++) {\n if (!leafMap[i]) { continue; }\n leafBottom += this.br.thumbPadding + leafMap[i].height;\n const topInView = (leafTop >= scrollTop) && (leafTop <= scrollBottom);\n const bottomInView = (leafBottom >= scrollTop) && (leafBottom <= scrollBottom);\n const middleInView = (leafTop <= scrollTop) && (leafBottom >= scrollBottom);\n if (topInView || bottomInView || middleInView) {\n rowsToDisplay.push(i);\n if (leafMap[i].leafs[0].num < leastVisible) {\n leastVisible = leafMap[i].leafs[0].num;\n }\n if (leafMap[i].leafs[leafMap[i].leafs.length - 1].num > mostVisible) {\n mostVisible = leafMap[i].leafs[leafMap[i].leafs.length - 1].num;\n }\n }\n if (leafTop > leafMap[i].top) { leafMap[i].top = leafTop; }\n leafTop = leafBottom;\n }\n // at this point, `rowsToDisplay` now has all the rows in view\n\n // create a buffer of preloaded rows before and after the visible rows\n const firstRow = rowsToDisplay[0];\n const lastRow = rowsToDisplay[rowsToDisplay.length - 1];\n for (let i = 1; i < this.br.thumbRowBuffer + 1; i++) {\n if (lastRow + i < leafMap.length) { rowsToDisplay.push(lastRow + i); }\n }\n for (let i = 1; i < this.br.thumbRowBuffer; i++) {\n if (firstRow - i >= 0) { rowsToDisplay.push(firstRow - i); }\n }\n rowsToDisplay.sort();\n\n // Create the thumbnail divs and images (lazy loaded)\n for (const row of rowsToDisplay) {\n if (notInArray(row, this.br.displayedRows)) {\n if (!leafMap[row]) { continue; }\n for (const { num: leaf, left: leafLeft } of leafMap[row].leafs) {\n const leafWidth = this.br.thumbWidth;\n const leafHeight = floor((book.getPageHeight(leaf) * this.br.thumbWidth) / book.getPageWidth(leaf));\n const leafTop = leafMap[row].top;\n let left = leafLeft + pageViewBuffer;\n if ('rl' == this.br.pageProgression) {\n left = viewWidth - leafWidth - left;\n }\n\n left += this.br.thumbPadding;\n imagesToDisplay.push(leaf);\n\n /* get thumbnail's reducer */\n const idealReduce = floor(book.getPageWidth(leaf) / this.br.thumbWidth);\n const nearestFactor2 = 2 * Math.round(idealReduce / 2);\n const thumbReduce = nearestFactor2;\n\n const pageContainer = this.br._createPageContainer(leaf)\n .update({\n dimensions: {\n width: leafWidth,\n height: leafHeight,\n top: leafTop,\n left,\n },\n reduce: thumbReduce,\n });\n\n pageContainer.$container.data('leaf', leaf).on('mouseup', event => {\n // We want to suppress the fragmentChange triggers in `updateFirstIndex` and `switchMode`\n // because otherwise it repeatedly triggers listeners and we get in an infinite loop.\n // We manually trigger the `fragmentChange` once at the end.\n this.br.updateFirstIndex(leaf, { suppressFragmentChange: true });\n // as per request in webdev-4042, we want to switch 1-up mode while clicking on thumbnail leafs\n this.br.switchMode(this.br.constMode1up, { suppressFragmentChange: true });\n\n // shift viewModeOrder after clicking on thumbsnail leaf\n const nextModeID = this.br.viewModeOrder.shift();\n this.br.viewModeOrder.push(nextModeID);\n this.br.updateViewModeButton($('.viewmode'), 'twopg', 'Two-page view');\n\n this.br.trigger(EVENTS.fragmentChange);\n event.stopPropagation();\n });\n\n this.br.refs.$brPageViewEl.append(pageContainer.$container);\n }\n }\n }\n\n // Remove thumbnails that are not to be displayed\n for (const row of this.br.displayedRows) {\n if (notInArray(row, rowsToDisplay)) {\n for (const { num: index } of leafMap[row]?.leafs) {\n if (!imagesToDisplay?.includes(index)) {\n this.br.$(`.pagediv${index}`)?.remove();\n }\n }\n }\n }\n\n // Update which page is considered current to make sure a visible page is the current one\n const currentIndex = this.br.currentIndex();\n if (currentIndex < leastVisible) {\n this.br.updateFirstIndex(leastVisible);\n } else if (currentIndex > mostVisible) {\n this.br.updateFirstIndex(mostVisible);\n }\n\n // remember what rows are displayed\n this.br.displayedRows = rowsToDisplay.slice();\n\n // remove previous highlights\n this.br.$('.BRpagedivthumb_highlight').removeClass('BRpagedivthumb_highlight');\n\n // highlight current page\n this.br.$('.pagediv' + this.br.currentIndex()).addClass('BRpagedivthumb_highlight');\n\n this.br.updateToolbarZoom(this.br.reduce);\n }\n\n /**\n * Replaces placeholder image with real one\n *\n * @param {$lazyLoadImgPlaceholder} imgPlaceholder\n */\n lazyLoadImage(imgPlaceholder) {\n const leaf = $(imgPlaceholder).data('leaf');\n const reduce = $(imgPlaceholder).data('reduce');\n const $img = this.br.imageCache.image(leaf, reduce);\n const $parent = $(imgPlaceholder).parent();\n /* March 16, 2021 (isa) - manually append & remove, `replaceWith` currently loses closure scope */\n $($parent).append($img);\n $(imgPlaceholder).remove();\n }\n\n /**\n * @param {1 | -1} direction\n */\n zoom(direction) {\n const oldColumns = this.br.thumbColumns;\n switch (direction) {\n case -1:\n this.br.thumbColumns += 1;\n break;\n case 1:\n this.br.thumbColumns -= 1;\n break;\n }\n\n this.br.thumbColumns = clamp(this.br.thumbColumns, 2, 8);\n\n if (this.br.thumbColumns != oldColumns) {\n this.br.displayedRows = []; /* force a gallery redraw */\n this.prepare();\n }\n }\n\n /**\n * Returns the width per thumbnail to display the requested number of columns\n * Note: #BRpageview must already exist since its width is used to calculate the\n * thumbnail width\n * @param {number} thumbnailColumns\n */\n getThumbnailWidth(thumbnailColumns) {\n const DEFAULT_THUMBNAIL_WIDTH = 100;\n\n const padding = (thumbnailColumns + 1) * this.br.thumbPadding;\n const width = (this.br.refs.$brPageViewEl.width() - padding) / (thumbnailColumns + 0.5); // extra 0.5 is for some space at sides\n const idealThumbnailWidth = Math.floor(width);\n return idealThumbnailWidth > 0 ? idealThumbnailWidth : DEFAULT_THUMBNAIL_WIDTH;\n }\n\n prepare() {\n this.br.refs.$brContainer.empty();\n this.br.refs.$brContainer.css({\n overflowY: 'scroll',\n overflowX: 'auto'\n });\n\n this.br.refs.$brPageViewEl = $(\"<div class='BRpageview'></div>\");\n this.br.refs.$brContainer.append(this.br.refs.$brPageViewEl);\n this.br.refs.$brContainer.dragscrollable({preventDefault:true});\n\n this.br.bindGestures(this.br.refs.$brContainer);\n\n // $$$ keep select enabled for now since disabling it breaks keyboard\n // nav in FF 3.6 (https://bugs.edge.launchpad.net/bookreader/+bug/544666)\n // disableSelect(this.br.$('#BRpageview'));\n this.br.thumbWidth = this.getThumbnailWidth(this.br.thumbColumns);\n this.br.reduce = this.book.getPageWidth(0) / this.br.thumbWidth;\n this.br.displayedRows = [];\n // Draw leafs with current index directly in view (no animating to the index)\n this.drawLeafs(this.br.currentIndex());\n this.br.updateBrClasses();\n }\n\n /**\n * @param {PageIndex} index\n */\n jumpToIndex(index) {\n const { floor } = Math;\n const { book } = this;\n const viewWidth = this.br.refs.$brContainer.prop('scrollWidth') - 20; // width minus buffer\n const leafWidth = this.br.thumbWidth;\n let leafTop = 0;\n let rightPos = 0;\n let bottomPos = 0;\n let rowHeight = 0;\n let leafIndex = 0;\n\n for (let i = 0; i <= index; i++) {\n if (rightPos + (leafWidth + this.br.thumbPadding) > viewWidth) {\n rightPos = 0;\n rowHeight = 0;\n leafIndex = 0;\n }\n\n const leafHeight = floor((book.getPageHeight(leafIndex) * this.br.thumbWidth) / book.getPageWidth(leafIndex));\n if (leafHeight > rowHeight) { rowHeight = leafHeight; }\n if (leafIndex == 0) {\n leafTop = bottomPos;\n bottomPos += this.br.thumbPadding + rowHeight;\n }\n rightPos += leafWidth + this.br.thumbPadding;\n leafIndex++;\n }\n this.br.updateFirstIndex(index);\n if (this.br.refs.$brContainer.prop('scrollTop') == leafTop) {\n this.br.drawLeafs();\n } else {\n this.br.animating = true;\n this.br.refs.$brContainer.stop(true)\n .animate({ scrollTop: leafTop }, 'fast', () => { this.br.animating = false; });\n }\n }\n}\n","/** @typedef {import(\"../../BookReader.js\").default} BookReader */\n\nimport 'jquery-ui/ui/widget.js';\nimport 'jquery-ui/ui/widgets/mouse.js';\nimport 'jquery-ui/ui/widgets/slider.js';\nimport { EVENTS } from '../events.js';\n\nexport class Navbar {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n this.br = br;\n\n /** @type {JQuery} */\n this.$root = null;\n /** @type {JQuery} */\n this.$nav = null;\n /** @type {number} */\n this.maxPageNum = null;\n\n /** @type {Object} controls will be switch over \"this.maximumControls\" */\n this.minimumControls = [\n 'viewmode'\n ];\n /** @type {Object} controls will be switch over \"this.minimumControls\" */\n this.maximumControls = [\n 'book_left', 'book_right', 'zoom_in', 'zoom_out', 'onepg', 'twopg', 'thumb'\n ];\n }\n\n controlFor(controlName) {\n const option = this.br.options.controls[controlName];\n if (!option.visible) { return ''; }\n if (option.template) {\n return `<li>${option.template(this.br)}</li>`;\n }\n return `<li>\n <button class=\"BRicon ${option.className}\" title=\"${option.label}\">\n <div class=\"icon icon-${option.iconClassName}\"></div>\n <span class=\"tooltip\">${option.label}</span>\n </button>\n </li>`;\n }\n\n /** @private */\n _renderControls() {\n return [\n 'bookLeft',\n 'bookRight',\n 'onePage',\n 'twoPage',\n 'thumbnail',\n 'viewmode',\n 'zoomOut',\n 'zoomIn',\n 'fullScreen',\n ].map((mode) => (\n this.controlFor(mode)\n )).join('');\n }\n\n /** @private */\n _bindViewModeButton() {\n const { br } = this;\n const viewModeOptions = br.options.controls.viewmode;\n const viewModes = [{\n mode: br.constMode1up,\n className: 'onepg',\n title: 'One-page view',\n }, {\n mode: br.constMode2up,\n className: 'twopg',\n title: 'Two-page view',\n }, {\n mode: br.constModeThumb,\n className: 'thumb',\n title: 'Thumbnail view',\n }].filter((mode) => (\n !viewModeOptions.excludedModes.includes(mode.mode)\n ));\n const viewModeOrder = viewModes.map((m) => m.mode);\n\n if (viewModeOptions.excludedModes.includes(br.mode)) {\n br.switchMode(viewModeOrder[0]);\n }\n\n // Reorder the viewModeOrder so the current view mode is at the end\n const currentModeIndex = viewModeOrder.indexOf(br.mode);\n for (let i = 0; i <= currentModeIndex; i++) {\n viewModeOrder.push(viewModeOrder.shift());\n }\n\n if (viewModes.length < 2) {\n this.$nav.find(`.${viewModeOptions.className}`).remove();\n }\n\n this.br.bind(EVENTS.PostInit, () => {\n const $button = this.$nav.find(`.${viewModeOptions.className}`)\n .off('.bindNavigationHandlers')\n .on('click', (e) => {\n const nextModeID = viewModeOrder.shift();\n const newViewMode = viewModes.find((m) => m.mode === nextModeID);\n const nextViewMode = viewModes.find((m) => m.mode === viewModeOrder[0]);\n\n viewModeOrder.push(nextModeID);\n br.viewModeOrder = viewModeOrder;\n this.updateViewModeButton($(e.currentTarget), nextViewMode.className, nextViewMode.title);\n br.switchMode(newViewMode.mode);\n });\n const currentViewModeButton = viewModes.find((m) => m.mode === viewModeOrder[0]);\n this.updateViewModeButton(\n $button,\n currentViewModeButton.className,\n currentViewModeButton.title\n );\n });\n }\n\n /**\n * Toggle viewmode button to change page view\n */\n updateViewModeButton($button, iconClass, tooltipText) {\n $button\n .attr('title', tooltipText)\n .find('.icon')\n .removeClass()\n .addClass(`icon icon-${iconClass}`)\n .end()\n .find('.tooltip')\n .text(tooltipText);\n }\n\n /**\n * Switch navbar controls on mobile and desktop\n */\n switchNavbarControls() {\n // we don't want navbar controls switching with liner-notes\n if (this.br.options.bookType !== 'linerNotes') {\n if (this.br.refs.$brContainer.prop('clientWidth') < 640) {\n this.showMinimumNavbarControls();\n } else {\n this.showMaximumNavbarControls();\n }\n }\n }\n\n /**\n * Switch Book Navbar controls to minimised\n * NOTE: only `this.minimumControls` and `this.maximumControls` switch on resize\n */\n showMinimumNavbarControls() {\n this.minimumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.remove('hide');\n });\n this.maximumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.add('hide');\n });\n }\n\n /**\n * Switch Book Navbar controls to maximized\n * NOTE: only `this.minimumControls` and `this.maximumControls` switch on resize\n */\n showMaximumNavbarControls() {\n this.maximumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.remove('hide');\n });\n this.minimumControls.forEach((control) => {\n const element = document.querySelector(`.controls .${control}`);\n if (element) element.classList.add('hide');\n });\n }\n\n /**\n * Initialize the navigation bar (bottom)\n * @return {JQuery}\n */\n init() {\n const { br } = this;\n const { navbarTitle: title } = br.options;\n const isRTL = br.pageProgression === 'rl';\n const bookFlipLeft = isRTL ? 'book_flip_next' : 'book_flip_prev';\n const bookFlipRight = isRTL ? 'book_flip_prev' : 'book_flip_next';\n\n this.br.options.controls['bookLeft'].className = `book_left ${bookFlipLeft}`;\n this.br.options.controls['bookRight'].className = `book_right ${bookFlipRight}`;\n\n br.refs.$BRfooter = this.$root = $(`<div class=\"BRfooter\"></div>`);\n br.refs.$BRnav = this.$nav = $(\n `<div class=\"BRnav BRnavDesktop\">\n ${title ? `<div class=\"BRnavTitle\">${title}</div>` : ''}\n <nav class=\"BRcontrols\">\n <ul class=\"controls\">\n <li class=\"scrubber\">\n <div class=\"BRnavpos\">\n <div class=\"BRpager\"></div>\n <div class=\"BRnavline\"></div>\n </div>\n <p><span class='BRcurrentpage'></span></p>\n </li>\n ${this._renderControls()}\n </ul>\n </nav>\n </div>`);\n\n this.$root.append(this.$nav);\n br.refs.$br.append(this.$root);\n\n const $slider = this.$root.find('.BRpager').slider({\n animate: true,\n min: 0,\n max: br.getNumLeafs() - 1,\n value: br.currentIndex(),\n range: \"min\"\n });\n\n $slider.on('slide', (event, ui) => {\n this.updateNavPageNum(ui.value);\n return true;\n });\n\n $slider.on('slidechange', (event, ui) => {\n this.updateNavPageNum(ui.value);\n // recursion prevention for jumpToIndex\n if ($slider.data('swallowchange')) {\n $slider.data('swallowchange', false);\n } else {\n br.jumpToIndex(ui.value);\n }\n return true;\n });\n\n br.options.controls.viewmode.visible && this._bindViewModeButton();\n this.updateNavPageNum(br.currentIndex());\n\n return this.$nav;\n }\n\n /**\n * Initialize the navigation bar when embedded\n */\n initEmbed() {\n const { br } = this;\n // IA-specific\n const thisLink = (window.location + '')\n .replace('?ui=embed','')\n .replace('/stream/', '/details/')\n .replace('#', '/');\n const logoHtml = br.showLogo ? `<a class=\"logo\" href=\"${br.logoURL}\" target=\"_blank\"></a>` : '';\n\n br.refs.$BRfooter = this.$root = $('<div class=\"BRfooter\"></div>');\n br.refs.$BRnav = this.$nav = $(\n `<div class=\"BRnav BRnavEmbed\">\n ${logoHtml}\n <span class=\"BRembedreturn\">\n <a href=\"${thisLink}\" target=\"_blank\">${br.bookTitle}</a>\n </span>\n <span class=\"BRtoolbarbuttons\">\n <button class=\"BRicon book_left\"></button>\n <button class=\"BRicon book_right\"></button>\n <button class=\"BRicon full\"></button>\n </span>\n </div>`);\n this.$root.append(this.$nav);\n br.refs.$br.append(this.$root);\n }\n\n /**\n * Returns the textual representation of the current page for the navbar\n * @param {number} index\n * @return {string}\n */\n getNavPageNumString(index) {\n const { br } = this;\n // Accessible index starts at 0 (alas) so we add 1 to make human\n const pageNum = br.getPageNum(index);\n const pageType = br.getPageProp(index, 'pageType');\n const numLeafs = br.getNumLeafs();\n\n if (!this.maxPageNum) {\n // Calculate Max page num (used for pagination display)\n let maxPageNum = 0;\n let pageNumVal;\n for (let i = 0; i < numLeafs; i++) {\n pageNumVal = br.getPageNum(i);\n if (!isNaN(pageNumVal) && pageNumVal > maxPageNum) {\n maxPageNum = pageNumVal;\n }\n }\n this.maxPageNum = maxPageNum;\n }\n\n return getNavPageNumHtml(index, numLeafs, pageNum, pageType, this.maxPageNum);\n }\n\n /**\n * Renders the navbar string to the DOM\n * @param {number} index\n */\n updateNavPageNum(index) {\n this.$root.find('.BRcurrentpage').html(this.getNavPageNumString(index));\n }\n\n /**\n * Update the nav bar display - does not cause navigation.\n * @param {number} index\n */\n updateNavIndex(index) {\n // We want to update the value, but normally moving the slider\n // triggers jumpToIndex which triggers this method\n index = index !== undefined ? index : this.br.currentIndex();\n this.$root.find('.BRpager').data('swallowchange', true).slider('value', index);\n }\n}\n\n/**\n * Renders the html for the page string\n * @param {number} index\n * @param {number} numLeafs\n * @param {number|string} pageNum\n * @param {*} pageType @deprecated\n * @param {number} maxPageNum\n * @return {string}\n */\nexport function getNavPageNumHtml(index, numLeafs, pageNum, pageType, maxPageNum) {\n const pageIsAsserted = pageNum[0] != 'n';\n\n if (!pageIsAsserted) {\n const pageIndex = index + 1;\n return `(${pageIndex} of ${numLeafs})`; // Page (8 of 10)\n }\n\n const bookLengthLabel = maxPageNum ? ` of ${maxPageNum}` : '';\n return `${pageNum}${bookLengthLabel}`;\n}\n","// @ts-check\n/** @typedef {import('./BookModel.js').PageModel} PageModel */\n/** @typedef {import('./ImageCache.js').ImageCache} ImageCache */\n\n\nexport class PageContainer {\n /**\n * @param {PageModel} page\n * @param {object} opts\n * @param {boolean} opts.isProtected Whether we're in a protected book\n * @param {ImageCache} opts.imageCache\n * @param {string} opts.loadingImage\n */\n constructor(page, {isProtected, imageCache, loadingImage}) {\n this.page = page;\n this.imageCache = imageCache;\n this.loadingImage = loadingImage;\n this.$container = $('<div />', {\n 'class': `BRpagecontainer ${page ? `pagediv${page.index}` : 'BRemptypage'}`,\n css: { position: 'absolute' },\n }).attr('data-side', page?.pageSide);\n\n if (isProtected) {\n this.$container.append($('<div class=\"BRscreen\" />'));\n this.$container.addClass('protected');\n }\n\n /** @type {JQuery<HTMLImageElement>} The main book page image */\n this.$img = null;\n }\n\n /**\n * @param {object} param0\n * @param {{ width: number, height: number, top: number, left: number }} [param0.dimensions]\n * @param {number} param0.reduce\n */\n update({dimensions = null, reduce = null}) {\n if (dimensions) {\n this.$container.css(dimensions);\n }\n\n if (reduce == null || !this.page) {\n return;\n }\n\n const alreadyLoaded = this.imageCache.imageLoaded(this.page.index, reduce);\n const nextBestLoadedReduce = !alreadyLoaded && this.imageCache.getBestLoadedReduce(this.page.index, reduce);\n\n // Add the actual, highres image\n this.$img?.remove();\n this.$img = this.imageCache\n .image(this.page.index, reduce)\n .prependTo(this.$container);\n\n const backgroundLayers = [];\n if (!alreadyLoaded) {\n this.$container.addClass('BRpageloading');\n backgroundLayers.push(`url(\"${this.loadingImage}\") center/20px no-repeat`);\n }\n if (nextBestLoadedReduce) {\n backgroundLayers.push(`url(\"${this.page.getURI(nextBestLoadedReduce, 0)}\") center/100% no-repeat`);\n }\n\n if (!alreadyLoaded) {\n this.$img\n .css('background', backgroundLayers.join(','))\n .one('loadend', async (ev) => {\n $(ev.target).css({ 'background': '' });\n $(ev.target).parent().removeClass('BRpageloading');\n });\n }\n\n return this;\n }\n}\n","/**\n * @typedef {object} ReduceSet Set of valid numbers for a reduce variable.\n * @property {(n: number) => number} floor\n * @property {(n: number) => number} decr Return the predecessor of the given element\n */\n\n/** @type {ReduceSet} */\nexport const IntegerReduceSet = {\n floor: Math.floor,\n decr(n) { return n - 1; }\n};\n\n/** @type {ReduceSet} */\nexport const Pow2ReduceSet = {\n floor(n) {\n return 2 ** (Math.floor(Math.log2(Math.max(1, n))));\n },\n decr(n) {\n return 2 ** (Math.log2(n) - 1);\n }\n};\n\nexport const NAMED_REDUCE_SETS = {\n pow2: Pow2ReduceSet,\n integer: IntegerReduceSet,\n};\n","import 'jquery-colorbox';\nimport { escapeHTML } from '../utils.js';\nimport { EVENTS } from '../events.js';\n/** @typedef {import(\"../../BookReader.js\").default} BookReader */\n\nexport class Toolbar {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n this.br = br;\n }\n\n /**\n * This method builds the html for the toolbar. It can be decorated to extend\n * the toolbar.\n * @return {JQuery}\n */\n buildToolbarElement() {\n const { br } = this;\n const logoHtml = !br.showLogo ? '' : `\n <span class=\"BRtoolbarSection BRtoolbarSectionLogo\">\n <a class=\"logo\" href=\"${br.logoURL}\"></a>\n </span>`;\n\n // Add large screen navigation\n br.refs.$BRtoolbar = $(`\n <div class=\"BRtoolbar header\">\n <div class=\"BRtoolbarbuttons\">\n <div class=\"BRtoolbarLeft\">\n ${logoHtml}\n <span class=\"BRtoolbarSection BRtoolbarSectionTitle\"></span>\n </div>\n <div class=\"BRtoolbarRight\">\n <span class=\"BRtoolbarSection BRtoolbarSectionInfo\">\n <button class=\"BRpill info js-tooltip\">Info</button>\n <button class=\"BRpill share js-tooltip\">Share</button>\n </span>\n </div>\n </div>\n </div>`);\n // TODO actual hamburger menu\n // <span class=\"BRtoolbarSection BRtoolbarSectionMenu\">\n // <button class=\"BRpill BRtoolbarHamburger\">\n // <img src=\"${br.imagesBaseURL}icon_hamburger.svg\" />\n // <div class=\"BRhamburgerDrawer\"><ul><li>hi</li></ul></div>\n // </button>\n // </span>\n\n const $titleSectionEl = br.refs.$BRtoolbar.find('.BRtoolbarSectionTitle');\n if (br.bookUrl && br.options.enableBookTitleLink) {\n $titleSectionEl.append(\n $('<a>')\n .attr({href: br.bookUrl, title: br.bookUrlTitle})\n .addClass('BRreturn')\n .html(br.bookUrlText || br.bookTitle)\n );\n } else if (br.bookTitle) {\n $titleSectionEl.append(br.bookUrlText || br.bookTitle);\n }\n\n // const $hamburger = br.refs.$BRtoolbar.find('BRtoolbarHamburger');\n return br.refs.$BRtoolbar;\n }\n\n /**\n * Initializes the toolbar (top)\n * @param {string} mode\n * @param {string} ui\n */\n initToolbar(mode, ui) {\n const { br } = this;\n br.refs.$br.append(this.buildToolbarElement());\n\n br.$('.BRnavCntl').addClass('BRup');\n br.$('.pause').hide();\n\n this.updateToolbarZoom(br.reduce); // Pretty format\n\n // We build in mode 2\n br.refs.$BRtoolbar.append();\n\n // Hide mode buttons and autoplay if 2up is not available\n // $$$ if we end up with more than two modes we should show the applicable buttons\n if ( !br.canSwitchToMode(br.constMode2up) ) {\n br.$('.two_page_mode, .play, .pause').hide();\n }\n if ( !br.canSwitchToMode(br.constModeThumb) ) {\n br.$('.thumbnail_mode').hide();\n }\n\n // Hide one page button if it is the only mode available\n if ( ! (br.canSwitchToMode(br.constMode2up) || br.canSwitchToMode(br.constModeThumb)) ) {\n br.$('.one_page_mode').hide();\n }\n\n $('<div style=\"display: none;\"></div>')\n .append(blankShareDiv())\n .append(blankInfoDiv())\n .appendTo(br.refs.$br);\n\n br.$('.BRinfo .BRfloatTitle a')\n .attr({href: br.bookUrl})\n .text(br.bookTitle)\n .addClass('title');\n\n // These functions can be overridden\n this.buildInfoDiv(br.$('.BRinfo'));\n this.buildShareDiv(br.$('.BRshare'));\n\n br.$('.share').colorbox({\n inline: true,\n opacity: \"0.5\",\n href: br.$('.BRshare'),\n onLoad: () => {\n br.trigger(EVENTS.stop);\n br.$('.BRpageviewValue').val(window.location.href);\n }\n });\n br.$('.info').colorbox({\n inline: true,\n opacity: \"0.5\",\n href: br.$('.BRinfo'),\n onLoad: () => {\n br.trigger(EVENTS.stop);\n }\n });\n }\n\n /**\n * @deprecated\n * @todo .BRzoom doesn't exist anywhere, so this is likely dead code\n * Update the displayed zoom factor based on reduction factor\n * @param {number} reduce\n */\n updateToolbarZoom(reduce) {\n const { br } = this;\n // $$$ TODO preserve zoom/fit for each mode\n const autofit = br.mode == br.constMode2up ? br.twoPage.autofit : br.onePage.autofit;\n /** @type {string} */\n let value;\n if (autofit) {\n value = autofit.slice(0,1).toUpperCase() + autofit.slice(1);\n } else {\n value = (100 / reduce)\n .toFixed(2)\n // Strip trailing zeroes and decimal if all zeroes\n .replace(/0+$/,'')\n .replace(/\\.$/,'')\n + '%';\n }\n br.$('.BRzoom').text(value);\n }\n\n /**\n * @param {JQuery} $shareDiv\n */\n buildShareDiv($shareDiv) {\n const { br } = this;\n const pageView = document.location + '';\n const bookView = (pageView + '').replace(/#.*/,'');\n\n const embedHtml = !br.getEmbedCode ? '' : `\n <div class=\"share-embed\">\n <p class=\"share-embed-prompt\">Copy and paste one of these options to share this book elsewhere.</p>\n <form method=\"post\" action=\"\">\n <fieldset class=\"fieldset-share-pageview\">\n <label for=\"pageview\">Link to this page view</label>\n <input type=\"text\" name=\"pageview\" class=\"BRpageviewValue\" value=\"${pageView}\"/>\n </fieldset>\n <fieldset class=\"fieldset-share-book-link\">\n <label for=\"booklink\">Link to the book</label>\n <input type=\"text\" name=\"booklink\" class=\"booklink\" value=\"${bookView}\"/>\n </fieldset>\n <fieldset class=\"fieldset-embed\">\n <label for=\"iframe\">Embed a mini Book Reader</label>\n <fieldset class=\"sub\">\n <label class=\"sub\">\n <input type=\"radio\" name=\"pages\" value=\"${br.constMode1up}\" checked=\"checked\"/>\n 1 page\n </label>\n <label class=\"sub\">\n <input type=\"radio\" name=\"pages\" value=\"${br.constMode2up}\"/>\n 2 pages\n </label>\n <label class=\"sub\">\n <input type=\"checkbox\" name=\"thispage\" value=\"thispage\"/>\n Open to this page?\n </label>\n </fieldset>\n <textarea cols=\"30\" rows=\"4\" name=\"iframe\" class=\"BRframeEmbed\"></textarea>\n </fieldset>\n </form>\n </div>`;\n\n const $form = $(`\n <div class=\"share-title\">Share this book</div>\n <div class=\"share-social\">\n <label class=\"sub open-to-this-page\">\n <input class=\"thispage-social\" type=\"checkbox\" />\n Open to this page?\n </label>\n <div><button class=\"BRaction share facebook-share-button\"><i class=\"BRicon fb\" /> Facebook</button></div>\n <div><button class=\"BRaction share twitter-share-button\"><i class=\"BRicon twitter\" /> Twitter</button></div>\n <div><button class=\"BRaction share email-share-button\"><i class=\"BRicon email\" /> Email</button></div>\n </div>\n ${embedHtml}\n <div class=\"BRfloatFoot\">\n <button class=\"share-finished\" type=\"button\" onclick=\"$.fn.colorbox.close();\">Finished</button>\n </div>`);\n\n $form.appendTo($shareDiv);\n\n $form.find('.fieldset-embed input').on('change', event => {\n const form = $(event.target).parents('form:first');\n const params = {};\n params.mode = $(form.find('.fieldset-embed input[name=pages]:checked')).val();\n if (form.find('.fieldset-embed input[name=thispage]').prop('checked')) {\n params.page = br.getPageNum(br.currentIndex());\n }\n\n if (br.getEmbedCode) {\n // $$$ changeable width/height to be added to share UI\n const frameWidth = \"480px\";\n const frameHeight = \"430px\";\n form.find('.BRframeEmbed').val(br.getEmbedCode(frameWidth, frameHeight, params));\n }\n });\n\n $form.find('input, textarea').on('focus', event => event.target.select());\n\n // Bind share buttons\n\n // Use url without hashes\n $form.find('.facebook-share-button').click(() => {\n const params = $.param({ u: this._getSocialShareUrl() });\n const url = 'https://www.facebook.com/sharer.php?' + params;\n createPopup(url, 600, 400, 'Share');\n });\n $form.find('.twitter-share-button').click(() => {\n const params = $.param({\n url: this._getSocialShareUrl(),\n text: br.bookTitle\n });\n const url = 'https://twitter.com/intent/tweet?' + params;\n createPopup(url, 600, 400, 'Share');\n });\n $form.find('.email-share-button').click(() => {\n const body = `${br.bookTitle}\\n\\n${this._getSocialShareUrl()}`;\n window.location.href = `mailto:?subject=${encodeURI(br.bookTitle)}&body=${encodeURI(body)}`;\n });\n\n $form.find('input[name=thispage]').trigger('change');\n\n $form.appendTo($shareDiv);\n }\n\n _getSocialShareUrl() {\n const { br } = this;\n const shareThisPage = br.$('.thispage-social').prop('checked');\n if (shareThisPage) {\n return window.location.href;\n } else {\n return `${document.location.protocol}//${window.location.hostname}${window.location.pathname}`;\n }\n }\n\n /**\n * @param {JQuery} $infoDiv DOM element. Appends info to this element\n * Can be overridden or extended\n */\n buildInfoDiv($infoDiv) {\n const { br } = this;\n // Remove these legacy elements\n $infoDiv.find('.BRfloatBody, .BRfloatCover, .BRfloatFoot').remove();\n\n const $leftCol = $(`<div class=\"BRinfoLeftCol\"></div>`);\n if (br.thumbnail) {\n $leftCol.append($(`\n <div class=\"BRimageW\">\n <img src=\"${br.thumbnail}\" alt=\"${escapeHTML(br.bookTitle)}\" />\n </div>`));\n }\n\n const $rightCol = $(`<div class=\"BRinfoRightCol\">`);\n\n // A loop to build fields\n for (const {extraValueClass = '', label, value} of br.metadata) {\n const escapedValue = label === 'Title' ? escapeHTML(value) : value;\n $rightCol.append($(`\n <div class=\"BRinfoValueWrapper\">\n <div class=\"BRinfoLabel\">${label}</div>\n <div class=\"BRinfoValue ${extraValueClass}\">${escapedValue}</div>\n </div>`));\n }\n\n const moreInfoText = br.bookUrlMoreInfo ? br.bookUrlMoreInfo : br.bookTitle;\n if (moreInfoText && br.bookUrl) {\n $rightCol.append($(`\n <div class=\"BRinfoValueWrapper\">\n <div class=\"BRinfoMoreInfoWrapper\">\n <a class=\"BRinfoMoreInfo\" href=\"${br.bookUrl}\">\n ${escapeHTML(moreInfoText)}\n </a>\n </div>\n </div>`));\n }\n\n const $footer = $(`<div class=\"BRfloatFoot BRinfoFooter\"></div>`);\n const $children = $('<div class=\"BRinfoW mv20-lg\">').append([\n $leftCol,\n $rightCol,\n $('<br style=\"clear:both\"/>'),\n ]);\n\n $infoDiv\n .append($children, $footer)\n .addClass('wide');\n }\n\n /**\n * @return {number} (in pixels) of the toolbar height. 0 if no toolbar.\n */\n getToolBarHeight() {\n const { $BRtoolbar } = this.br.refs;\n if ($BRtoolbar && $BRtoolbar.css('display') === 'block') {\n return ($BRtoolbar.outerHeight() + parseInt($BRtoolbar.css('top')));\n } else {\n return 0;\n }\n }\n}\n\nexport function blankInfoDiv() {\n return $(`\n <div class=\"BRfloat BRinfo\">\n <div class=\"BRfloatHead\">About this book\n <button class=\"floatShut\" href=\"javascript:;\" onclick=\"$.fn.colorbox.close();\"><span class=\"shift\">Close</span></button>\n </div>\n <div class=\"BRfloatBody\">\n <div class=\"BRfloatCover\"></div>\n <div class=\"BRfloatMeta\">\n <div class=\"BRfloatTitle\">\n <h2><a /></h2>\n </div>\n </div>\n </div>\n <div class=\"BRfloatFoot\">\n <a href=\"https://openlibrary.org/dev/docs/bookreader\">About the BookReader</a>\n </div>\n </div>`);\n}\n\nexport function blankShareDiv() {\n return $(`\n <div class=\"BRfloat BRshare\">\n <div class=\"BRfloatHead\">\n Share\n <button class=\"floatShut\" href=\"javascript:;\" onclick=\"$.fn.colorbox.close();\"><span class=\"shift\">Close</span></button>\n </div>\n </div>`);\n}\n\n/**\n * Helper opens a popup window. On mobile it only opens a new tab. Used for share.\n * @param {string} href\n * @param {number} width\n * @param {number} height\n * @param {string} name\n */\nexport function createPopup(href, width, height, name) {\n // Fixes dual-screen position\n const dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;\n const dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;\n\n const win_w = window.innerWidth || document.documentElement.clientWidth || screen.width;\n const win_h = window.innerHeight || document.documentElement.clientHeight || screen.height;\n\n const left = ((win_w / 2) - (width / 2)) + dualScreenLeft;\n const top = ((win_h / 2) - (height / 2)) + dualScreenTop;\n const opts = `status=1,width=${width},height=${height},top=${top},left=${left}`;\n\n window.open(href, name, opts);\n}\n","/** @enum {string} */\nexport const EVENTS = {\n /** Indicates that the fragment (a serialization of the reader\n * state) has changed. */\n fragmentChange: 'fragmentChange',\n PostInit: 'PostInit',\n stop: 'stop',\n resize: 'resize',\n // nav events:\n navToggled: 'navToggled',\n // menu click events\n fullscreenToggled: 'fullscreenToggled',\n zoomOut: 'zoomOut',\n zoomIn: 'zoomIn',\n '1PageViewSelected': '1PageViewSelected',\n '2PageViewSelected': '2PageViewSelected',\n /* currently 3 represents thumbnail view */\n '3PageViewSelected': '3PageViewSelected',\n mobileNavOpen: 'mobileNavOpen',\n};\n","/** @typedef {import('./BookModel.js').PageNumString} PageNumString */\n/** @typedef {import('./BookModel.js').LeafNum} LeafNum */\n\nexport const DEFAULT_OPTIONS = {\n /**\n * @type {string} A string, such as \"mode/1up\". See\n * http://openlibrary.org/dev/docs/bookurls for valid syntax\n */\n defaults: null,\n\n /** Padding in 1up */\n padding: 10,\n\n /** @type {'full' | 'embed' | 'responsive'} UI mode */\n ui: 'full',\n\n /** Controls whether nav/toolbar will autohide */\n uiAutoHide: false,\n\n /** thumbnail mode */\n /** number of rows to pre-cache out a view */\n thumbRowBuffer: 1,\n thumbColumns: 6,\n /** number of thumbnails to load at once */\n thumbMaxLoading: 4,\n /** spacing between thumbnails */\n thumbPadding: 10,\n\n /** @type {number | 'fast' | 'slow'} speed for flip animation */\n flipSpeed: 'fast',\n\n showToolbar: true,\n showNavbar: true,\n navBarTitle: '',\n\n showLogo: true,\n /** Where the logo links to */\n logoURL: 'https://archive.org',\n\n /**\n * Base URL for UI images - should be overridden (before init) by\n * custom implementations.\n * $$$ This is the same directory as the images referenced by relative\n * path in the CSS. Would be better to automagically find that path.\n */\n imagesBaseURL: '/BookReader/images/',\n\n /** @type {'pow2' | 'integer'} What reduces are valid for getURI. */\n reduceSet: 'pow2',\n\n /**\n * Zoom levels\n * @type {ReductionFactor[]}\n * $$$ provide finer grained zooming, {reduce: 8, autofit: null}, {reduce: 16, autofit: null}\n * The autofit code ensures that fit to width and fit to height will be available\n */\n reductionFactors: [\n {reduce: 0.25, autofit: null},\n {reduce: 0.5, autofit: null},\n {reduce: 1, autofit: null},\n {reduce: 2, autofit: null},\n {reduce: 3, autofit: null},\n {reduce: 4, autofit: null},\n {reduce: 6, autofit: null}\n ],\n\n /** Object to hold parameters related to 1up mode */\n onePage: {\n /** @type {AutoFitValues} */\n autofit: 'auto',\n },\n\n /** Object to hold parameters related to 2up mode */\n twoPage: {\n /** Width of cover */\n coverInternalPadding: 0,\n /** Padding outside of cover */\n coverExternalPadding: 0,\n /** Width of book spine $$$ consider sizing based on book length */\n bookSpineDivWidth: 64,\n /** @type {AutoFitValues} */\n autofit: 'auto'\n },\n\n onePageMinBreakpoint: 800,\n\n bookTitle: '',\n /** @type {string} */\n bookUrl: null,\n /** @type {string} */\n bookUrlText: null,\n /** @type {string} */\n bookUrlTitle: null,\n enableBookTitleLink: true,\n /**\n * @type {string} language in ISO 639-1 (PRIVATE: Will also\n * handle language name in English, native name, 639-2/T, or 639-2/B . (archive.org books\n * appear to use 639-2/B ? But I don't think that's a guarantee). See\n * https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ) */\n bookLanguage: null,\n\n /**\n * @type {Array<{label: string, value: *, extraValueClass: string?}>}\n * Fields used to populate the info window\n * @example [\n * {label: 'Title', value: 'Open Library BookReader Presentation'},\n * {label: 'Author', value: 'Internet Archive'},\n * {label: 'Demo Info', value: 'This demo shows how one could use BookReader with their own content.'},\n * ]\n **/\n metadata: [],\n /** @type {string} */\n thumbnail: null,\n /** @type {string} */\n bookUrlMoreInfo: null,\n\n /** Experimental Controls (eg b/w) */\n enableExperimentalControls: false,\n\n /** CSS selectors */\n /** Where BookReader mounts to */\n el: '#BookReader',\n\n /** @type {'lr' | 'rl'} Page progression */\n pageProgression: 'lr',\n\n /** The PPI the book is scanned at **/\n ppi: 500,\n\n /** Should image downloads be blocked */\n protected: false,\n\n /**\n * Settings for individual plugins. Note they have to be imported first.\n * WIP: Most plugins just put their options anywhere in this global options file,\n * but going forward we'll keep them here.\n **/\n plugins: {\n /** @type {import('../plugins/plugin.text_selection.js').TextSelectionPluginOptions} */\n textSelection: null,\n },\n\n /**\n * Any variables you want to define. If an option has a StringWithVars type, or\n * has something like `{{server}}/foo.com` in its value, these variables replace\n * the `{{foo}}`.\n * @type { {[var_name: string]: any } }\n */\n vars: {},\n\n /**\n * @type {Array<[PageData, PageData]|[PageData]>}\n * Data is a simple way to populate the bookreader\n *\n * Example:\n * ```\n * [\n * // Each child is a spread\n * [\n * {\n * width: 123,\n * height: 123,\n * // Optional: If not provided, include a getPageURI\n * uri: 'https://archive.org/image.jpg',\n * // Optional: Shown instead of leaf number if present.\n * pageNum: '1'\n * },\n * {width: 123, height: 123, uri: 'https://archive.org/image2.jpg', pageNum: '2'},\n * ]\n * ],\n * ```\n *\n * Note if URI is omitted, a custom getPageURI can be provided. This allows the page\n * URI to the result of a function, which allows for things such as dynamic\n * page scaling.\n */\n data: [],\n\n /** Advanced methods for page rendering */\n /** @type {() => number} */\n getNumLeafs: null,\n /** @type {(index: number) => number} */\n getPageWidth: null,\n /** @type {(index: number) => number} */\n getPageHeight: null,\n /** @type {(index: number, reduce: number, rotate: number) => *} */\n getPageURI: null,\n\n /**\n * @type {(index: number) => 'L' | 'R'}\n * Return which side, left or right, that a given page should be displayed on\n */\n getPageSide: null,\n\n /**\n * @type {(pindex: number) => [number, number]}\n * This function returns the left and right indices for the user-visible\n * spread that contains the given index. The return values may be\n * null if there is no facing page or the index is invalid.\n */\n getSpreadIndices: null,\n\n /** @type {(index: number) => string} */\n getPageNum: null,\n /** @type {(index: number) => *} */\n getPageProp: null,\n /** @type {(index: number) => number} */\n leafNumToIndex: null,\n\n /**\n * @type {(frameWidth: number|string, frameHeight: number|string, viewParams) => *}\n * Optional: if present, and embed code will be shown in the share dialog\n */\n getEmbedCode: null,\n\n controls: {\n bookLeft: {\n visible: true,\n label: 'Flip left',\n className: 'book_left',\n iconClassName: 'left-arrow'\n },\n bookRight: {\n visible: true,\n label: 'Flip right',\n className: 'book_right',\n iconClassName: 'left-arrow hflip'\n },\n onePage: {\n visible: true,\n label: 'One-page view',\n className: 'onepg',\n iconClassName: 'onepg'\n },\n twoPage: {\n visible: true,\n label: 'Two-page view',\n className: 'twopg',\n iconClassName: 'twopg'\n },\n thumbnail: {\n visible: true,\n label: 'Thumbnail view',\n className: 'thumb',\n iconClassName: 'thumb'\n },\n viewmode: {\n visible: true,\n className: 'viewmode',\n excludedModes: [],\n },\n zoomOut: {\n visible: true,\n label: 'Zoom out',\n className: 'zoom_out',\n iconClassName: 'magnify'\n },\n zoomIn: {\n visible: true,\n label: 'Zoom in',\n className: 'zoom_in',\n iconClassName: 'magnify plus'\n },\n fullScreen: {\n visible: true,\n label: 'Toggle fullscreen',\n className: 'full',\n iconClassName: 'fullscreen'\n },\n },\n\n /**\n * @type {Boolean}\n * Optional: if true, starts in fullscreen mode\n */\n startFullscreen: false,\n\n /**\n * @type {Boolean}\n * On init, by default, we want to handle resizing bookreader\n * when browser window changes size (inc. `orientationchange` event)\n * toggle off if you want to handle this outside of bookreader\n */\n autoResize: true,\n\n /**\n * @type {Boolean}\n * On init, by default, we want to use srcSet for images\n */\n useSrcSet: false,\n};\n\n/** @typedef {'width' | 'height' | 'auto' | 'none'} AutoFitValues */\n\n/**\n * @typedef {object} ReductionFactor\n * @property {number} reduce\n * @property {AutoFitValues} [autofit] If set, the corresponding reduction factors\n * are what will be used when the user tries to autofit by width/height.\n */\n\n/**\n * @typedef {Object} PageData\n * @property {number} width\n * @property {number} height\n * @property {string} [uri] If not provided, include a getPageURI\n * @property {PageNumString} [pageNum] Shown instead of leaf number if present\n * @property {LeafNum} [leafNum] Sometimes specified in Internet Archive books\n * @property {number} [ppi] The resolution of the page if different from {@see BookReaderOptions.ppi}\n * @property {'L' | 'R'} [pageSide] PRIVATE; computed automatically\n * @property {boolean} [viewable=true] Set false if page is not viewable. Displays a dummy preview image.\n * @property {number} [unviewablesStart] PRIVATE; index where the chunk of unviewable pages started\n *\n * Note if URI is omitted, a custom getPageURI can be provided. This allows the page\n * URI to the result of a function, which allows for things such as dynamic\n * page scaling.\n */\n\n/** @typedef {typeof DEFAULT_OPTIONS} BookReaderOptions */\n\n","/**\n * Bind mouse handlers\n * Disable mouse click to avoid selected/highlighted page images\n * @param {JQuery} jObject\n */\nexport function disableSelect(jObject) {\n // $$$ check here for right-click and don't disable. Also use jQuery style\n // for stopping propagation. See https://bugs.edge.launchpad.net/gnubook/+bug/362626\n jObject.bind('mousedown', () => false);\n // Special hack for IE7\n jObject[0].onselectstart = () => false;\n}\n\n/**\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\n/**\n * Given value and maximum, calculate a percentage suitable for CSS\n * @param {number} value\n * @param {number} max\n * @return {string}\n */\nexport function cssPercentage(value, max) {\n return ((value / max) * 100) + '%';\n}\n\n/**\n * @param {*} value\n * @param {Array} array\n * @return {boolean}\n */\nexport function notInArray(value, array) {\n return !array.includes(value);\n}\n\n/**\n * @param {HTMLIFrameElement} iframe\n * @return {Document}\n */\nexport function getIFrameDocument(iframe) {\n// Adapted from http://xkr.us/articles/dom/iframe-document/\n const outer = iframe.contentWindow || iframe.contentDocument;\n return outer.document || outer;\n}\n\n/**\n * @param {string} str\n * @return {string}\n */\nexport function escapeHTML(str) {\n return str.replace(/&/g,'&amp;')\n .replace(/>/g,'&gt;')\n .replace(/</g,'&lt;')\n .replace(/\"/g,'&quot;');\n}\n\n/**\n * Decodes a URI component and converts '+' to ' '\n * @param {string} value\n * @return {string}\n */\nexport function decodeURIComponentPlus(value) {\n return decodeURIComponent(value).replace(/\\+/g, ' ');\n}\n\n/**\n * Encodes a URI component and converts ' ' to '+'\n * @param {string|number|boolean} value\n * @return {string};\n */\nexport function encodeURIComponentPlus(value) {\n return encodeURIComponent(value).replace(/%20/g, '+');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @see https://davidwalsh.name/javascript-debounce-function\n *\n * @param {Function} func\n * @param {number} wait\n * @param {boolean} immediate\n * @return {Function}\n */\nexport function debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\n/**\n * Throttle function\n * @see https://remysharp.com/2010/07/21/throttling-function-calls\n * @param {Function} fn\n * @param {number} threshold\n * @param {boolean} delay\n * @return {Function}\n */\nexport function throttle(fn, threshold, delay) {\n threshold || (threshold = 250);\n let last;\n let deferTimer;\n if (delay) last = +new Date;\n return function () {\n const context = this;\n const now = +new Date;\n const args = arguments;\n if (last && now < last + threshold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(() => {\n last = now;\n fn.apply(context, args);\n }, threshold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n}\n\n/**\n * FIXME we need a better way to do this :/ This is not automatically poly-filled by\n * core-js https://github.com/zloirock/core-js/issues/354\n * @param {Window} window\n */\nexport function polyfillCustomEvent(window) {\n if (typeof window.CustomEvent === \"function\") return false;\n window.CustomEvent = PolyfilledCustomEvent;\n}\n\n/**\n * https://caniuse.com/customevent has issues on older browsers where it can't be\n * called as a constructor, so we have to use older methods.\n * @param {String} eventName\n * @return {CustomEvent}\n */\nexport function PolyfilledCustomEvent(eventName, {bubbles = false, cancelable = false, detail = null} = {}) {\n const event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, bubbles, cancelable, detail);\n return event;\n}\n\n/**\n * Promise based sleep - resolves at default 500ms\n * @param {Number} wait time in milliseconds\n */\nexport function sleep(ms = 500) {\n return new Promise(res => setTimeout(res(true), ms));\n}\n\n/*\n * Returns the number pixels something should be rendered at to be ~1n on the users\n * screen when measured with a ruler.\n */\nexport function calcScreenDPI() {\n const el = document.createElement('div');\n el.style.width = '1in';\n document.body.appendChild(el);\n const dpi = el.offsetWidth;\n document.body.removeChild(el);\n\n // Do you believe in magic... numbers? We tested on some devices, and the displayed\n // size of `width: 1in` was less than desired. On @pezvi's mac, it was ~75% ; on\n // @cdrini's laptop it was ~85%. Since we want to avoid things appearing too small,\n // let's just use a multiplier of 1.25\n const screenDPI = dpi * 1.25;\n // This will return 0 in testing; never want it to be 0!\n return screenDPI == 0 ? 100 : screenDPI;\n}\n","/**\n * Exposes a function from one class (FromClass) to another (ToClass), in such a way\n * that if the ToClass's method is overridden, the FromClass's method is also overridden.\n * WARNING: This modifies FromClass' prototype! So FromClasses cannot be shared between\n * different ToClasses.\n * @param {new () => TFrom} FromClass the class to get the method from\n * @param {keyof TFrom} fromMethod the method's name in FromClass\n * @param {function(TFrom): TTo} fromTransform how to get the TTo `this` to use when setting the method on TFrom\n * @param {new () => TTo} ToClass the class to add the method to\n * @param {string} toMethod the name of the method to add to TTo (likely will be equal to fromMethod)\n * @param {function(TTo): TFrom} toTransform how to get the TFrom this to use when calling the new method\n * @template TFrom type of FromClass for type-checking/autocomplete\n * @template TTo type of ToClass for type-checking/autocomplete\n */\nexport function exposeOverrideable(FromClass, fromMethod, fromTransform, ToClass, toMethod, toTransform) {\n // Wrapper function needed to \"capture\" the current version of fromMethod\n let wrapper = (fn => {\n return function () {\n return fn.apply(toTransform(this), arguments);\n };\n })(FromClass.prototype[fromMethod]);\n\n Object.defineProperty(ToClass.prototype, toMethod, {\n get() { return wrapper; },\n set(overrideFn) {\n // overrideFn expects `this` to be ToClass, so ensure as such\n // But we can also call this method from FromClass; need to ensure\n // it's always called with a ToClass\n FromClass.prototype[fromMethod] = function () {\n const newThis = this instanceof FromClass ? fromTransform(this) : this;\n return overrideFn.apply(newThis, arguments);\n };\n wrapper = overrideFn;\n }\n });\n}\n","/*\n * jQuery dragscrollable Plugin\n * version: 1.0 (25-Jun-2009)\n * Copyright (c) 2009 Miquel Herrera\n *\n * Portions Copyright (c) 2010 Reg Braithwaite\n * Copyright (c) 2010 Internet Archive / Michael Ang\n * Copyright (c) 2016 Internet Archive / Richard Caceres\n *\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n *\n * Modified by richard@archive.org 2016\n * - Added check to disable on touch enabled devices\n * - Change dragend handler to bind using event \"capturing\" instead of \"bubbling\"\n */\n(function($) { // secure $ jQuery alias\n\n /**\n * Adds the ability to manage elements scroll by dragging\n * one or more of its descendant elements. Options parameter\n * allow to specifically select which inner elements will\n * respond to the drag events.\n *\n * options properties:\n * ------------------------------------------------------------------------\n * dragSelector | jquery selector to apply to each wrapped element\n * | to find which will be the dragging elements.\n * | Defaults to '>:first' which is the first child of\n * | scrollable element\n * ------------------------------------------------------------------------\n * acceptPropagatedEvent| Will the dragging element accept propagated\n *\t | events? default is yes, a propagated mouse event\n *\t | on a inner element will be accepted and processed.\n *\t | If set to false, only events originated on the\n *\t | draggable elements will be processed.\n * ------------------------------------------------------------------------\n * preventDefault | Prevents the event to propagate further effectivey\n * | disabling other default actions. Defaults to true\n * ------------------------------------------------------------------------\n * scrollWindow | Scroll the window rather than the element\n * | Defaults to false\n * ------------------------------------------------------------------------\n *\n * usage examples:\n *\n * To add the scroll by drag to the element id=viewport when dragging its\n * first child accepting any propagated events\n *\t$('#viewport').dragscrollable();\n *\n * To add the scroll by drag ability to any element div of class viewport\n * when dragging its first descendant of class dragMe responding only to\n * evcents originated on the '.dragMe' elements.\n *\t$('div.viewport').dragscrollable({dragSelector:'.dragMe:first',\n *\t\t\t\t\t\t\t\t\t acceptPropagatedEvent: false});\n *\n * Notice that some 'viewports' could be nested within others but events\n * would not interfere as acceptPropagatedEvent is set to false.\n *\n */\n\n var append_namespace = function (string_of_events, ns) {\n\n /* IE doesn't have map\n\treturn string_of_events\n\t\t.split(' ')\n\t\t\t.map(function (name) { return name + ns; })\n\t\t\t\t.join(' ');\n */\n var pieces = string_of_events.split(' ');\n var ret = new Array();\n for (var i = 0; i < pieces.length; i++) {\n ret.push(pieces[i] + ns);\n }\n return ret.join(' ');\n };\n\n var left_top = function(event) {\n\n var x;\n var y;\n if (typeof(event.clientX) != 'undefined') {\n x = event.clientX;\n y = event.clientY;\n }\n else if (typeof(event.screenX) != 'undefined') {\n x = event.screenX;\n y = event.screenY;\n }\n else if (typeof(event.targetTouches) != 'undefined') {\n x = event.targetTouches[0].pageX;\n y = event.targetTouches[0].pageY;\n }\n else if (typeof(event.originalEvent) == 'undefined') {\n var str = '';\n for (const i in event) {\n str += ', ' + i + ': ' + event[i];\n }\n console.error(\"don't understand x and y for \" + event.type + ' event: ' + str);\n }\n else if (typeof(event.originalEvent.clientX) != 'undefined') {\n x = event.originalEvent.clientX;\n y = event.originalEvent.clientY;\n }\n else if (typeof(event.originalEvent.screenX) != 'undefined') {\n x = event.originalEvent.screenX;\n y = event.originalEvent.screenY;\n }\n else if (typeof(event.originalEvent.targetTouches) != 'undefined') {\n x = event.originalEvent.targetTouches[0].pageX;\n y = event.originalEvent.targetTouches[0].pageY;\n }\n\n return {left: x, top:y};\n };\n\n $.fn.dragscrollable = function( options ) {\n\n var handling_element = $(this);\n\n var settings = $.extend(\n {\n dragSelector:'>:first',\n acceptPropagatedEvent: true,\n preventDefault: true,\n dragstart: 'mousedown touchstart',\n dragcontinue: 'mousemove touchmove',\n dragend: 'mouseup touchend', // mouseleave\n dragMinDistance: 5,\n namespace: '.ds',\n scrollWindow: false,\n },options || {});\n\n settings.dragstart = append_namespace(settings.dragstart, settings.namespace);\n settings.dragcontinue = append_namespace(settings.dragcontinue, settings.namespace);\n //settings.dragend = append_namespace(settings.dragend, settings.namespace);\n\n var shouldAbort = function() {\n var isTouchDevice = !!('ontouchstart' in window) || !!('msmaxtouchpoints' in window.navigator);\n return isTouchDevice;\n };\n\n var dragContinueHandlerProxy;\n\n var dragscroll = {\n dragStartHandler : function(event) {\n if (shouldAbort()) { return true; }\n\n // mousedown, left click, check propagation\n if (event.which > 1 ||\n\t\t\t\t(!event.data.acceptPropagatedEvent && event.target != this)) {\n return false;\n }\n\n event.data.firstCoord = left_top(event);\n // Initial coordinates will be the last when dragging\n event.data.lastCoord = event.data.firstCoord;\n\n handling_element\n .bind(settings.dragcontinue, event.data, dragscroll.dragContinueHandler)\n //.bind(settings.dragend, event.data, dragscroll.dragEndHandler)\n ;\n\n // Note, we bind using addEventListener so we can use \"capture\" binding\n // instead of \"bubble\" binding\n dragContinueHandlerProxy = function(e) {\n e.data = event.data;\n dragscroll.dragEndHandler(e);\n };\n $.each(settings.dragend.split(' '), function(idx, val) {\n handling_element.get(0).addEventListener(val, dragContinueHandlerProxy, true);\n });\n\n if (event.data.preventDefault) {\n event.preventDefault();\n return false;\n }\n },\n dragContinueHandler : function(event) { // User is dragging\n // console.log('drag continue');\n if (shouldAbort()) { return true; }\n\n var lt = left_top(event);\n\n // How much did the mouse move?\n var delta = {left: (lt.left - event.data.lastCoord.left),\n top: (lt.top - event.data.lastCoord.top)};\n\n var scrollTarget = event.data.scrollable;\n if (event.data.scrollWindow) {\n scrollTarget = $(window);\n }\n // Set the scroll position relative to what ever the scroll is now\n scrollTarget.scrollLeft( scrollTarget.scrollLeft() - delta.left );\n scrollTarget.scrollTop(\tscrollTarget.scrollTop() - delta.top );\n\n // Save where the cursor is\n event.data.lastCoord = lt;\n\n if (event.data.preventDefault) {\n event.preventDefault();\n return false;\n }\n },\n dragEndHandler : function(event) { // Stop scrolling\n //console.log('dragEndHandler');\n\n if (shouldAbort()) { return true; }\n\n handling_element\n .unbind(settings.dragcontinue)\n // Note, for some reason, even though I removeEventListener below,\n // this call to unbind is still necessary. I don't know why.\n .unbind(settings.dragend)\n ;\n\n // Note, we bind using addEventListener so we can use \"capture\" binding\n // instead of \"bubble\" binding\n $.each(settings.dragend.split(' '), function(idx, val) {\n handling_element.get(0).removeEventListener(val, dragContinueHandlerProxy, true);\n });\n\n // How much did the mouse move total?\n var delta = {left: Math.abs(event.data.lastCoord.left - event.data.firstCoord.left),\n top: Math.abs(event.data.lastCoord.top - event.data.firstCoord.top)};\n var distance = Math.max(delta.left, delta.top);\n\n // Allow event to propagate if min distance was not achieved\n if (event.data.preventDefault && distance > settings.dragMinDistance) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n return false;\n }\n }\n };\n\n // set up the initial events\n return this.each(function() {\n // closure object data for each scrollable element\n var data = {scrollable : $(this),\n acceptPropagatedEvent : settings.acceptPropagatedEvent,\n preventDefault : settings.preventDefault,\n scrollWindow : settings.scrollWindow };\n // Set mouse initiating event on the desired descendant\n $(this).find(settings.dragSelector).\n bind(settings.dragstart, data, dragscroll.dragStartHandler);\n });\n }; //end plugin dragscrollable\n\n // Note, this probably doesn't work anymore with our modifications - Nov/8/2016\n $.fn.removedragscrollable = function (namespace) {\n if (typeof(namespace) == 'undefined')\n namespace = '.ds';\n return this.each(function() {\n $(document).find('*').andSelf().unbind(namespace);\n });\n };\n\n})( jQuery ); // confine scope\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === RegExp.prototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // eslint-disable-next-line es/no-symbol -- required for testing\n return !Symbol.sham &&\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\nvar shared = require('./shared');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.11.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n log2: function log2(x) {\n return log(x) / LN2;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, UNSUPPORTED_Y);\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","/*!\n\tColorbox 1.6.4\n\tlicense: MIT\n\thttp://www.jacklmoore.com/colorbox\n*/\n(function ($, document, window) {\n\tvar\n\t// Default settings object.\n\t// See http://jacklmoore.com/colorbox for details.\n\tdefaults = {\n\t\t// data sources\n\t\thtml: false,\n\t\tphoto: false,\n\t\tiframe: false,\n\t\tinline: false,\n\n\t\t// behavior and appearance\n\t\ttransition: \"elastic\",\n\t\tspeed: 300,\n\t\tfadeOut: 300,\n\t\twidth: false,\n\t\tinitialWidth: \"600\",\n\t\tinnerWidth: false,\n\t\tmaxWidth: false,\n\t\theight: false,\n\t\tinitialHeight: \"450\",\n\t\tinnerHeight: false,\n\t\tmaxHeight: false,\n\t\tscalePhotos: true,\n\t\tscrolling: true,\n\t\topacity: 0.9,\n\t\tpreloading: true,\n\t\tclassName: false,\n\t\toverlayClose: true,\n\t\tescKey: true,\n\t\tarrowKey: true,\n\t\ttop: false,\n\t\tbottom: false,\n\t\tleft: false,\n\t\tright: false,\n\t\tfixed: false,\n\t\tdata: undefined,\n\t\tcloseButton: true,\n\t\tfastIframe: true,\n\t\topen: false,\n\t\treposition: true,\n\t\tloop: true,\n\t\tslideshow: false,\n\t\tslideshowAuto: true,\n\t\tslideshowSpeed: 2500,\n\t\tslideshowStart: \"start slideshow\",\n\t\tslideshowStop: \"stop slideshow\",\n\t\tphotoRegex: /\\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\\?).*)?$/i,\n\n\t\t// alternate image paths for high-res displays\n\t\tretinaImage: false,\n\t\tretinaUrl: false,\n\t\tretinaSuffix: '@2x.$1',\n\n\t\t// internationalization\n\t\tcurrent: \"image {current} of {total}\",\n\t\tprevious: \"previous\",\n\t\tnext: \"next\",\n\t\tclose: \"close\",\n\t\txhrError: \"This content failed to load.\",\n\t\timgError: \"This image failed to load.\",\n\n\t\t// accessbility\n\t\treturnFocus: true,\n\t\ttrapFocus: true,\n\n\t\t// callbacks\n\t\tonOpen: false,\n\t\tonLoad: false,\n\t\tonComplete: false,\n\t\tonCleanup: false,\n\t\tonClosed: false,\n\n\t\trel: function() {\n\t\t\treturn this.rel;\n\t\t},\n\t\thref: function() {\n\t\t\t// using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')\n\t\t\treturn $(this).attr('href');\n\t\t},\n\t\ttitle: function() {\n\t\t\treturn this.title;\n\t\t},\n\t\tcreateImg: function() {\n\t\t\tvar img = new Image();\n\t\t\tvar attrs = $(this).data('cbox-img-attrs');\n\n\t\t\tif (typeof attrs === 'object') {\n\t\t\t\t$.each(attrs, function(key, val){\n\t\t\t\t\timg[key] = val;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn img;\n\t\t},\n\t\tcreateIframe: function() {\n\t\t\tvar iframe = document.createElement('iframe');\n\t\t\tvar attrs = $(this).data('cbox-iframe-attrs');\n\n\t\t\tif (typeof attrs === 'object') {\n\t\t\t\t$.each(attrs, function(key, val){\n\t\t\t\t\tiframe[key] = val;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ('frameBorder' in iframe) {\n\t\t\t\tiframe.frameBorder = 0;\n\t\t\t}\n\t\t\tif ('allowTransparency' in iframe) {\n\t\t\t\tiframe.allowTransparency = \"true\";\n\t\t\t}\n\t\t\tiframe.name = (new Date()).getTime(); // give the iframe a unique name to prevent caching\n\t\t\tiframe.allowFullscreen = true;\n\n\t\t\treturn iframe;\n\t\t}\n\t},\n\n\t// Abstracting the HTML and event identifiers for easy rebranding\n\tcolorbox = 'colorbox',\n\tprefix = 'cbox',\n\tboxElement = prefix + 'Element',\n\n\t// Events\n\tevent_open = prefix + '_open',\n\tevent_load = prefix + '_load',\n\tevent_complete = prefix + '_complete',\n\tevent_cleanup = prefix + '_cleanup',\n\tevent_closed = prefix + '_closed',\n\tevent_purge = prefix + '_purge',\n\n\t// Cached jQuery Object Variables\n\t$overlay,\n\t$box,\n\t$wrap,\n\t$content,\n\t$topBorder,\n\t$leftBorder,\n\t$rightBorder,\n\t$bottomBorder,\n\t$related,\n\t$window,\n\t$loaded,\n\t$loadingBay,\n\t$loadingOverlay,\n\t$title,\n\t$current,\n\t$slideshow,\n\t$next,\n\t$prev,\n\t$close,\n\t$groupControls,\n\t$events = $('<a/>'), // $({}) would be prefered, but there is an issue with jQuery 1.4.2\n\n\t// Variables for cached values or use across multiple functions\n\tsettings,\n\tinterfaceHeight,\n\tinterfaceWidth,\n\tloadedHeight,\n\tloadedWidth,\n\tindex,\n\tphoto,\n\topen,\n\tactive,\n\tclosing,\n\tloadingTimer,\n\tpublicMethod,\n\tdiv = \"div\",\n\trequests = 0,\n\tpreviousCSS = {},\n\tinit;\n\n\t// ****************\n\t// HELPER FUNCTIONS\n\t// ****************\n\n\t// Convenience function for creating new jQuery objects\n\tfunction $tag(tag, id, css) {\n\t\tvar element = document.createElement(tag);\n\n\t\tif (id) {\n\t\t\telement.id = prefix + id;\n\t\t}\n\n\t\tif (css) {\n\t\t\telement.style.cssText = css;\n\t\t}\n\n\t\treturn $(element);\n\t}\n\n\t// Get the window height using innerHeight when available to avoid an issue with iOS\n\t// http://bugs.jquery.com/ticket/6724\n\tfunction winheight() {\n\t\treturn window.innerHeight ? window.innerHeight : $(window).height();\n\t}\n\n\tfunction Settings(element, options) {\n\t\tif (options !== Object(options)) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.cache = {};\n\t\tthis.el = element;\n\n\t\tthis.value = function(key) {\n\t\t\tvar dataAttr;\n\n\t\t\tif (this.cache[key] === undefined) {\n\t\t\t\tdataAttr = $(this.el).attr('data-cbox-'+key);\n\n\t\t\t\tif (dataAttr !== undefined) {\n\t\t\t\t\tthis.cache[key] = dataAttr;\n\t\t\t\t} else if (options[key] !== undefined) {\n\t\t\t\t\tthis.cache[key] = options[key];\n\t\t\t\t} else if (defaults[key] !== undefined) {\n\t\t\t\t\tthis.cache[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.cache[key];\n\t\t};\n\n\t\tthis.get = function(key) {\n\t\t\tvar value = this.value(key);\n\t\t\treturn $.isFunction(value) ? value.call(this.el, this) : value;\n\t\t};\n\t}\n\n\t// Determine the next and previous members in a group.\n\tfunction getIndex(increment) {\n\t\tvar\n\t\tmax = $related.length,\n\t\tnewIndex = (index + increment) % max;\n\n\t\treturn (newIndex < 0) ? max + newIndex : newIndex;\n\t}\n\n\t// Convert '%' and 'px' values to integers\n\tfunction setSize(size, dimension) {\n\t\treturn Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));\n\t}\n\n\t// Checks an href to see if it is a photo.\n\t// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.\n\tfunction isImage(settings, url) {\n\t\treturn settings.get('photo') || settings.get('photoRegex').test(url);\n\t}\n\n\tfunction retinaUrl(settings, url) {\n\t\treturn settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;\n\t}\n\n\tfunction trapFocus(e) {\n\t\tif ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {\n\t\t\te.stopPropagation();\n\t\t\t$box.focus();\n\t\t}\n\t}\n\n\tfunction setClass(str) {\n\t\tif (setClass.str !== str) {\n\t\t\t$box.add($overlay).removeClass(setClass.str).addClass(str);\n\t\t\tsetClass.str = str;\n\t\t}\n\t}\n\n\tfunction getRelated(rel) {\n\t\tindex = 0;\n\n\t\tif (rel && rel !== false && rel !== 'nofollow') {\n\t\t\t$related = $('.' + boxElement).filter(function () {\n\t\t\t\tvar options = $.data(this, colorbox);\n\t\t\t\tvar settings = new Settings(this, options);\n\t\t\t\treturn (settings.get('rel') === rel);\n\t\t\t});\n\t\t\tindex = $related.index(settings.el);\n\n\t\t\t// Check direct calls to Colorbox.\n\t\t\tif (index === -1) {\n\t\t\t\t$related = $related.add(settings.el);\n\t\t\t\tindex = $related.length - 1;\n\t\t\t}\n\t\t} else {\n\t\t\t$related = $(settings.el);\n\t\t}\n\t}\n\n\tfunction trigger(event) {\n\t\t// for external use\n\t\t$(document).trigger(event);\n\t\t// for internal use\n\t\t$events.triggerHandler(event);\n\t}\n\n\tvar slideshow = (function(){\n\t\tvar active,\n\t\t\tclassName = prefix + \"Slideshow_\",\n\t\t\tclick = \"click.\" + prefix,\n\t\t\ttimeOut;\n\n\t\tfunction clear () {\n\t\t\tclearTimeout(timeOut);\n\t\t}\n\n\t\tfunction set() {\n\t\t\tif (settings.get('loop') || $related[index + 1]) {\n\t\t\t\tclear();\n\t\t\t\ttimeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));\n\t\t\t}\n\t\t}\n\n\t\tfunction start() {\n\t\t\t$slideshow\n\t\t\t\t.html(settings.get('slideshowStop'))\n\t\t\t\t.unbind(click)\n\t\t\t\t.one(click, stop);\n\n\t\t\t$events\n\t\t\t\t.bind(event_complete, set)\n\t\t\t\t.bind(event_load, clear);\n\n\t\t\t$box.removeClass(className + \"off\").addClass(className + \"on\");\n\t\t}\n\n\t\tfunction stop() {\n\t\t\tclear();\n\n\t\t\t$events\n\t\t\t\t.unbind(event_complete, set)\n\t\t\t\t.unbind(event_load, clear);\n\n\t\t\t$slideshow\n\t\t\t\t.html(settings.get('slideshowStart'))\n\t\t\t\t.unbind(click)\n\t\t\t\t.one(click, function () {\n\t\t\t\t\tpublicMethod.next();\n\t\t\t\t\tstart();\n\t\t\t\t});\n\n\t\t\t$box.removeClass(className + \"on\").addClass(className + \"off\");\n\t\t}\n\n\t\tfunction reset() {\n\t\t\tactive = false;\n\t\t\t$slideshow.hide();\n\t\t\tclear();\n\t\t\t$events\n\t\t\t\t.unbind(event_complete, set)\n\t\t\t\t.unbind(event_load, clear);\n\t\t\t$box.removeClass(className + \"off \" + className + \"on\");\n\t\t}\n\n\t\treturn function(){\n\t\t\tif (active) {\n\t\t\t\tif (!settings.get('slideshow')) {\n\t\t\t\t\t$events.unbind(event_cleanup, reset);\n\t\t\t\t\treset();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (settings.get('slideshow') && $related[1]) {\n\t\t\t\t\tactive = true;\n\t\t\t\t\t$events.one(event_cleanup, reset);\n\t\t\t\t\tif (settings.get('slideshowAuto')) {\n\t\t\t\t\t\tstart();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstop();\n\t\t\t\t\t}\n\t\t\t\t\t$slideshow.show();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t}());\n\n\n\tfunction launch(element) {\n\t\tvar options;\n\n\t\tif (!closing) {\n\n\t\t\toptions = $(element).data(colorbox);\n\n\t\t\tsettings = new Settings(element, options);\n\n\t\t\tgetRelated(settings.get('rel'));\n\n\t\t\tif (!open) {\n\t\t\t\topen = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.\n\n\t\t\t\tsetClass(settings.get('className'));\n\n\t\t\t\t// Show colorbox so the sizes can be calculated in older versions of jQuery\n\t\t\t\t$box.css({visibility:'hidden', display:'block', opacity:''});\n\n\t\t\t\t$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');\n\t\t\t\t$content.css({width:'', height:''}).append($loaded);\n\n\t\t\t\t// Cache values needed for size calculations\n\t\t\t\tinterfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();\n\t\t\t\tinterfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();\n\t\t\t\tloadedHeight = $loaded.outerHeight(true);\n\t\t\t\tloadedWidth = $loaded.outerWidth(true);\n\n\t\t\t\t// Opens inital empty Colorbox prior to content being loaded.\n\t\t\t\tvar initialWidth = setSize(settings.get('initialWidth'), 'x');\n\t\t\t\tvar initialHeight = setSize(settings.get('initialHeight'), 'y');\n\t\t\t\tvar maxWidth = settings.get('maxWidth');\n\t\t\t\tvar maxHeight = settings.get('maxHeight');\n\n\t\t\t\tsettings.w = Math.max((maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth, 0);\n\t\t\t\tsettings.h = Math.max((maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight, 0);\n\n\t\t\t\t$loaded.css({width:'', height:settings.h});\n\t\t\t\tpublicMethod.position();\n\n\t\t\t\ttrigger(event_open);\n\t\t\t\tsettings.get('onOpen');\n\n\t\t\t\t$groupControls.add($title).hide();\n\n\t\t\t\t$box.focus();\n\n\t\t\t\tif (settings.get('trapFocus')) {\n\t\t\t\t\t// Confine focus to the modal\n\t\t\t\t\t// Uses event capturing that is not supported in IE8-\n\t\t\t\t\tif (document.addEventListener) {\n\n\t\t\t\t\t\tdocument.addEventListener('focus', trapFocus, true);\n\n\t\t\t\t\t\t$events.one(event_closed, function () {\n\t\t\t\t\t\t\tdocument.removeEventListener('focus', trapFocus, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Return focus on closing\n\t\t\t\tif (settings.get('returnFocus')) {\n\t\t\t\t\t$events.one(event_closed, function () {\n\t\t\t\t\t\t$(settings.el).focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar opacity = parseFloat(settings.get('opacity'));\n\t\t\t$overlay.css({\n\t\t\t\topacity: opacity === opacity ? opacity : '',\n\t\t\t\tcursor: settings.get('overlayClose') ? 'pointer' : '',\n\t\t\t\tvisibility: 'visible'\n\t\t\t}).show();\n\n\t\t\tif (settings.get('closeButton')) {\n\t\t\t\t$close.html(settings.get('close')).appendTo($content);\n\t\t\t} else {\n\t\t\t\t$close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4\n\t\t\t}\n\n\t\t\tload();\n\t\t}\n\t}\n\n\t// Colorbox's markup needs to be added to the DOM prior to being called\n\t// so that the browser will go ahead and load the CSS background images.\n\tfunction appendHTML() {\n\t\tif (!$box) {\n\t\t\tinit = false;\n\t\t\t$window = $(window);\n\t\t\t$box = $tag(div).attr({\n\t\t\t\tid: colorbox,\n\t\t\t\t'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.\n\t\t\t\trole: 'dialog',\n\t\t\t\ttabindex: '-1'\n\t\t\t}).hide();\n\t\t\t$overlay = $tag(div, \"Overlay\").hide();\n\t\t\t$loadingOverlay = $([$tag(div, \"LoadingOverlay\")[0],$tag(div, \"LoadingGraphic\")[0]]);\n\t\t\t$wrap = $tag(div, \"Wrapper\");\n\t\t\t$content = $tag(div, \"Content\").append(\n\t\t\t\t$title = $tag(div, \"Title\"),\n\t\t\t\t$current = $tag(div, \"Current\"),\n\t\t\t\t$prev = $('<button type=\"button\"/>').attr({id:prefix+'Previous'}),\n\t\t\t\t$next = $('<button type=\"button\"/>').attr({id:prefix+'Next'}),\n\t\t\t\t$slideshow = $('<button type=\"button\"/>').attr({id:prefix+'Slideshow'}),\n\t\t\t\t$loadingOverlay\n\t\t\t);\n\n\t\t\t$close = $('<button type=\"button\"/>').attr({id:prefix+'Close'});\n\n\t\t\t$wrap.append( // The 3x3 Grid that makes up Colorbox\n\t\t\t\t$tag(div).append(\n\t\t\t\t\t$tag(div, \"TopLeft\"),\n\t\t\t\t\t$topBorder = $tag(div, \"TopCenter\"),\n\t\t\t\t\t$tag(div, \"TopRight\")\n\t\t\t\t),\n\t\t\t\t$tag(div, false, 'clear:left').append(\n\t\t\t\t\t$leftBorder = $tag(div, \"MiddleLeft\"),\n\t\t\t\t\t$content,\n\t\t\t\t\t$rightBorder = $tag(div, \"MiddleRight\")\n\t\t\t\t),\n\t\t\t\t$tag(div, false, 'clear:left').append(\n\t\t\t\t\t$tag(div, \"BottomLeft\"),\n\t\t\t\t\t$bottomBorder = $tag(div, \"BottomCenter\"),\n\t\t\t\t\t$tag(div, \"BottomRight\")\n\t\t\t\t)\n\t\t\t).find('div div').css({'float': 'left'});\n\n\t\t\t$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');\n\n\t\t\t$groupControls = $next.add($prev).add($current).add($slideshow);\n\t\t}\n\t\tif (document.body && !$box.parent().length) {\n\t\t\t$(document.body).append($overlay, $box.append($wrap, $loadingBay));\n\t\t}\n\t}\n\n\t// Add Colorbox's event bindings\n\tfunction addBindings() {\n\t\tfunction clickHandler(e) {\n\t\t\t// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.\n\t\t\t// See: http://jacklmoore.com/notes/click-events/\n\t\t\tif (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {\n\t\t\t\te.preventDefault();\n\t\t\t\tlaunch(this);\n\t\t\t}\n\t\t}\n\n\t\tif ($box) {\n\t\t\tif (!init) {\n\t\t\t\tinit = true;\n\n\t\t\t\t// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.\n\t\t\t\t$next.click(function () {\n\t\t\t\t\tpublicMethod.next();\n\t\t\t\t});\n\t\t\t\t$prev.click(function () {\n\t\t\t\t\tpublicMethod.prev();\n\t\t\t\t});\n\t\t\t\t$close.click(function () {\n\t\t\t\t\tpublicMethod.close();\n\t\t\t\t});\n\t\t\t\t$overlay.click(function () {\n\t\t\t\t\tif (settings.get('overlayClose')) {\n\t\t\t\t\t\tpublicMethod.close();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Key Bindings\n\t\t\t\t$(document).bind('keydown.' + prefix, function (e) {\n\t\t\t\t\tvar key = e.keyCode;\n\t\t\t\t\tif (open && settings.get('escKey') && key === 27) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpublicMethod.close();\n\t\t\t\t\t}\n\t\t\t\t\tif (open && settings.get('arrowKey') && $related[1] && !e.altKey) {\n\t\t\t\t\t\tif (key === 37) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t$prev.click();\n\t\t\t\t\t\t} else if (key === 39) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t$next.click();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ($.isFunction($.fn.on)) {\n\t\t\t\t\t// For jQuery 1.7+\n\t\t\t\t\t$(document).on('click.'+prefix, '.'+boxElement, clickHandler);\n\t\t\t\t} else {\n\t\t\t\t\t// For jQuery 1.3.x -> 1.6.x\n\t\t\t\t\t// This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.\n\t\t\t\t\t// This is not here for jQuery 1.9, it's here for legacy users.\n\t\t\t\t\t$('.'+boxElement).live('click.'+prefix, clickHandler);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// Don't do anything if Colorbox already exists.\n\tif ($[colorbox]) {\n\t\treturn;\n\t}\n\n\t// Append the HTML when the DOM loads\n\t$(appendHTML);\n\n\n\t// ****************\n\t// PUBLIC FUNCTIONS\n\t// Usage format: $.colorbox.close();\n\t// Usage from within an iframe: parent.jQuery.colorbox.close();\n\t// ****************\n\n\tpublicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {\n\t\tvar settings;\n\t\tvar $obj = this;\n\n\t\toptions = options || {};\n\n\t\tif ($.isFunction($obj)) { // assume a call to $.colorbox\n\t\t\t$obj = $('<a/>');\n\t\t\toptions.open = true;\n\t\t}\n\n\t\tif (!$obj[0]) { // colorbox being applied to empty collection\n\t\t\treturn $obj;\n\t\t}\n\n\t\tappendHTML();\n\n\t\tif (addBindings()) {\n\n\t\t\tif (callback) {\n\t\t\t\toptions.onComplete = callback;\n\t\t\t}\n\n\t\t\t$obj.each(function () {\n\t\t\t\tvar old = $.data(this, colorbox) || {};\n\t\t\t\t$.data(this, colorbox, $.extend(old, options));\n\t\t\t}).addClass(boxElement);\n\n\t\t\tsettings = new Settings($obj[0], options);\n\n\t\t\tif (settings.get('open')) {\n\t\t\t\tlaunch($obj[0]);\n\t\t\t}\n\t\t}\n\n\t\treturn $obj;\n\t};\n\n\tpublicMethod.position = function (speed, loadedCallback) {\n\t\tvar\n\t\tcss,\n\t\ttop = 0,\n\t\tleft = 0,\n\t\toffset = $box.offset(),\n\t\tscrollTop,\n\t\tscrollLeft;\n\n\t\t$window.unbind('resize.' + prefix);\n\n\t\t// remove the modal so that it doesn't influence the document width/height\n\t\t$box.css({top: -9e4, left: -9e4});\n\n\t\tscrollTop = $window.scrollTop();\n\t\tscrollLeft = $window.scrollLeft();\n\n\t\tif (settings.get('fixed')) {\n\t\t\toffset.top -= scrollTop;\n\t\t\toffset.left -= scrollLeft;\n\t\t\t$box.css({position: 'fixed'});\n\t\t} else {\n\t\t\ttop = scrollTop;\n\t\t\tleft = scrollLeft;\n\t\t\t$box.css({position: 'absolute'});\n\t\t}\n\n\t\t// keeps the top and left positions within the browser's viewport.\n\t\tif (settings.get('right') !== false) {\n\t\t\tleft += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);\n\t\t} else if (settings.get('left') !== false) {\n\t\t\tleft += setSize(settings.get('left'), 'x');\n\t\t} else {\n\t\t\tleft += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);\n\t\t}\n\n\t\tif (settings.get('bottom') !== false) {\n\t\t\ttop += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);\n\t\t} else if (settings.get('top') !== false) {\n\t\t\ttop += setSize(settings.get('top'), 'y');\n\t\t} else {\n\t\t\ttop += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);\n\t\t}\n\n\t\t$box.css({top: offset.top, left: offset.left, visibility:'visible'});\n\n\t\t// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,\n\t\t// but it has to be shrank down around the size of div#colorbox when it's done. If not,\n\t\t// it can invoke an obscure IE bug when using iframes.\n\t\t$wrap[0].style.width = $wrap[0].style.height = \"9999px\";\n\n\t\tfunction modalDimensions() {\n\t\t\t$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';\n\t\t\t$content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';\n\t\t}\n\n\t\tcss = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};\n\n\t\t// setting the speed to 0 if the content hasn't changed size or position\n\t\tif (speed) {\n\t\t\tvar tempSpeed = 0;\n\t\t\t$.each(css, function(i){\n\t\t\t\tif (css[i] !== previousCSS[i]) {\n\t\t\t\t\ttempSpeed = speed;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t});\n\t\t\tspeed = tempSpeed;\n\t\t}\n\n\t\tpreviousCSS = css;\n\n\t\tif (!speed) {\n\t\t\t$box.css(css);\n\t\t}\n\n\t\t$box.dequeue().animate(css, {\n\t\t\tduration: speed || 0,\n\t\t\tcomplete: function () {\n\t\t\t\tmodalDimensions();\n\n\t\t\t\tactive = false;\n\n\t\t\t\t// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.\n\t\t\t\t$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + \"px\";\n\t\t\t\t$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + \"px\";\n\n\t\t\t\tif (settings.get('reposition')) {\n\t\t\t\t\tsetTimeout(function () { // small delay before binding onresize due to an IE8 bug.\n\t\t\t\t\t\t$window.bind('resize.' + prefix, publicMethod.position);\n\t\t\t\t\t}, 1);\n\t\t\t\t}\n\n\t\t\t\tif ($.isFunction(loadedCallback)) {\n\t\t\t\t\tloadedCallback();\n\t\t\t\t}\n\t\t\t},\n\t\t\tstep: modalDimensions\n\t\t});\n\t};\n\n\tpublicMethod.resize = function (options) {\n\t\tvar scrolltop;\n\n\t\tif (open) {\n\t\t\toptions = options || {};\n\n\t\t\tif (options.width) {\n\t\t\t\tsettings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;\n\t\t\t}\n\n\t\t\tif (options.innerWidth) {\n\t\t\t\tsettings.w = setSize(options.innerWidth, 'x');\n\t\t\t}\n\n\t\t\t$loaded.css({width: settings.w});\n\n\t\t\tif (options.height) {\n\t\t\t\tsettings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;\n\t\t\t}\n\n\t\t\tif (options.innerHeight) {\n\t\t\t\tsettings.h = setSize(options.innerHeight, 'y');\n\t\t\t}\n\n\t\t\tif (!options.innerHeight && !options.height) {\n\t\t\t\tscrolltop = $loaded.scrollTop();\n\t\t\t\t$loaded.css({height: \"auto\"});\n\t\t\t\tsettings.h = $loaded.height();\n\t\t\t}\n\n\t\t\t$loaded.css({height: settings.h});\n\n\t\t\tif(scrolltop) {\n\t\t\t\t$loaded.scrollTop(scrolltop);\n\t\t\t}\n\n\t\t\tpublicMethod.position(settings.get('transition') === \"none\" ? 0 : settings.get('speed'));\n\t\t}\n\t};\n\n\tpublicMethod.prep = function (object) {\n\t\tif (!open) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar callback, speed = settings.get('transition') === \"none\" ? 0 : settings.get('speed');\n\n\t\t$loaded.remove();\n\n\t\t$loaded = $tag(div, 'LoadedContent').append(object);\n\n\t\tfunction getWidth() {\n\t\t\tsettings.w = settings.w || $loaded.width();\n\t\t\tsettings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;\n\t\t\treturn settings.w;\n\t\t}\n\t\tfunction getHeight() {\n\t\t\tsettings.h = settings.h || $loaded.height();\n\t\t\tsettings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;\n\t\t\treturn settings.h;\n\t\t}\n\n\t\t$loaded.hide()\n\t\t.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.\n\t\t.css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})\n\t\t.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.\n\t\t.prependTo($content);\n\n\t\t$loadingBay.hide();\n\n\t\t// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.\n\n\t\t$(photo).css({'float': 'none'});\n\n\t\tsetClass(settings.get('className'));\n\n\t\tcallback = function () {\n\t\t\tvar total = $related.length,\n\t\t\t\tiframe,\n\t\t\t\tcomplete;\n\n\t\t\tif (!open) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2\n\t\t\t\tif ($.support.opacity === false) {\n\t\t\t\t\t$box[0].style.removeAttribute('filter');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcomplete = function () {\n\t\t\t\tclearTimeout(loadingTimer);\n\t\t\t\t$loadingOverlay.hide();\n\t\t\t\ttrigger(event_complete);\n\t\t\t\tsettings.get('onComplete');\n\t\t\t};\n\n\n\t\t\t$title.html(settings.get('title')).show();\n\t\t\t$loaded.show();\n\n\t\t\tif (total > 1) { // handle grouping\n\t\t\t\tif (typeof settings.get('current') === \"string\") {\n\t\t\t\t\t$current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();\n\t\t\t\t}\n\n\t\t\t\t$next[(settings.get('loop') || index < total - 1) ? \"show\" : \"hide\"]().html(settings.get('next'));\n\t\t\t\t$prev[(settings.get('loop') || index) ? \"show\" : \"hide\"]().html(settings.get('previous'));\n\n\t\t\t\tslideshow();\n\n\t\t\t\t// Preloads images within a rel group\n\t\t\t\tif (settings.get('preloading')) {\n\t\t\t\t\t$.each([getIndex(-1), getIndex(1)], function(){\n\t\t\t\t\t\tvar img,\n\t\t\t\t\t\t\ti = $related[this],\n\t\t\t\t\t\t\tsettings = new Settings(i, $.data(i, colorbox)),\n\t\t\t\t\t\t\tsrc = settings.get('href');\n\n\t\t\t\t\t\tif (src && isImage(settings, src)) {\n\t\t\t\t\t\t\tsrc = retinaUrl(settings, src);\n\t\t\t\t\t\t\timg = document.createElement('img');\n\t\t\t\t\t\t\timg.src = src;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$groupControls.hide();\n\t\t\t}\n\n\t\t\tif (settings.get('iframe')) {\n\n\t\t\t\tiframe = settings.get('createIframe');\n\n\t\t\t\tif (!settings.get('scrolling')) {\n\t\t\t\t\tiframe.scrolling = \"no\";\n\t\t\t\t}\n\n\t\t\t\t$(iframe)\n\t\t\t\t\t.attr({\n\t\t\t\t\t\tsrc: settings.get('href'),\n\t\t\t\t\t\t'class': prefix + 'Iframe'\n\t\t\t\t\t})\n\t\t\t\t\t.one('load', complete)\n\t\t\t\t\t.appendTo($loaded);\n\n\t\t\t\t$events.one(event_purge, function () {\n\t\t\t\t\tiframe.src = \"//about:blank\";\n\t\t\t\t});\n\n\t\t\t\tif (settings.get('fastIframe')) {\n\t\t\t\t\t$(iframe).trigger('load');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcomplete();\n\t\t\t}\n\n\t\t\tif (settings.get('transition') === 'fade') {\n\t\t\t\t$box.fadeTo(speed, 1, removeFilter);\n\t\t\t} else {\n\t\t\t\tremoveFilter();\n\t\t\t}\n\t\t};\n\n\t\tif (settings.get('transition') === 'fade') {\n\t\t\t$box.fadeTo(speed, 0, function () {\n\t\t\t\tpublicMethod.position(0, callback);\n\t\t\t});\n\t\t} else {\n\t\t\tpublicMethod.position(speed, callback);\n\t\t}\n\t};\n\n\tfunction load () {\n\t\tvar href, setResize, prep = publicMethod.prep, $inline, request = ++requests;\n\n\t\tactive = true;\n\n\t\tphoto = false;\n\n\t\ttrigger(event_purge);\n\t\ttrigger(event_load);\n\t\tsettings.get('onLoad');\n\n\t\tsettings.h = settings.get('height') ?\n\t\t\t\tsetSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :\n\t\t\t\tsettings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');\n\n\t\tsettings.w = settings.get('width') ?\n\t\t\t\tsetSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :\n\t\t\t\tsettings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');\n\n\t\t// Sets the minimum dimensions for use in image scaling\n\t\tsettings.mw = settings.w;\n\t\tsettings.mh = settings.h;\n\n\t\t// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.\n\t\t// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.\n\t\tif (settings.get('maxWidth')) {\n\t\t\tsettings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;\n\t\t\tsettings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;\n\t\t}\n\t\tif (settings.get('maxHeight')) {\n\t\t\tsettings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;\n\t\t\tsettings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;\n\t\t}\n\n\t\thref = settings.get('href');\n\n\t\tloadingTimer = setTimeout(function () {\n\t\t\t$loadingOverlay.show();\n\t\t}, 100);\n\n\t\tif (settings.get('inline')) {\n\t\t\tvar $target = $(href).eq(0);\n\t\t\t// Inserts an empty placeholder where inline content is being pulled from.\n\t\t\t// An event is bound to put inline content back when Colorbox closes or loads new content.\n\t\t\t$inline = $('<div>').hide().insertBefore($target);\n\n\t\t\t$events.one(event_purge, function () {\n\t\t\t\t$inline.replaceWith($target);\n\t\t\t});\n\n\t\t\tprep($target);\n\t\t} else if (settings.get('iframe')) {\n\t\t\t// IFrame element won't be added to the DOM until it is ready to be displayed,\n\t\t\t// to avoid problems with DOM-ready JS that might be trying to run in that iframe.\n\t\t\tprep(\" \");\n\t\t} else if (settings.get('html')) {\n\t\t\tprep(settings.get('html'));\n\t\t} else if (isImage(settings, href)) {\n\n\t\t\thref = retinaUrl(settings, href);\n\n\t\t\tphoto = settings.get('createImg');\n\n\t\t\t$(photo)\n\t\t\t.addClass(prefix + 'Photo')\n\t\t\t.bind('error.'+prefix,function () {\n\t\t\t\tprep($tag(div, 'Error').html(settings.get('imgError')));\n\t\t\t})\n\t\t\t.one('load', function () {\n\t\t\t\tif (request !== requests) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// A small pause because some browsers will occassionaly report a\n\t\t\t\t// img.width and img.height of zero immediately after the img.onload fires\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tvar percent;\n\n\t\t\t\t\tif (settings.get('retinaImage') && window.devicePixelRatio > 1) {\n\t\t\t\t\t\tphoto.height = photo.height / window.devicePixelRatio;\n\t\t\t\t\t\tphoto.width = photo.width / window.devicePixelRatio;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (settings.get('scalePhotos')) {\n\t\t\t\t\t\tsetResize = function () {\n\t\t\t\t\t\t\tphoto.height -= photo.height * percent;\n\t\t\t\t\t\t\tphoto.width -= photo.width * percent;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (settings.mw && photo.width > settings.mw) {\n\t\t\t\t\t\t\tpercent = (photo.width - settings.mw) / photo.width;\n\t\t\t\t\t\t\tsetResize();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (settings.mh && photo.height > settings.mh) {\n\t\t\t\t\t\t\tpercent = (photo.height - settings.mh) / photo.height;\n\t\t\t\t\t\t\tsetResize();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (settings.h) {\n\t\t\t\t\t\tphoto.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($related[1] && (settings.get('loop') || $related[index + 1])) {\n\t\t\t\t\t\tphoto.style.cursor = 'pointer';\n\n\t\t\t\t\t\t$(photo).bind('click.'+prefix, function () {\n\t\t\t\t\t\t\tpublicMethod.next();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tphoto.style.width = photo.width + 'px';\n\t\t\t\t\tphoto.style.height = photo.height + 'px';\n\t\t\t\t\tprep(photo);\n\t\t\t\t}, 1);\n\t\t\t});\n\n\t\t\tphoto.src = href;\n\n\t\t} else if (href) {\n\t\t\t$loadingBay.load(href, settings.get('data'), function (data, status) {\n\t\t\t\tif (request === requests) {\n\t\t\t\t\tprep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Navigates to the next page/image in a set.\n\tpublicMethod.next = function () {\n\t\tif (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {\n\t\t\tindex = getIndex(1);\n\t\t\tlaunch($related[index]);\n\t\t}\n\t};\n\n\tpublicMethod.prev = function () {\n\t\tif (!active && $related[1] && (settings.get('loop') || index)) {\n\t\t\tindex = getIndex(-1);\n\t\t\tlaunch($related[index]);\n\t\t}\n\t};\n\n\t// Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();\n\tpublicMethod.close = function () {\n\t\tif (open && !closing) {\n\n\t\t\tclosing = true;\n\t\t\topen = false;\n\t\t\ttrigger(event_cleanup);\n\t\t\tsettings.get('onCleanup');\n\t\t\t$window.unbind('.' + prefix);\n\t\t\t$overlay.fadeTo(settings.get('fadeOut') || 0, 0);\n\n\t\t\t$box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {\n\t\t\t\t$box.hide();\n\t\t\t\t$overlay.hide();\n\t\t\t\ttrigger(event_purge);\n\t\t\t\t$loaded.remove();\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tclosing = false;\n\t\t\t\t\ttrigger(event_closed);\n\t\t\t\t\tsettings.get('onClosed');\n\t\t\t\t}, 1);\n\t\t\t});\n\t\t}\n\t};\n\n\t// Removes changes Colorbox made to the document, but does not remove the plugin.\n\tpublicMethod.remove = function () {\n\t\tif (!$box) { return; }\n\n\t\t$box.stop();\n\t\t$[colorbox].close();\n\t\t$box.stop(false, true).remove();\n\t\t$overlay.remove();\n\t\tclosing = false;\n\t\t$box = null;\n\t\t$('.' + boxElement)\n\t\t\t.removeData(colorbox)\n\t\t\t.removeClass(boxElement);\n\n\t\t$(document).unbind('click.'+prefix).unbind('keydown.'+prefix);\n\t};\n\n\t// A method for fetching the current element Colorbox is referencing.\n\t// returns a jQuery object.\n\tpublicMethod.element = function () {\n\t\treturn $(settings.el);\n\t};\n\n\tpublicMethod.settings = defaults;\n\n}(jQuery, document, window));\n","/*!\n * jQuery UI Touch Punch 0.2.3\n *\n * Copyright 2011–2014, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n * jquery.ui.widget.js\n * jquery.ui.mouse.js\n */\n(function ($) {\n\n // Detect touch support\n $.support.touch = 'ontouchend' in document;\n\n // Ignore browsers without touch support\n if (!$.support.touch) {\n return;\n }\n\n var mouseProto = $.ui.mouse.prototype,\n _mouseInit = mouseProto._mouseInit,\n _mouseDestroy = mouseProto._mouseDestroy,\n touchHandled;\n\n /**\n * Simulate a mouse event based on a corresponding touch event\n * @param {Object} event A touch event\n * @param {String} simulatedType The corresponding mouse event\n */\n function simulateMouseEvent (event, simulatedType) {\n\n // Ignore multi-touch events\n if (event.originalEvent.touches.length > 1) {\n return;\n }\n\n event.preventDefault();\n\n var touch = event.originalEvent.changedTouches[0],\n simulatedEvent = document.createEvent('MouseEvents');\n \n // Initialize the simulated mouse event using the touch event's coordinates\n simulatedEvent.initMouseEvent(\n simulatedType, // type\n true, // bubbles \n true, // cancelable \n window, // view \n 1, // detail \n touch.screenX, // screenX \n touch.screenY, // screenY \n touch.clientX, // clientX \n touch.clientY, // clientY \n false, // ctrlKey \n false, // altKey \n false, // shiftKey \n false, // metaKey \n 0, // button \n null // relatedTarget \n );\n\n // Dispatch the simulated event to the target element\n event.target.dispatchEvent(simulatedEvent);\n }\n\n /**\n * Handle the jQuery UI widget's touchstart events\n * @param {Object} event The widget element's touchstart event\n */\n mouseProto._touchStart = function (event) {\n\n var self = this;\n\n // Ignore the event if another widget is already being handled\n if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {\n return;\n }\n\n // Set the flag to prevent other widgets from inheriting the touch event\n touchHandled = true;\n\n // Track movement to determine if interaction was a click\n self._touchMoved = false;\n\n // Simulate the mouseover event\n simulateMouseEvent(event, 'mouseover');\n\n // Simulate the mousemove event\n simulateMouseEvent(event, 'mousemove');\n\n // Simulate the mousedown event\n simulateMouseEvent(event, 'mousedown');\n };\n\n /**\n * Handle the jQuery UI widget's touchmove events\n * @param {Object} event The document's touchmove event\n */\n mouseProto._touchMove = function (event) {\n\n // Ignore event if not handled\n if (!touchHandled) {\n return;\n }\n\n // Interaction was not a click\n this._touchMoved = true;\n\n // Simulate the mousemove event\n simulateMouseEvent(event, 'mousemove');\n };\n\n /**\n * Handle the jQuery UI widget's touchend events\n * @param {Object} event The document's touchend event\n */\n mouseProto._touchEnd = function (event) {\n\n // Ignore event if not handled\n if (!touchHandled) {\n return;\n }\n\n // Simulate the mouseup event\n simulateMouseEvent(event, 'mouseup');\n\n // Simulate the mouseout event\n simulateMouseEvent(event, 'mouseout');\n\n // If the touch interaction did not move, it should trigger a click\n if (!this._touchMoved) {\n\n // Simulate the click event\n simulateMouseEvent(event, 'click');\n }\n\n // Unset the flag to allow other widgets to inherit the touch event\n touchHandled = false;\n };\n\n /**\n * A duck punch of the $.ui.mouse _mouseInit method to support touch events.\n * This method extends the widget with bound touch event handlers that\n * translate touch events to mouse events and pass them to the widget's\n * original mouse event handling methods.\n */\n mouseProto._mouseInit = function () {\n \n var self = this;\n\n // Delegate the touch handlers to the widget's element\n self.element.bind({\n touchstart: $.proxy(self, '_touchStart'),\n touchmove: $.proxy(self, '_touchMove'),\n touchend: $.proxy(self, '_touchEnd')\n });\n\n // Call the original $.ui.mouse init method\n _mouseInit.call(self);\n };\n\n /**\n * Remove the touch event handlers\n */\n mouseProto._mouseDestroy = function () {\n \n var self = this;\n\n // Delegate the touch handlers to the widget's element\n self.element.unbind({\n touchstart: $.proxy(self, '_touchStart'),\n touchmove: $.proxy(self, '_touchMove'),\n touchend: $.proxy(self, '_touchEnd')\n });\n\n // Call the original $.ui.mouse destroy method\n _mouseDestroy.call(self);\n };\n\n})(jQuery);","/*!\n * jQuery UI Effects 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n// jscs:disable maximumLineLength\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/category/effects-core/\n//>>demos: http://jqueryui.com/effect/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar dataSpace = \"ui-effects-\",\n\tdataSpaceStyle = \"ui-effects-style\",\n\tdataSpaceAnimated = \"ui-effects-animated\",\n\n\t// Create a local jQuery because jQuery Color relies on it and the\n\t// global may not exist with AMD and a custom build (#10199)\n\tjQuery = $;\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.1.2\n * https://github.com/jquery/jquery-color\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Wed Jan 16 08:47:09 2013 -0600\n */\n( function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\t// Plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\n\t// A set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// JQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// Element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// Colors = jQuery.Color.names\n\tcolors,\n\n\t// Local aliases of functions called often\n\teach = jQuery.each;\n\n// Determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// Define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n} );\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\n\t\t// We add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn ( value + type.mod ) % type.mod;\n\t}\n\n\t// For now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// If this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// Exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// If this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// Named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// More than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// If the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// If the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// This is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] &&\n\t\t\t\t\t\t\tjQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\n\t\t\t\t\t\t// Use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif ( isCache ) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn same;\n\t\t} );\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t} );\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// If null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t} );\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\n\t\t// If we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t} ) );\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t} );\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// Catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t} );\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// Default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t} ).join( \"\" );\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n} );\ncolor.fn.parse.prototype = color.fn;\n\n// Hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1 ) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// Makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// Generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t} );\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// Makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\n\t\t// Alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t} );\n} );\n\n// Add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( jQuery.type( value ) !== \"string\" ||\n\t\t\t\t\t\t( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t( backgroundColor === \"\" || backgroundColor === \"transparent\" ) &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Wrapped to prevent IE from throwing errors on \"invalid\" values like\n\t\t\t\t\t// 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t} );\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t} );\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n} )( jQuery );\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\n\tfunction( _, prop ) {\n\t\t$.fx.step[ prop ] = function( fx ) {\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\t\tfx.setAttr = true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function( i, action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend( {}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function( key ) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.addClass ),\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.removeClass ),\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback ) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.filters && $.expr.filters.animated ) {\n\t$.expr.filters.animated = ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.filters.animated );\n}\n\nif ( $.uiBackCompat !== false ) {\n\t$.extend( $.effects, {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element, set ) {\n\t\t\tvar i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element, set ) {\n\t\t\tvar val, i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ], val );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetMode: function( el, mode ) {\n\t\t\tif ( mode === \"toggle\" ) {\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t},\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped, return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props = {\n\t\t\t\t\twidth: element.outerWidth( true ),\n\t\t\t\t\theight: element.outerHeight( true ),\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t},\n\t\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} ),\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize = {\n\t\t\t\t\twidth: element.width(),\n\t\t\t\t\theight: element.height()\n\t\t\t\t},\n\t\t\t\tactive = document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\t\ttry {\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive = document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper = element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props, {\n\t\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\n\t\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: \"auto\",\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t},\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active = document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects, {\n\tversion: \"1.12.1\",\n\n\tdefine: function( name, mode, effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect = mode;\n\t\t\tmode = \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] = effect;\n\t\t$.effects.effect[ name ].mode = mode;\n\n\t\treturn effect;\n\t},\n\n\tscaledDimensions: function( element, percent, direction ) {\n\t\tif ( percent === 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\touterHeight: 0,\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y,\n\t\t\twidth: element.width() * x,\n\t\t\touterHeight: element.outerHeight() * y,\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t},\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left,\n\t\t\theight: animation.clip.bottom - animation.clip.top,\n\t\t\tleft: animation.clip.left,\n\t\t\ttop: animation.clip.top\n\t\t};\n\t},\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element, queueLength, count ) {\n\t\tvar queue = element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue,\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t},\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\n\t},\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t},\n\n\tmode: function( element, mode ) {\n\t\tvar hidden = element.is( \":hidden\" );\n\n\t\tif ( mode === \"toggle\" ) {\n\t\t\tmode = hidden ? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\tmode = \"none\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty = 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty = 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty = origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx = 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx = 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx = origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder,\n\t\t\tcssPosition = element.css( \"position\" ),\n\t\t\tposition = element.position();\n\n\t\t// Lock in margins first to account for form elements, which\n\t\t// will change margin if you explicitly set height\n\t\t// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition = \"absolute\";\n\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\",\n\t\t\t\tvisibility: \"hidden\",\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition,\n\t\t\tleft: position.left,\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t},\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey = dataSpace + \"placeholder\",\n\t\t\t\tplaceholder = element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t},\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect = { effect: effect };\n\n\t// Catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( $.isFunction( option ) ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\t\t\tdefaultMode = effectMethod.mode,\n\t\t\tqueue = args.queue,\n\t\t\tqueueName = queue || \"fx\",\n\t\t\tcomplete = args.complete,\n\t\t\tmode = args.mode,\n\t\t\tmodes = [],\n\t\t\tprefilter = function( next ) {\n\t\t\t\tvar el = $( this ),\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated psuedo-selector\n\t\t\t\tel.data( dataSpaceAnimated, true );\n\n\t\t\t\t// Save effect mode for later use,\n\t\t\t\t// we can't just call $.effects.mode again later,\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis,\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode = modes.shift();\n\n\t\t\tif ( $.uiBackCompat !== false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode === \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation,\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue === false ?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\n\t},\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show ),\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide ),\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle ),\n\n\tcssUnit: function( key ) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t},\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" ), this );\n\t},\n\n\ttransfer: function( options, done ) {\n\t\tvar element = $( this ),\n\t\t\ttarget = $( options.to ),\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\t\tbody = $( \"body\" ),\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\t\tendPosition = target.offset(),\n\t\t\tanimation = {\n\t\t\t\ttop: endPosition.top - fixTop,\n\t\t\t\tleft: endPosition.left - fixLeft,\n\t\t\t\theight: target.innerHeight(),\n\t\t\t\twidth: target.innerWidth()\n\t\t\t},\n\t\t\tstartPosition = element.offset(),\n\t\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" )\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.addClass( options.className )\n\t\t\t\t.css( {\n\t\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\t\theight: element.innerHeight(),\n\t\t\t\t\twidth: element.innerWidth(),\n\t\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t\t} )\n\t\t\t\t.animate( animation, options.duration, options.easing, function() {\n\t\t\t\t\ttransfer.remove();\n\t\t\t\t\tif ( $.isFunction( done ) ) {\n\t\t\t\t\t\tdone();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str, element ) {\n\t\tvar outerWidth = element.outerWidth(),\n\t\t\touterHeight = element.outerHeight(),\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip = function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start = $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end === \"string\" ) {\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\n\t\t}\n\t\tfx.clipInit = true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n} );\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n} );\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nreturn $.effects;\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// This file is deprecated\nreturn $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n} ) );\n","/*!\n * jQuery UI Keycode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.12.1\";\n\n} ) );\n","/*!\n * jQuery UI Widget 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar widgetUuid = 0;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// Http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( $.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._on( options.element, {\n\t\t\t\"remove\": \"_untrackClassesElement\"\n\t\t} );\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName ).off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} ) );\n","/*!\n * jQuery UI Mouse 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../ie\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nreturn $.widget( \"ui.mouse\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\t( this._mouseStarted && this._mouseUp( event ) );\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\t( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) { return true; }\n} );\n\n} ) );\n","/*!\n * jQuery UI Slider 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slider\n//>>group: Widgets\n//>>description: Displays a flexible slider with ranges and accessibility via keyboard.\n//>>docs: http://api.jqueryui.com/slider/\n//>>demos: http://jqueryui.com/slider/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/slider.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../keycode\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tclasses: {\n\t\t\t\"ui-slider\": \"ui-corner-all\",\n\t\t\t\"ui-slider-handle\": \"ui-corner-all\",\n\n\t\t\t// Note: ui-widget-header isn't the most fittingly semantic framework class for this\n\t\t\t// element, but worked best visually with a variety of themes\n\t\t\t\"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n\t\t},\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// Number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\t\tthis._calculateNewMax();\n\n\t\tthis._addClass( \"ui-slider ui-slider-\" + this.orientation,\n\t\t\t\"ui-widget ui-widget-content\" );\n\n\t\tthis._refresh();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ),\n\t\t\thandle = \"<span tabindex='0'></span>\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis._addClass( this.handles, \"ui-slider-handle\", \"ui-state-default\" );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each( function( i ) {\n\t\t\t$( this )\n\t\t\t\t.data( \"ui-slider-handle-index\", i )\n\t\t\t\t.attr( \"tabIndex\", 0 );\n\t\t} );\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[ 0 ], options.values[ 0 ] ];\n\t\t\t\t} else if ( $.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice( 0 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"<div>\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range\" );\n\t\t\t} else {\n\t\t\t\tthis._removeClass( this.range, \"ui-slider-range-min ui-slider-range-max\" );\n\n\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\tthis.range.css( {\n\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( options.range === \"min\" || options.range === \"max\" ) {\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range-\" + options.range );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each( function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values( i ) );\n\t\t\tif ( ( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t} );\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tthis._addClass( closestHandle, null, \"ui-state-active\" );\n\t\tclosestHandle.trigger( \"focus\" );\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderBottomWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( closestHandle.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis._removeClass( this.handles, null, \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left -\n\t\t\t\t( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top -\n\t\t\t\t( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_uiHash: function( index, value, values ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\thandleIndex: index,\n\t\t\tvalue: value !== undefined ? value : this.value()\n\t\t};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tuiHash.value = value !== undefined ? value : this.values( index );\n\t\t\tuiHash.values = values || this.values();\n\t\t}\n\n\t\treturn uiHash;\n\t},\n\n\t_hasMultipleValues: function() {\n\t\treturn this.options.values && this.options.values.length;\n\t},\n\n\t_start: function( event, index ) {\n\t\treturn this._trigger( \"start\", event, this._uiHash( index ) );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar allowed, otherVal,\n\t\t\tcurrentValue = this.value(),\n\t\t\tnewValues = this.values();\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\tcurrentValue = this.values( index );\n\n\t\t\tif ( this.options.values.length === 2 && this.options.range === true ) {\n\t\t\t\tnewVal = index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );\n\t\t\t}\n\n\t\t\tnewValues[ index ] = newVal;\n\t\t}\n\n\t\tif ( newVal === currentValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tallowed = this._trigger( \"slide\", event, this._uiHash( index, newVal, newValues ) );\n\n\t\t// A slide can be canceled by returning false from the slide callback\n\t\tif ( allowed === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.values( index, newVal );\n\t\t} else {\n\t\t\tthis.value( newVal );\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tthis._trigger( \"stop\", event, this._uiHash( index ) );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\t\t\tthis._trigger( \"change\", event, this._uiHash( index ) );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis._removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t._addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tif ( this.options.range ) {\n\t\t\t\t\tthis._refreshRange( value );\n\t\t\t\t}\n\n\t\t\t\t// Reset positioning from previous orientation\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\n\t\t\t\t// Start from the last handle to prevent unreachable handles (#9046)\n\t\t\t\tfor ( i = valsLength - 1; i >= 0; i-- ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"step\":\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._calculateNewMax();\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this._hasMultipleValues() ) {\n\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// Returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = ( val - this._valueMin() ) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs( valModStep ) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed( 5 ) );\n\t},\n\n\t_calculateNewMax: function() {\n\t\tvar max = this.options.max,\n\t\t\tmin = this._valueMin(),\n\t\t\tstep = this.options.step,\n\t\t\taboveMin = Math.round( ( max - min ) / step ) * step;\n\t\tmax = aboveMin + min;\n\t\tif ( max > this.options.max ) {\n\n\t\t\t//If max is not divisible by step, rounding off may increase its value\n\t\t\tmax -= step;\n\t\t}\n\t\tthis.max = parseFloat( max.toFixed( this._precision() ) );\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.max;\n\t},\n\n\t_refreshRange: function( orientation ) {\n\t\tif ( orientation === \"vertical\" ) {\n\t\t\tthis.range.css( { \"width\": \"\", \"left\": \"\" } );\n\t\t}\n\t\tif ( orientation === \"horizontal\" ) {\n\t\t\tthis.range.css( { \"height\": \"\", \"bottom\": \"\" } );\n\t\t}\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.handles.each( function( i ) {\n\t\t\t\tvalPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -\n\t\t\t\t\tthat._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tleft: valPercent + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\twidth: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tbottom: ( valPercent ) + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\theight: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t} );\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\tthis._addClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\tthis._removeClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n} ) );\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tresult = fn();\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"BookReader.js\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\t__webpack_require__.O();\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_internetarchive_bookreader\"] = self[\"webpackChunk_internetarchive_bookreader\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/*\nCopyright(c)2008-2019 Internet Archive. Software license AGPL version 3.\n\nThis file is part of BookReader.\n\n BookReader is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n BookReader is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with BookReader. If not, see <http://www.gnu.org/licenses/>.\n\n The BookReader source is hosted at http://github.com/internetarchive/bookreader/\n\n*/\n// effect.js gives acces to extra easing function (e.g. easeInOutExpo)\nimport 'jquery-ui/ui/effect.js';\n\n// Needed by touch-punch\nimport 'jquery-ui/ui/widget.js';\nimport 'jquery-ui/ui/widgets/mouse.js';\nimport 'jquery-ui-touch-punch';\n\nimport './dragscrollable-br.js';\nimport PACKAGE_JSON from '../package.json';\nimport * as utils from './BookReader/utils.js';\nimport { exposeOverrideable } from './BookReader/utils/classes.js';\nimport { Navbar, getNavPageNumHtml } from './BookReader/Navbar/Navbar.js';\nimport { DEFAULT_OPTIONS } from './BookReader/options.js';\n/** @typedef {import('./BookReader/options.js').BookReaderOptions} BookReaderOptions */\n/** @typedef {import('./BookReader/options.js').ReductionFactor} ReductionFactor */\n/** @typedef {import('./BookReader/BookModel.js').PageIndex} PageIndex */\nimport { EVENTS } from './BookReader/events.js';\nimport { DebugConsole } from './BookReader/DebugConsole.js';\nimport {\n Toolbar,\n blankInfoDiv,\n blankShareDiv,\n createPopup,\n} from './BookReader/Toolbar/Toolbar.js';\nimport { BookModel } from './BookReader/BookModel.js';\nimport { Mode1Up } from './BookReader/Mode1Up.js';\nimport { Mode2Up } from './BookReader/Mode2Up.js';\nimport { ModeThumb } from './BookReader/ModeThumb';\nimport { ImageCache } from './BookReader/ImageCache.js';\nimport { PageContainer } from './BookReader/PageContainer.js';\nimport { NAMED_REDUCE_SETS } from './BookReader/ReduceSet';\n\nif (location.toString().indexOf('_debugShowConsole=true') != -1) {\n $(() => new DebugConsole().init());\n}\n\n/**\n * BookReader\n * @param {BookReaderOptions} options\n * TODO document all options properties\n * @constructor\n */\nexport default function BookReader(overrides = {}) {\n const options = jQuery.extend(true, {}, BookReader.defaultOptions, overrides, BookReader.optionOverrides);\n this.setup(options);\n}\n\nBookReader.version = PACKAGE_JSON.version;\n\n// Mode constants\n/** 1 page view */\nBookReader.constMode1up = 1;\n/** 2 pages view */\nBookReader.constMode2up = 2;\n/** thumbnails view */\nBookReader.constModeThumb = 3;\n/** image cache */\nBookReader.imageCache = null;\n\n// Animation constants\nBookReader.constNavAnimationDuration = 300;\nBookReader.constResizeAnimationDuration = 100;\n\n// Names of events that can be triggered via BookReader.prototype.trigger()\nBookReader.eventNames = EVENTS;\n\nBookReader.defaultOptions = DEFAULT_OPTIONS;\n\n/**\n * @type {BookReaderOptions}\n * This is here, just in case you need to absolutely override an option.\n */\nBookReader.optionOverrides = {};\n\n/**\n * Setup\n * It is separate from the constructor, so plugins can extend.\n * @param {BookReaderOptions} options\n */\nBookReader.prototype.setup = function(options) {\n // Store the options used to setup bookreader\n this.options = options;\n\n /** @type {number} @deprecated some past iterations set this */\n this.numLeafs = undefined;\n\n /** Overridden by plugin.search.js */\n this.enableSearch = false;\n\n /**\n * Store viewModeOrder states\n * @var {boolean}\n */\n this.viewModeOrder = [];\n\n /**\n * Used to suppress fragment change for init with canonical URLs\n * @var {boolean}\n */\n this.suppressFragmentChange = false;\n\n /** @type {function(): void} */\n this.animationFinishedCallback = null;\n\n // @deprecated: Instance constants. Use Class constants instead\n /** 1 page view */\n this.constMode1up = BookReader.constMode1up;\n /** 2 pages view */\n this.constMode2up = BookReader.constMode2up;\n /** thumbnails view */\n this.constModeThumb = BookReader.constModeThumb;\n\n // Private properties below. Configuration should be done with options.\n /** @type {number} TODO: Make private */\n this.reduce = 8; /* start very small */\n this.defaults = options.defaults;\n this.padding = options.padding;\n\n this.reduceSet = NAMED_REDUCE_SETS[options.reduceSet];\n if (!this.reduceSet) {\n console.warn(`Invalid reduceSet ${options.reduceSet}. Ignoring.`);\n this.reduceSet = NAMED_REDUCE_SETS[DEFAULT_OPTIONS.reduceSet];\n }\n\n /** @type {number}\n * can be 1 or 2 or 3 based on the display mode const value\n */\n this.mode = null;\n this.prevReadMode = null;\n this.ui = options.ui;\n this.uiAutoHide = options.uiAutoHide;\n\n this.thumbWidth = 100; // will be overridden during prepareThumbnailView\n this.thumbRowBuffer = options.thumbRowBuffer;\n this.thumbColumns = options.thumbColumns;\n this.thumbMaxLoading = options.thumbMaxLoading;\n this.thumbPadding = options.thumbPadding;\n this.displayedRows = [];\n\n this.displayedIndices = [];\n /** @deprecated Unused; will be remove in v5 */\n this.imgs = {};\n /** @deprecated No longer used; will be remove in v5 */\n this.prefetchedImgs = {}; //an object with numeric keys corresponding to page index, reduce\n\n this.animating = false;\n this.flipSpeed = options.flipSpeed;\n this.flipDelay = options.flipDelay;\n this.twoPagePopUp = null;\n this.leafEdgeTmp = null;\n\n /**\n * Represents the first displayed index\n * In 2up mode it will be the left page\n * In 1 up mode it is the highest page\n * @property {number|null} firstIndex\n */\n this.firstIndex = null;\n this.lastDisplayableIndex2up = null;\n this.isFullscreenActive = false;\n this.lastScroll = null;\n\n this.showLogo = options.showLogo;\n this.logoURL = options.logoURL;\n this.imagesBaseURL = options.imagesBaseURL;\n\n this.reductionFactors = options.reductionFactors;\n this.onePage = options.onePage;\n /** @type {import('./BookReader/Mode2Up').TwoPageState} */\n this.twoPage = options.twoPage;\n this.onePageMinBreakpoint = options.onePageMinBreakpoint;\n\n this.bookTitle = options.bookTitle;\n this.bookUrl = options.bookUrl;\n this.bookUrlText = options.bookUrlText;\n this.bookUrlTitle = options.bookUrlTitle;\n this.titleLeaf = options.titleLeaf;\n\n this.metadata = options.metadata;\n this.thumbnail = options.thumbnail;\n this.bookUrlMoreInfo = options.bookUrlMoreInfo;\n\n this.enableExperimentalControls = options.enableExperimentalControls;\n this.el = options.el;\n\n this.pageProgression = options.pageProgression;\n this.protected = options.protected;\n this.getEmbedCode = options.getEmbedCode;\n this.popup = null;\n\n // Assign the data methods\n this.data = options.data;\n if (options.getNumLeafs) BookReader.prototype.getNumLeafs = options.getNumLeafs;\n if (options.getPageWidth) BookReader.prototype.getPageWidth = options.getPageWidth;\n if (options.getPageHeight) BookReader.prototype.getPageHeight = options.getPageHeight;\n if (options.getPageURI) BookReader.prototype.getPageURI = options.getPageURI;\n if (options.getPageSide) BookReader.prototype.getPageSide = options.getPageSide;\n if (options.getPageNum) BookReader.prototype.getPageNum = options.getPageNum;\n if (options.getPageProp) BookReader.prototype.getPageProp = options.getPageProp;\n if (options.getSpreadIndices) BookReader.prototype.getSpreadIndices = options.getSpreadIndices;\n if (options.leafNumToIndex) BookReader.prototype.leafNumToIndex = options.leafNumToIndex;\n\n /** @type {{[name: string]: JQuery}} */\n this.refs = {};\n\n /**\n * @private (for now) Models are largely state storing classes. This might be too much\n * granularity, but time will tell!\n */\n this._models = {\n book: new BookModel(this),\n };\n\n /**\n * @private Components are 'subchunks' of bookreader functionality, usually UI related\n * They should be relatively decoupled from each other/bookreader.\n * Note there are no hooks right now; components just provide methods that bookreader\n * calls at the correct moments.\n **/\n this._components = {\n navbar: new Navbar(this),\n toolbar: new Toolbar(this),\n };\n\n this._modes = {\n mode1Up: new Mode1Up(this, this._models.book),\n mode2Up: new Mode2Up(this, this._models.book),\n modeThumb: new ModeThumb(this, this._models.book),\n };\n\n /** Stores classes which we want to expose (selectively) some methods as overridable */\n this._overrideable = {\n '_models.book': this._models.book,\n '_components.navbar': this._components.navbar,\n '_components.toolbar': this._components.toolbar,\n '_modes.mode1Up': this._modes.mode1Up,\n '_modes.mode2Up': this._modes.mode2Up,\n '_modes.modeThumb': this._modes.modeThumb,\n };\n\n /** Image cache for general image fetching */\n this.imageCache = new ImageCache(this._models.book, {\n useSrcSet: this.options.useSrcSet,\n reduceSet: this.reduceSet,\n });\n};\n\n/** @deprecated unused outside Mode2Up */\nObject.defineProperty(BookReader.prototype, 'leafEdgeL', {\n get() { return this._modes.mode2Up.leafEdgeL; },\n set(newVal) { this._modes.mode2Up.leafEdgeL = newVal; }\n});\n/** @deprecated unused outside Mode2Up */\nObject.defineProperty(BookReader.prototype, 'leafEdgeR', {\n get() { return this._modes.mode2Up.leafEdgeR; },\n set(newVal) { this._modes.mode2Up.leafEdgeR = newVal; }\n});\n\n/**\n * BookReader.util are static library functions\n * At top of file so they can be used below\n */\nBookReader.util = utils;\n\n/**\n * Helper to merge in params in to a params object.\n * It normalizes \"page\" into the \"index\" field to disambiguate and prevent concflicts\n * @private\n */\nBookReader.prototype.extendParams = function(params, newParams) {\n var modifiedNewParams = $.extend({}, newParams);\n if ('undefined' != typeof(modifiedNewParams.page)) {\n var pageIndex = this._models.book.parsePageString(modifiedNewParams.page);\n if (!isNaN(pageIndex))\n modifiedNewParams.index = pageIndex;\n delete modifiedNewParams.page;\n }\n $.extend(params, modifiedNewParams);\n};\n\n/**\n * Parses params from from various initialization contexts (url, cookie, options)\n * @private\n * @return {object} the parsed params\n */\nBookReader.prototype.initParams = function() {\n var params = {};\n // Flag initializing for updateFromParams()\n params.init = true;\n\n // Flag if page given in defaults or URL (not cookie)\n // Used for overriding goToFirstResult in plugin.search.js\n // Note: extendParams() converts params.page to index and gets rid of page\n // so check and set before extendParams()\n params.pageFound = false;\n\n // True if changing the URL\n params.fragmentChange = false;\n\n // This is ordered from lowest to highest priority\n\n // If we have a title leaf, use that as the default instead of index 0,\n // but only use as default if book has a few pages\n if ('undefined' != typeof(this.titleLeaf) && this._models.book.getNumLeafs() > 2) {\n params.index = this._models.book.leafNumToIndex(this.titleLeaf);\n } else {\n params.index = 0;\n }\n\n // this.defaults is a string passed in the url format. eg \"page/1/mode/1up\"\n if (this.defaults) {\n const defaultParams = this.paramsFromFragment(this.defaults);\n if ('undefined' != typeof(defaultParams.page)) {\n params.pageFound = true;\n }\n this.extendParams(params, defaultParams);\n }\n\n // Check for Resume plugin\n if (this.options.enablePageResume) {\n // Check cookies\n const val = this.getResumeValue();\n if (val !== null) {\n // If page index different from default\n if (params.index !== val) {\n // Show in URL\n params.fragmentChange = true;\n }\n params.index = val;\n }\n }\n\n // Check for URL plugin\n if (this.options.enableUrlPlugin) {\n // Params explicitly set in URL take precedence over all other methods\n var urlParams = this.paramsFromFragment(this.urlReadFragment());\n\n // Get params if hash fragment available with 'history' urlMode\n const hasHashURL = !Object.keys(urlParams).length && this.urlReadHashFragment();\n if (hasHashURL && (this.options.urlMode === 'history')) {\n urlParams = this.paramsFromFragment(this.urlReadHashFragment());\n }\n\n // If there were any parameters\n if (Object.keys(urlParams).length) {\n if ('undefined' != typeof(urlParams.page)) {\n params.pageFound = true;\n }\n this.extendParams(params, urlParams);\n // Show in URL\n params.fragmentChange = true;\n }\n }\n\n // Check for Search plugin\n if (this.options.enableSearch) {\n // Go to first result only if no default or URL page\n this.options.goToFirstResult = !params.pageFound;\n\n // If initialSearchTerm not set\n if (!this.options.initialSearchTerm) {\n // Look for any term in URL\n if (params.search) {\n // Old style: /search/[term]\n this.options.initialSearchTerm = params.search;\n this.searchTerm = params.search;\n } else {\n // If we have a query string: q=[term]\n const searchParams = new URLSearchParams(this.readQueryString());\n const searchTerm = searchParams.get('q');\n if (searchTerm) {\n this.options.initialSearchTerm = utils.decodeURIComponentPlus(searchTerm);\n }\n }\n }\n }\n\n // Set for init process, return to false at end of init()\n this.suppressFragmentChange = !params.fragmentChange;\n\n return params;\n};\n\n/**\n * Allow mocking of window.location.search\n */\nBookReader.prototype.getLocationSearch = function () {\n return window.location.search;\n};\n\n/**\n * Allow mocking of window.location.hash\n */\nBookReader.prototype.getLocationHash = function () {\n return window.location.hash;\n};\n\n/**\n * Return URL or fragment querystring\n */\nBookReader.prototype.readQueryString = function() {\n const queryString = this.getLocationSearch();\n if (queryString) {\n return queryString;\n }\n const hash = this.getLocationHash();\n const found = hash.search(/\\?\\w+=/);\n return found > -1 ? hash.slice(found) : '';\n};\n\n/**\n * Determines the initial mode for starting if a mode is not already\n * present in the params argument\n * @param {object} params\n * @return {number} the mode\n */\nBookReader.prototype.getInitialMode = function(params) {\n // Use params or browser width to set view mode\n var windowWidth = $(window).width();\n var nextMode;\n if ('undefined' != typeof(params.mode)) {\n nextMode = params.mode;\n } else if (this.ui == 'full'\n && this.enableMobileNav\n && this.isFullscreenActive\n && windowWidth <= this.onePageMinBreakpoint\n ) {\n // In full mode, we set the default based on width\n nextMode = this.constMode1up;\n } else {\n nextMode = this.constMode2up;\n }\n\n if (!this.canSwitchToMode(nextMode)) {\n nextMode = this.constMode1up;\n }\n return nextMode;\n};\n\n/**\n * This is called by the client to initialize BookReader.\n * It renders onto the DOM. It should only be called once.\n */\nBookReader.prototype.init = function() {\n this.init.initComplete = false;\n this.pageScale = this.reduce; // preserve current reduce\n\n var params = this.initParams();\n\n this.firstIndex = params.index ? params.index : 0;\n\n // Setup Navbars and other UI\n this.isTouchDevice = !!('ontouchstart' in window) || !!('msmaxtouchpoints' in window.navigator);\n\n this.refs.$br = $(this.el)\n .empty()\n .removeClass()\n .addClass(\"ui-\" + this.ui)\n .addClass(\"br-ui-\" + this.ui)\n .addClass('BookReader');\n\n // Add a class if this is a touch enabled device\n if (this.isTouchDevice) {\n this.refs.$br.addClass(\"touch\");\n } else {\n this.refs.$br.addClass(\"no-touch\");\n }\n\n this.refs.$brContainer = $(\"<div class='BRcontainer' dir='ltr'></div>\");\n this.refs.$br.append(this.refs.$brContainer);\n\n // Explicitly ensure params.mode exists for updateFromParams() below\n params.mode = this.getInitialMode(params);\n\n // Explicitly ensure this.mode exists for initNavbar() below\n this.mode = params.mode;\n\n if (this.ui == \"embed\" && this.options.showNavbar) {\n this.initEmbedNavbar();\n } else {\n if (this.options.showToolbar) {\n this.initToolbar(this.mode, this.ui); // Build inside of toolbar div\n }\n if (this.options.showNavbar) {\n this.initNavbar();\n }\n }\n\n // Switch navbar controls on mobile/desktop\n this.switchNavbarControls();\n\n this.resizeBRcontainer();\n this.updateFromParams(params);\n this.initUIStrings();\n\n // Bind to events\n\n this.bindNavigationHandlers();\n this.setupKeyListeners();\n\n this.lastScroll = (new Date().getTime());\n this.refs.$brContainer.bind('scroll', this, function(e) {\n // Note, this scroll event fires for both user, and js generated calls\n // It is functioning in some cases as the primary triggerer for rendering\n e.data.lastScroll = (new Date().getTime());\n if (e.data.constMode2up != e.data.mode) {\n e.data.drawLeafsThrottled();\n }\n });\n\n if (this.options.autoResize) {\n $(window).bind('resize', this, function(e) {\n e.data.resize();\n });\n $(window).on(\"orientationchange\", this, function(e) {\n e.data.resize();\n }.bind(this));\n }\n\n if (this.protected) {\n this.$('.BRicon.share').hide();\n }\n\n // If not searching, set to allow on-going fragment changes\n if (!this.options.initialSearchTerm) {\n this.suppressFragmentChange = false;\n }\n\n this.init.initComplete = true;\n this.trigger(BookReader.eventNames.PostInit);\n\n // Must be called after this.init.initComplete set to true to allow\n // BookReader.prototype.resize to run.\n if (this.options.startFullscreen) {\n this.toggleFullscreen();\n }\n};\n\n/**\n * @param {EVENTS} name\n * @param {array | object} [props]\n */\nBookReader.prototype.trigger = function(name, props = this) {\n const eventName = 'BookReader:' + name;\n $(document).trigger(eventName, props);\n\n utils.polyfillCustomEvent(window);\n window.dispatchEvent(new CustomEvent(eventName, {\n bubbles: true,\n composed: true,\n detail: { props },\n }));\n};\n\nBookReader.prototype.bind = function(name, callback) {\n $(document).bind('BookReader:' + name, callback);\n};\n\nBookReader.prototype.unbind = function(name, callback) {\n $(document).unbind('BookReader:' + name, callback);\n};\n\n/**\n * Resizes based on the container width and height\n */\nBookReader.prototype.resize = function() {\n if (!this.init.initComplete) return;\n\n this.resizeBRcontainer();\n\n // Switch navbar controls on mobile/desktop\n this.switchNavbarControls();\n\n if (this.constMode1up == this.mode) {\n if (this.onePage.autofit != 'none') {\n this.resizePageView1up();\n this.centerPageView();\n if (this.enableSearch) this.updateSearchHilites(); //deletes highlights but does not call remove()\n } else {\n this.centerPageView();\n this.displayedIndices = [];\n if (this.enableSearch) this.updateSearchHilites(); //deletes highlights but does not call remove()\n this.drawLeafsThrottled();\n }\n } else if (this.constModeThumb == this.mode) {\n this.prepareThumbnailView();\n } else {\n // We only need to prepare again in autofit (size of spread changes)\n if (this.twoPage.autofit) {\n // most common path, esp. for archive.org books\n this.prepareTwoPageView();\n } else {\n // used when zoomed in\n // Re-center if the scrollbars have disappeared\n var center = this.twoPageGetViewCenter();\n var doRecenter = false;\n if (this.twoPage.totalWidth < this.refs.$brContainer.prop('clientWidth')) {\n center.percentageX = 0.5;\n doRecenter = true;\n }\n if (this.twoPage.totalHeight < this.refs.$brContainer.prop('clientHeight')) {\n center.percentageY = 0.5;\n doRecenter = true;\n }\n if (doRecenter) {\n this.twoPageCenterView(center.percentageX, center.percentageY);\n }\n }\n }\n this.trigger(BookReader.eventNames.resize);\n};\n\n/**\n * Binds keyboard event listeners\n */\nBookReader.prototype.setupKeyListeners = function() {\n var self = this;\n\n var KEY_PGUP = 33;\n var KEY_PGDOWN = 34;\n var KEY_END = 35;\n var KEY_HOME = 36;\n\n var KEY_LEFT = 37;\n var KEY_UP = 38;\n var KEY_RIGHT = 39;\n var KEY_DOWN = 40;\n // The minus(-) and equal(=) keys have different mappings for different browsers\n var KEY_MINUS = 189; // Chrome\n var KEY_MINUS_F = 173; // Firefox\n var KEY_NUMPAD_SUBTRACT = 109;\n var KEY_EQUAL = 187; // Chrome\n var KEY_EQUAL_F = 61; // Firefox\n var KEY_NUMPAD_ADD = 107;\n\n // We use document here instead of window to avoid a bug in jQuery on IE7\n $(document).keydown(function(e) {\n\n // Keyboard navigation\n if (!self.keyboardNavigationIsDisabled(e)) {\n switch (e.keyCode) {\n case KEY_PGUP:\n case KEY_UP:\n // In 1up mode page scrolling is handled by browser\n if (self.constMode2up == self.mode) {\n e.preventDefault();\n self.prev();\n }\n break;\n case KEY_DOWN:\n case KEY_PGDOWN:\n if (self.constMode2up == self.mode) {\n e.preventDefault();\n self.next();\n }\n break;\n case KEY_END:\n e.preventDefault();\n self.last();\n break;\n case KEY_HOME:\n e.preventDefault();\n self.first();\n break;\n case KEY_LEFT:\n if (self.constModeThumb != self.mode) {\n e.preventDefault();\n self.left();\n }\n break;\n case KEY_RIGHT:\n if (self.constModeThumb != self.mode) {\n e.preventDefault();\n self.right();\n }\n break;\n case KEY_MINUS:\n case KEY_MINUS_F:\n case KEY_NUMPAD_SUBTRACT:\n e.preventDefault();\n self.zoom(-1);\n break;\n case KEY_EQUAL:\n case KEY_EQUAL_F:\n case KEY_NUMPAD_ADD:\n e.preventDefault();\n self.zoom(+1);\n break;\n }\n }\n });\n};\n\nBookReader.prototype.drawLeafs = function() {\n if (this.constMode1up == this.mode) {\n this.drawLeafsOnePage();\n } else if (this.constModeThumb == this.mode) {\n this.drawLeafsThumbnail();\n } else {\n this.drawLeafsTwoPage();\n }\n};\n\n/**\n * @protected\n * @param {PageIndex} index\n */\nBookReader.prototype._createPageContainer = function(index) {\n return new PageContainer(this._models.book.getPage(index, false), {\n isProtected: this.protected,\n imageCache: this.imageCache,\n loadingImage: this.imagesBaseURL + 'loading.gif',\n });\n};\n\nBookReader.prototype.bindGestures = function(jElement) {\n // TODO support gesture change is only iOS. Support android.\n // HACK(2017-01-20) - Momentum scrolling is causing the scroll position\n // to jump after zooming in on mobile device. I am able to reproduce\n // when you move the book with one finger and then add another\n // finger to pinch. Gestures are aware of scroll state.\n\n var self = this;\n var numTouches = 1;\n\n jElement.unbind('touchmove').bind('touchmove', function(e) {\n if (e.originalEvent.cancelable) numTouches = e.originalEvent.touches.length;\n e.stopPropagation();\n });\n\n jElement.unbind('gesturechange').bind('gesturechange', function(e) {\n e.preventDefault();\n // These are two very important fixes to adjust for the scroll position\n // issues described below\n if (!(numTouches !== 2 || (new Date().getTime()) - self.lastScroll < 500)) {\n if (e.originalEvent.scale > 1.5) {\n self.zoom(1);\n } else if (e.originalEvent.scale < 0.6) {\n self.zoom(-1);\n }\n }\n });\n};\n\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.drawLeafsThumbnail = ModeThumb.prototype.drawLeafs;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'drawLeafs', 'drawLeafsThumbnail');\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.lazyLoadThumbnails = ModeThumb.prototype.lazyLoadThumbnails;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'lazyLoadThumbnails', 'lazyLoadThumbnails');\nBookReader.prototype.lazyLoadImage = ModeThumb.prototype.lazyLoadImage;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'lazyLoadImage', 'lazyLoadImage');\n/** @deprecated Internal use only */\nBookReader.prototype.zoomThumb = ModeThumb.prototype.zoom;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'zoom', 'zoomThumb');\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.getThumbnailWidth = ModeThumb.prototype.getThumbnailWidth;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'getThumbnailWidth', 'getThumbnailWidth');\n/** @deprecated Not used outside ModeThumb */\nBookReader.prototype.prepareThumbnailView = ModeThumb.prototype.prepare;\nexposeOverrideableMethod(ModeThumb, '_modes.modeThumb', 'prepare', 'prepareThumbnailView');\n\n/**\n * A throttled version of drawLeafs\n */\nBookReader.prototype.drawLeafsThrottled = utils.throttle(\n BookReader.prototype.drawLeafs,\n 250 // 250 ms gives quick feedback, but doesn't eat cpu\n);\n\n/**\n * @param {number} direction Pass 1 to zoom in, anything else to zoom out\n */\nBookReader.prototype.zoom = function(direction) {\n switch (this.mode) {\n case this.constMode1up:\n if (direction == 1) {\n // XXX other cases\n this.zoom1up('in');\n } else {\n this.zoom1up('out');\n }\n break;\n case this.constMode2up:\n if (direction == 1) {\n // XXX other cases\n this.zoom2up('in');\n } else {\n this.zoom2up('out');\n }\n break;\n case this.constModeThumb:\n // XXX update zoomThumb for named directions\n this.zoomThumb(direction);\n break;\n }\n\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n return;\n};\n\n/**\n * Resizes the inner container to fit within the visible space to prevent\n * the top toolbar and bottom navbar from clipping the visible book\n *\n * @param { boolean } animate - optional\n * When used, BookReader will fill the main container with the book's content.\n * This is primarily for 1up view - a follow up animation to the nav animation\n * So resize isn't perceived sharp/jerky\n */\nBookReader.prototype.resizeBRcontainer = function(animate) {\n if (animate) {\n this.refs.$brContainer.animate({\n top: this.getToolBarHeight(),\n bottom: this.getFooterHeight()\n }, this.constResizeAnimationDuration, 'linear');\n } else {\n this.refs.$brContainer.css({\n top: this.getToolBarHeight(),\n bottom: this.getFooterHeight()\n });\n }\n};\n\nBookReader.prototype.centerPageView = function() {\n var scrollWidth = this.refs.$brContainer.prop('scrollWidth');\n var clientWidth = this.refs.$brContainer.prop('clientWidth');\n if (scrollWidth > clientWidth) {\n this.refs.$brContainer.prop('scrollLeft', (scrollWidth - clientWidth) / 2);\n }\n};\n\n/**\n * Quantizes the given reduction factor to closest power of two from set from 12.5% to 200%\n * @param {number} reduce\n * @param {ReductionFactor[]} reductionFactors\n * @return {number}\n */\nBookReader.prototype.quantizeReduce = function(reduce, reductionFactors) {\n let quantized = reductionFactors[0].reduce;\n let distance = Math.abs(reduce - quantized);\n\n for (let i = 1; i < reductionFactors.length; i++) {\n const newDistance = Math.abs(reduce - reductionFactors[i].reduce);\n if (newDistance < distance) {\n distance = newDistance;\n quantized = reductionFactors[i].reduce;\n }\n }\n return quantized;\n};\n\n/**\n * @param {number} currentReduce\n * @param {'in' | 'out' | 'auto' | 'height' | 'width'} direction\n * @param {ReductionFactor[]} reductionFactors Must be sorted\n * @returns {ReductionFactor}\n */\nBookReader.prototype.nextReduce = function(currentReduce, direction, reductionFactors) {\n // XXX add 'closest', to replace quantize function\n\n if (direction === 'in') {\n let newReduceIndex = 0;\n for (let i = 1; i < reductionFactors.length; i++) {\n if (reductionFactors[i].reduce < currentReduce) {\n newReduceIndex = i;\n }\n }\n return reductionFactors[newReduceIndex];\n } else if (direction === 'out') {\n const lastIndex = reductionFactors.length - 1;\n let newReduceIndex = lastIndex;\n\n for (let i = lastIndex; i >= 0; i--) {\n if (reductionFactors[i].reduce > currentReduce) {\n newReduceIndex = i;\n }\n }\n return reductionFactors[newReduceIndex];\n } else if (direction === 'auto') {\n // If an 'auto' is specified, use that\n const autoMatch = reductionFactors.find(rf => rf.autofit == 'auto');\n if (autoMatch) return autoMatch;\n\n // Otherwise, choose the least reduction from height/width\n const candidates = reductionFactors.filter(({autofit}) => autofit == 'height' || autofit == 'width');\n let choice = null;\n for (let i = 0; i < candidates.length; i++) {\n if (choice === null || choice.reduce < candidates[i].reduce) {\n choice = candidates[i];\n }\n }\n if (choice) return choice;\n } else if (direction === 'height' || direction === 'width') {\n // Asked for specific autofit mode\n const match = reductionFactors.find(rf => rf.autofit == direction);\n if (match) return match;\n }\n\n return reductionFactors[0];\n};\n\n/**\n * @param {ReductionFactor} a\n * @param {ReductionFactor} b\n */\nBookReader.prototype._reduceSort = (a, b) => a.reduce - b.reduce;\n\n/**\n * Attempts to jump to page\n * @param {string}\n * @return {boolean} Returns true if page could be found, false otherwise.\n */\nBookReader.prototype.jumpToPage = function(pageNum) {\n var pageIndex = this._models.book.parsePageString(pageNum);\n\n if ('undefined' != typeof(pageIndex)) {\n this.jumpToIndex(pageIndex);\n return true;\n }\n\n // Page not found\n return false;\n};\n\n/**\n * Check whether the specified index is currently displayed\n * @param {PageIndex} index\n */\nBookReader.prototype._isIndexDisplayed = function(index) {\n // One up \"caches\" pages +- current, so exclude those in the test.\n return this.constMode1up == this.mode ? this.displayedIndices.slice(1, -1).includes(index) :\n this.displayedIndices ? this.displayedIndices.includes(index) :\n this.currentIndex() == index;\n};\n\n/**\n * Changes the current page\n * @param {PageIndex} index\n * @param {number} [pageX]\n * @param {number} [pageY]\n * @param {boolean} [noAnimate]\n */\nBookReader.prototype.jumpToIndex = function(index, pageX, pageY, noAnimate) {\n // Don't jump into specific unviewable page\n const page = this._models.book.getPage(index);\n if (!page.isViewable && page.unviewablesStart != page.index) {\n // If already in unviewable range, jump to end of that range\n const alreadyInPreview = this._isIndexDisplayed(page.unviewablesStart);\n const newIndex = alreadyInPreview ? page.findNext({ combineConsecutiveUnviewables: true }).index : page.unviewablesStart;\n return this.jumpToIndex(newIndex, pageX, pageY, noAnimate);\n }\n\n this.trigger(BookReader.eventNames.stop);\n\n if (this.constMode2up == this.mode) {\n this._modes.mode2Up.jumpToIndex(index);\n } else if (this.constModeThumb == this.mode) {\n this._modes.modeThumb.jumpToIndex(index);\n } else { // 1up\n this._modes.mode1Up.jumpToIndex(index, pageX, pageY, noAnimate);\n }\n};\n\n/**\n * Return mode or 1up if initial thumb\n * @param {number}\n * @see BookReader.prototype.drawLeafsThumbnail\n */\nBookReader.prototype.getPrevReadMode = function(mode) {\n if (mode === BookReader.constMode1up || mode === BookReader.constMode2up) {\n return mode;\n } else if (this.prevReadMode === null) {\n // Initial thumb, return 1up\n return BookReader.constMode1up;\n }\n};\n\n/**\n * Switches the mode (eg 1up 2up thumb)\n * @param {number}\n * @param {object} [options]\n * @param {boolean} [options.suppressFragmentChange = false]\n * @param {boolean} [options.onInit = false] - this\n */\nBookReader.prototype.switchMode = function(\n mode,\n {\n suppressFragmentChange = false,\n init = false,\n pageFound = false\n } = {}\n) {\n // Skip checks before init() complete\n if (this.init.initComplete) {\n if (mode === this.mode) {\n return;\n }\n if (!this.canSwitchToMode(mode)) {\n return;\n }\n }\n\n this.trigger(BookReader.eventNames.stop);\n if (this.enableSearch) this.removeSearchHilites();\n\n this.prevReadMode = this.getPrevReadMode(this.mode);\n\n this.mode = mode;\n\n // reinstate scale if moving from thumbnail view\n if (this.pageScale !== this.reduce) {\n this.reduce = this.pageScale;\n }\n\n // $$$ TODO preserve center of view when switching between mode\n // See https://bugs.edge.launchpad.net/gnubook/+bug/416682\n\n // XXX maybe better to preserve zoom in each mode\n if (this.constMode1up == mode) {\n this.onePageCalculateReductionFactors();\n this.reduce = this.quantizeReduce(this.reduce, this.onePage.reductionFactors);\n this.prepareOnePageView();\n } else if (this.constModeThumb == mode) {\n this.reduce = this.quantizeReduce(this.reduce, this.reductionFactors);\n this.prepareThumbnailView();\n } else {\n // $$$ why don't we save autofit?\n // this.twoPage.autofit = null; // Take zoom level from other mode\n // spread indices not set, so let's set them\n if (init || !pageFound) {\n this.setSpreadIndices();\n }\n\n this.twoPageCalculateReductionFactors(); // this sets this.twoPage && this.reduce\n this.prepareTwoPageView();\n this.twoPageCenterView(0.5, 0.5); // $$$ TODO preserve center\n }\n\n if (!(this.suppressFragmentChange || suppressFragmentChange)) {\n this.trigger(BookReader.eventNames.fragmentChange);\n }\n var eventName = mode + 'PageViewSelected';\n this.trigger(BookReader.eventNames[eventName]);\n\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n};\n\nBookReader.prototype.updateBrClasses = function() {\n var modeToClass = {};\n modeToClass[this.constMode1up] = 'BRmode1up';\n modeToClass[this.constMode2up] = 'BRmode2Up';\n modeToClass[this.constModeThumb] = 'BRmodeThumb';\n\n this.refs.$br\n .removeClass('BRmode1up BRmode2Up BRmodeThumb')\n .addClass(modeToClass[this.mode]);\n\n if (this.isFullscreen()) {\n this.refs.$br.addClass('fullscreenActive');\n $(document.body).addClass('BRfullscreenActive');\n } else {\n this.refs.$br.removeClass('fullscreenActive');\n $(document.body).removeClass('BRfullscreenActive');\n }\n};\n\nBookReader.prototype.isFullscreen = function() {\n return this.isFullscreenActive;\n};\n\n/**\n * Toggles fullscreen\n * @param { boolean } bindKeyboardControls\n */\nBookReader.prototype.toggleFullscreen = function(bindKeyboardControls = true) {\n if (this.isFullscreen()) {\n this.exitFullScreen();\n } else {\n this.enterFullscreen(bindKeyboardControls);\n }\n};\n\n/**\n * Enters fullscreen\n * including:\n * - animation\n * - binds keyboard controls\n * - fires custom event\n * @param { boolean } bindKeyboardControls\n */\nBookReader.prototype.enterFullscreen = function(bindKeyboardControls = true) {\n const currentIndex = this.currentIndex();\n this.refs.$brContainer.css('opacity', 0);\n\n if (bindKeyboardControls) {\n this._fullscreenCloseHandler = (e) => {\n if (e.keyCode === 27) this.toggleFullscreen();\n };\n $(document).keyup(this._fullscreenCloseHandler);\n }\n\n const windowWidth = $(window).width();\n if (windowWidth <= this.onePageMinBreakpoint) {\n this.switchMode(this.constMode1up);\n }\n\n this.isFullscreenActive = true;\n this.animating = true;\n this.refs.$brContainer.animate({opacity: 1}, 'fast', 'linear',() => {\n this.resize();\n this.jumpToIndex(currentIndex);\n this.animating = false;\n });\n\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n this.trigger(BookReader.eventNames.fullscreenToggled);\n};\n\n/**\n * Exits fullscreen\n * - toggles fullscreen\n * - binds keyboard controls\n * - fires custom event\n * @param { boolean } bindKeyboardControls\n */\nBookReader.prototype.exitFullScreen = function() {\n this.refs.$brContainer.css('opacity', 0);\n\n $(document).unbind('keyup', this._fullscreenCloseHandler);\n\n var windowWidth = $(window).width();\n\n const canShow2up = this.options.controls.twoPage.visible;\n if (canShow2up && (windowWidth <= this.onePageMinBreakpoint)) {\n this.switchMode(this.constMode2up);\n }\n\n this.isFullscreenActive = false;\n this.updateBrClasses();\n this.animating = true;\n this.refs.$brContainer.animate({opacity: 1}, 'fast', 'linear', () => {\n this.resize();\n this.animating = false;\n });\n this.textSelectionPlugin?.stopPageFlip(this.refs.$brContainer);\n this.trigger(BookReader.eventNames.fullscreenToggled);\n};\n\n/**\n * Returns the currently active index\n * @return {number}\n * @throws\n */\nBookReader.prototype.currentIndex = function() {\n // $$$ we should be cleaner with our idea of which index is active in 1up/2up\n if (this.mode == this.constMode1up || this.mode == this.constModeThumb) {\n return this.firstIndex; // $$$ TODO page in center of view would be better\n } else if (this.mode == this.constMode2up) {\n // Only allow indices that are actually present in book\n return utils.clamp(this.firstIndex, 0, this._models.book.getNumLeafs() - 1);\n } else {\n throw 'currentIndex called for unimplemented mode ' + this.mode;\n }\n};\n\n/**\n * Setter for this.firstIndex\n * Also triggers an event and updates the navbar slider position\n * @param {number} index\n * @param {object} [options]\n * @param {boolean} [options.suppressFragmentChange = false]\n */\nBookReader.prototype.updateFirstIndex = function(\n index,\n { suppressFragmentChange = false } = {}\n) {\n // Called multiple times when defaults contains \"mode/1up\",\n // including after init(). Skip fragment change if no index change\n if (this.firstIndex === index) {\n suppressFragmentChange = true;\n }\n this.firstIndex = index;\n if (!(this.suppressFragmentChange || suppressFragmentChange)) {\n this.trigger(BookReader.eventNames.fragmentChange);\n }\n // If there's an initial search we stop suppressing global URL changes\n // when local suppression ends\n // This seems to correctly handle multiple calls during mode/1up\n if (this.options.initialSearchTerm && !suppressFragmentChange) {\n this.suppressFragmentChange = false;\n }\n this.trigger('pageChanged');\n this.updateNavIndexThrottled(index);\n};\n\n/**\n * Flip the right page over onto the left\n */\nBookReader.prototype.right = function() {\n if ('rl' != this.pageProgression) {\n this.next();\n } else {\n this.prev();\n }\n};\n\n/**\n * Flip to the rightmost page\n */\nBookReader.prototype.rightmost = function() {\n if ('rl' != this.pageProgression) {\n this.last();\n } else {\n this.first();\n }\n};\n\n/**\n * Flip the left page over onto the right\n */\nBookReader.prototype.left = function() {\n if ('rl' != this.pageProgression) {\n this.prev();\n } else {\n this.next();\n }\n};\n\n/**\n * Flip to the leftmost page\n */\nBookReader.prototype.leftmost = function() {\n if ('rl' != this.pageProgression) {\n this.first();\n } else {\n this.last();\n }\n};\n\nBookReader.prototype.next = function() {\n if (this.constMode2up == this.mode) {\n this.trigger(BookReader.eventNames.stop);\n this.flipFwdToIndex(null);\n } else {\n if (this.firstIndex < this.lastDisplayableIndex()) {\n this.jumpToIndex(this.firstIndex + 1);\n }\n }\n};\n\nBookReader.prototype.prev = function() {\n const isOnFrontPage = this.firstIndex < 1;\n if (isOnFrontPage) return;\n\n if (this.constMode2up == this.mode) {\n this.trigger(BookReader.eventNames.stop);\n this.flipBackToIndex(null);\n } else {\n if (this.firstIndex >= 1) {\n this.jumpToIndex(this.firstIndex - 1);\n }\n }\n};\n\nBookReader.prototype.first = function() {\n this.jumpToIndex(this.firstDisplayableIndex());\n};\n\nBookReader.prototype.last = function() {\n this.jumpToIndex(this.lastDisplayableIndex());\n};\n\n/**\n * Scrolls down one screen view\n */\nBookReader.prototype.scrollDown = function() {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n if ( this.mode == this.constMode1up && (this.reduce >= this.onePageGetAutofitHeight()) ) {\n // Whole pages are visible, scroll whole page only\n return this.next();\n }\n\n this.refs.$brContainer.stop(true).animate(\n { scrollTop: '+=' + this._scrollAmount() + 'px'},\n 400, 'easeInOutExpo'\n );\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * Scrolls up one screen view\n */\nBookReader.prototype.scrollUp = function() {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n if ( this.mode == this.constMode1up && (this.reduce >= this.onePageGetAutofitHeight()) ) {\n // Whole pages are visible, scroll whole page only\n return this.prev();\n }\n\n this.refs.$brContainer.stop(true).animate(\n { scrollTop: '-=' + this._scrollAmount() + 'px'},\n 400, 'easeInOutExpo'\n );\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * The amount to scroll vertically in integer pixels\n */\nBookReader.prototype._scrollAmount = function() {\n if (this.constMode1up == this.mode) {\n // Overlap by % of page size\n return parseInt(this.refs.$brContainer.prop('clientHeight') - this._models.book.getPageHeight(this.currentIndex()) / this.reduce * 0.03);\n }\n\n return parseInt(0.9 * this.refs.$brContainer.prop('clientHeight'));\n};\n\n/**\n * @deprecated No longer used; will be remove in v5\n */\nBookReader.prototype.prefetchImg = async function(index, fetchNow = false) {\n console.warn('Call to deprecated function: BookReader.prefetchImg. No-op.');\n};\n\n/**\n * @deprecated No longer used; will be remove in v5\n */\nBookReader.prototype.pruneUnusedImgs = function() {\n console.warn('Call to deprecated function: BookReader.pruneUnused. No-op.');\n};\n\n/************************/\n/** Mode1Up extensions **/\n/************************/\n/** @deprecated not used outside BookReader */\nBookReader.prototype.prepareOnePageView = Mode1Up.prototype.prepare;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'prepare', 'prepareOnePageView');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.drawLeafsOnePage = Mode1Up.prototype.drawLeafs;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'drawLeafs', 'drawLeafsOnePage');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.zoom1up = Mode1Up.prototype.zoom;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'zoom', 'zoom1up');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.onePageGetAutofitWidth = Mode1Up.prototype.getAutofitWidth;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'getAutofitWidth', 'onePageGetAutofitWidth');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.onePageGetAutofitHeight = Mode1Up.prototype.getAutofitHeight;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'getAutofitHeight', 'onePageGetAutofitHeight');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.onePageGetPageTop = Mode1Up.prototype.getPageTop;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'getPageTop', 'onePageGetPageTop');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.onePageCalculateReductionFactors = Mode1Up.prototype.calculateReductionFactors;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'calculateReductionFactors', 'onePageCalculateReductionFactors');\n/** @deprecated not used outside Mode1Up, BookReader */\nBookReader.prototype.resizePageView1up = Mode1Up.prototype.resizePageView;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'resizePageView', 'resizePageView1up');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.onePageCalculateViewDimensions = Mode1Up.prototype.calculateViewDimensions;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'calculateViewDimensions', 'onePageCalculateViewDimensions');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.centerX1up = Mode1Up.prototype.centerX;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'centerX', 'centerX1up');\n/** @deprecated not used outside Mode1Up */\nBookReader.prototype.centerY1up = Mode1Up.prototype.centerY;\nexposeOverrideableMethod(Mode1Up, '_modes.mode1Up', 'centerY', 'centerY1up');\n\n/************************/\n/** Mode2Up extensions **/\n/************************/\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.zoom2up = Mode2Up.prototype.zoom;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'zoom', 'zoom2up');\nBookReader.prototype.twoPageGetAutofitReduce = Mode2Up.prototype.getAutofitReduce;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getAutofitReduce', 'twoPageGetAutofitReduce');\nBookReader.prototype.flipBackToIndex = Mode2Up.prototype.flipBackToIndex;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipBackToIndex', 'flipBackToIndex');\nBookReader.prototype.flipFwdToIndex = Mode2Up.prototype.flipFwdToIndex;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipFwdToIndex', 'flipFwdToIndex');\nBookReader.prototype.setHilightCss2UP = Mode2Up.prototype.setHilightCss;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setHilightCss', 'setHilightCss2UP');\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.setClickHandler2UP = Mode2Up.prototype.setClickHandler;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setClickHandler', 'setClickHandler2UP');\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.drawLeafsTwoPage = Mode2Up.prototype.drawLeafs;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'drawLeafs', 'drawLeafsTwoPage');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.prepareTwoPageView = Mode2Up.prototype.prepareTwoPageView;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prepareTwoPageView', 'prepareTwoPageView');\n/** @deprecated not used outside Mode2Up */\nBookReader.prototype.prepareTwoPagePopUp = Mode2Up.prototype.preparePopUp;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'preparePopUp', 'prepareTwoPagePopUp');\n/** @deprecated not used outside BookReader, Mode2Up */\nBookReader.prototype.calculateSpreadSize = Mode2Up.prototype.calculateSpreadSize;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'calculateSpreadSize', 'calculateSpreadSize');\n/** @deprecated not used outside BookReader, Mode2Up */\nBookReader.prototype.getIdealSpreadSize = Mode2Up.prototype.getIdealSpreadSize;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getIdealSpreadSize', 'getIdealSpreadSize');\n/** @deprecated not used outside BookReader, Mode2Up */\nBookReader.prototype.getSpreadSizeFromReduce = Mode2Up.prototype.getSpreadSizeFromReduce;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getSpreadSizeFromReduce', 'getSpreadSizeFromReduce');\n/** @deprecated unused */\nBookReader.prototype.twoPageIsZoomedIn = Mode2Up.prototype.isZoomedIn;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'isZoomedIn', 'twoPageIsZoomedIn');\n/** @deprecated not used outside BookReader */\nBookReader.prototype.twoPageCalculateReductionFactors = Mode2Up.prototype.calculateReductionFactors;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'calculateReductionFactors', 'twoPageCalculateReductionFactors');\n/** @deprecated unused */\nBookReader.prototype.twoPageSetCursor = Mode2Up.prototype.setCursor;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setCursor', 'twoPageSetCursor');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.flipLeftToRight = Mode2Up.prototype.flipLeftToRight;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipLeftToRight', 'flipLeftToRight');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.flipRightToLeft = Mode2Up.prototype.flipRightToLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipRightToLeft', 'flipRightToLeft');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.setMouseHandlers2UP = Mode2Up.prototype.setMouseHandlers;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setMouseHandlers', 'setMouseHandlers2UP');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.prepareFlipLeftToRight = Mode2Up.prototype.prepareFlipLeftToRight;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prepareFlipLeftToRight', 'prepareFlipLeftToRight');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.prepareFlipRightToLeft = Mode2Up.prototype.prepareFlipRightToLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prepareFlipRightToLeft', 'prepareFlipRightToLeft');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.getPageWidth2UP = Mode2Up.prototype.getPageWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getPageWidth', 'getPageWidth2UP');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageGutter = Mode2Up.prototype.gutter;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'gutter', 'twoPageGutter');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageTop = Mode2Up.prototype.top;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'top', 'twoPageTop');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageCoverWidth = Mode2Up.prototype.coverWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'coverWidth', 'twoPageCoverWidth');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageGetViewCenter = Mode2Up.prototype.getViewCenter;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'getViewCenter', 'twoPageGetViewCenter');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.twoPageCenterView = Mode2Up.prototype.centerView;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'centerView', 'twoPageCenterView');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageFlipAreaHeight = Mode2Up.prototype.flipAreaHeight;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipAreaHeight', 'twoPageFlipAreaHeight');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageFlipAreaWidth = Mode2Up.prototype.flipAreaWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipAreaWidth', 'twoPageFlipAreaWidth');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.twoPageFlipAreaTop = Mode2Up.prototype.flipAreaTop;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'flipAreaTop', 'twoPageFlipAreaTop');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageLeftFlipAreaLeft = Mode2Up.prototype.leftFlipAreaLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'leftFlipAreaLeft', 'twoPageLeftFlipAreaLeft');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.twoPageRightFlipAreaLeft = Mode2Up.prototype.rightFlipAreaLeft;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'rightFlipAreaLeft', 'twoPageRightFlipAreaLeft');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.gutterOffsetForIndex = Mode2Up.prototype.gutterOffsetForIndex;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'gutterOffsetForIndex', 'gutterOffsetForIndex');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.leafEdgeWidth = Mode2Up.prototype.leafEdgeWidth;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'leafEdgeWidth', 'leafEdgeWidth');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.jumpIndexForLeftEdgePageX = Mode2Up.prototype.jumpIndexForLeftEdgePageX;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'jumpIndexForLeftEdgePageX', 'jumpIndexForLeftEdgePageX');\n/** @deprecated unused outside BookReader, Mode2Up */\nBookReader.prototype.jumpIndexForRightEdgePageX = Mode2Up.prototype.jumpIndexForRightEdgePageX;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'jumpIndexForRightEdgePageX', 'jumpIndexForRightEdgePageX');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.prefetch = Mode2Up.prototype.prefetch;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'prefetch', 'prefetch');\n/** @deprecated unused outside Mode2Up */\nBookReader.prototype.setSpreadIndices = Mode2Up.prototype.setSpreadIndices;\nexposeOverrideableMethod(Mode2Up, '_modes.mode2Up', 'setSpreadIndices', 'setSpreadIndices');\n/**\n * Immediately stop flip animations. Callbacks are triggered.\n */\nBookReader.prototype.stopFlipAnimations = function() {\n this.trigger(BookReader.eventNames.stop);\n\n // Stop animation, clear queue, trigger callbacks\n if (this.leafEdgeTmp) {\n $(this.leafEdgeTmp).stop(false, true);\n }\n jQuery.each(this._modes.mode2Up.pageContainers, function() {\n $(this.$container).stop(false, true);\n });\n\n // And again since animations also queued in callbacks\n if (this.leafEdgeTmp) {\n $(this.leafEdgeTmp).stop(false, true);\n }\n jQuery.each(this._modes.mode2Up.pageContainers, function() {\n $(this.$container).stop(false, true);\n });\n};\n\n/**\n * Returns true if keyboard navigation should be disabled for the event\n * @param {Event}\n * @return {boolean}\n */\nBookReader.prototype.keyboardNavigationIsDisabled = function(event) {\n return event.target.tagName == \"INPUT\";\n};\n\n/**\n * @template TClass extends { br: BookReader }\n * Helper method to expose a method onto BookReader from a composed class.\n * Only composed classes in BookReader._overridable can be exposed in this\n * way.\n * @param {new () => TClass} Class\n * @param {keyof BookReader['_overrideable']} classKey\n * @param {keyof TClass} method\n * @param {string} [brMethod]\n */\nfunction exposeOverrideableMethod(Class, classKey, method, brMethod = method) {\n /** @type {function(TClass): BookReader} */\n const classToBr = cls => cls.br;\n /** @type {function(BookReader): TClass} */\n const brToClass = br => br._overrideable[classKey];\n exposeOverrideable(Class, method, classToBr, BookReader, brMethod, brToClass);\n}\n\n\n/***********************/\n/** Navbar extensions **/\n/***********************/\nBookReader.prototype.initNavbar = Navbar.prototype.init;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'init', 'initNavbar');\nBookReader.prototype.switchNavbarControls = Navbar.prototype.switchNavbarControls;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'switchNavbarControls');\nBookReader.prototype.updateViewModeButton = Navbar.prototype.updateViewModeButton;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'updateViewModeButton');\nBookReader.prototype.getNavPageNumString = Navbar.prototype.getNavPageNumString;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'getNavPageNumString');\n/** @deprecated */\nBookReader.prototype.initEmbedNavbar = Navbar.prototype.initEmbed;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'initEmbed', 'initEmbedNavbar');\n/** @deprecated unused */\nBookReader.prototype.getNavPageNumHtml = getNavPageNumHtml;\n/** @deprecated unused outside this file */\nBookReader.prototype.updateNavPageNum = Navbar.prototype.updateNavPageNum;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'updateNavPageNum');\n/** @deprecated unused outside this file */\nBookReader.prototype.updateNavIndex = Navbar.prototype.updateNavIndex;\nexposeOverrideableMethod(Navbar, '_components.navbar', 'updateNavIndex');\n/** @deprecated unused outside this file */\nBookReader.prototype.updateNavIndexThrottled = utils.throttle(BookReader.prototype.updateNavIndex, 250, false);\n/** @deprecated unused */\nBookReader.prototype.updateNavIndexDebounced = utils.debounce(BookReader.prototype.updateNavIndex, 500, false);\n\n\n/************************/\n/** Toolbar extensions **/\n/************************/\nBookReader.prototype.buildToolbarElement = Toolbar.prototype.buildToolbarElement;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'buildToolbarElement');\nBookReader.prototype.initToolbar = Toolbar.prototype.initToolbar;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'initToolbar');\nBookReader.prototype.buildShareDiv = Toolbar.prototype.buildShareDiv;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'buildShareDiv');\nBookReader.prototype.buildInfoDiv = Toolbar.prototype.buildInfoDiv;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'buildInfoDiv');\nBookReader.prototype.getToolBarHeight = Toolbar.prototype.getToolBarHeight;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'getToolBarHeight');\n/** @deprecated zoom no longer in toolbar */\nBookReader.prototype.updateToolbarZoom = Toolbar.prototype.updateToolbarZoom;\nexposeOverrideableMethod(Toolbar, '_components.toolbar', 'updateToolbarZoom');\n/** @deprecated unused */\nBookReader.prototype.blankInfoDiv = blankInfoDiv;\n/** @deprecated unused */\nBookReader.prototype.blankShareDiv = blankShareDiv;\n/** @deprecated unused */\nBookReader.prototype.createPopup = createPopup;\n\n/**\n * Bind navigation handlers\n */\nBookReader.prototype.bindNavigationHandlers = function() {\n const self = this;\n\n // Note the mobile plugin attaches itself to body, so we need to select outside\n const jIcons = this.$('.BRicon').add('.BRmobileMenu .BRicon');\n // Map of jIcon class -> click handler\n const navigationControls = {\n book_left: () => {\n this.trigger(BookReader.eventNames.stop);\n this.left();\n },\n book_right: () => {\n this.trigger(BookReader.eventNames.stop);\n this.right();\n },\n book_up: () => {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n this.scrollUp();\n } else {\n this.prev();\n }\n },\n book_down: () => {\n if ($.inArray(this.mode, [this.constMode1up, this.constModeThumb]) >= 0) {\n this.scrollDown();\n } else {\n this.next();\n }\n },\n book_top: this.first.bind(this),\n book_bottom: this.last.bind(this),\n book_leftmost: this.leftmost.bind(this),\n book_rightmost: this.rightmost.bind(this),\n onepg: () => {\n this.switchMode(self.constMode1up);\n },\n thumb: () => {\n this.switchMode(self.constModeThumb);\n },\n twopg: () => {\n this.switchMode(self.constMode2up);\n },\n zoom_in: () => {\n this.trigger(BookReader.eventNames.stop);\n this.zoom(1);\n this.trigger(BookReader.eventNames.zoomIn);\n },\n zoom_out: () => {\n this.trigger(BookReader.eventNames.stop);\n this.zoom(-1);\n this.trigger(BookReader.eventNames.zoomOut);\n },\n full: () => {\n if (this.ui == 'embed') {\n var url = this.$('.BRembedreturn a').attr('href');\n window.open(url);\n } else {\n this.toggleFullscreen();\n }\n },\n };\n\n jIcons.filter('.fit').bind('fit', function() {\n // XXXmang implement autofit zoom\n });\n\n for (const control in navigationControls) {\n jIcons.filter(`.${control}`).on('click.bindNavigationHandlers', () => {\n navigationControls[control]();\n return false;\n });\n }\n\n var $brNavCntlBtmEl = this.$('.BRnavCntlBtm');\n var $brNavCntlTopEl = this.$('.BRnavCntlTop');\n\n this.$('.BRnavCntl').click(\n function() {\n var promises = [];\n // TODO don't use magic constants\n // TODO move this to a function\n if ($brNavCntlBtmEl.hasClass('BRdn')) {\n if (self.refs.$BRtoolbar)\n promises.push(self.refs.$BRtoolbar.animate(\n {top: self.getToolBarHeight() * -1}\n ).promise());\n promises.push(self.$('.BRfooter').animate({bottom: self.getFooterHeight() * -1}).promise());\n $brNavCntlBtmEl.addClass('BRup').removeClass('BRdn');\n $brNavCntlTopEl.addClass('BRdn').removeClass('BRup');\n self.$('.BRnavCntlBtm.BRnavCntl').animate({height:'45px'});\n self.$('.BRnavCntl').delay(1000).animate({opacity:.75}, 1000);\n } else {\n if (self.refs.$BRtoolbar)\n promises.push(self.refs.$BRtoolbar.animate({top:0}).promise());\n promises.push(self.$('.BRfooter').animate({bottom:0}).promise());\n $brNavCntlBtmEl.addClass('BRdn').removeClass('BRup');\n $brNavCntlTopEl.addClass('BRup').removeClass('BRdn');\n self.$('.BRnavCntlBtm.BRnavCntl').animate({height:'30px'});\n self.$('.BRvavCntl').animate({opacity:1});\n }\n $.when.apply($, promises).done(function() {\n // Only do full resize in auto mode and need to recalc. size\n if (self.mode == self.constMode2up && self.twoPage.autofit != null\n && self.twoPage.autofit != 'none'\n ) {\n self.resize();\n } else if (self.mode == self.constMode1up && self.onePage.autofit != null\n && self.onePage.autofit != 'none') {\n self.resize();\n } else {\n // Don't do a full resize to avoid redrawing images\n self.resizeBRcontainer();\n }\n });\n }\n );\n $brNavCntlBtmEl.mouseover(function() {\n if ($(this).hasClass('BRup')) {\n self.$('.BRnavCntl').animate({opacity:1},250);\n }\n }).mouseleave(function() {\n if ($(this).hasClass('BRup')) {\n self.$('.BRnavCntl').animate({opacity:.75},250);\n }\n });\n $brNavCntlTopEl.mouseover(function() {\n if ($(this).hasClass('BRdn')) {\n self.$('.BRnavCntl').animate({opacity:1},250);\n }\n }).mouseleave(function() {\n if ($(this).hasClass('BRdn')) {\n self.$('.BRnavCntl').animate({opacity:.75},250);\n }\n });\n\n this.initSwipeData();\n\n $(document).off('mousemove.navigation', this.el);\n $(document).on(\n 'mousemove.navigation',\n this.el,\n { 'br': this },\n this.navigationMousemoveHandler\n );\n\n $(document).off('mousedown.swipe', '.BRpageimage');\n $(document).on(\n 'mousedown.swipe',\n '.BRpageimage',\n { 'br': this },\n this.swipeMousedownHandler\n );\n\n this.bindMozTouchHandlers();\n};\n\n/**\n * Unbind navigation handlers\n */\nBookReader.prototype.unbindNavigationHandlers = function() {\n $(document).off('mousemove.navigation', this.el);\n};\n\n/**\n * Handle mousemove related to navigation. Bind at #BookReader level to allow autohide.\n */\nBookReader.prototype.navigationMousemoveHandler = function(event) {\n // $$$ possibly not great to be calling this for every mousemove\n if (event.data['br'].uiAutoHide) {\n // 77px is an approximate height of the Internet Archive Top Nav\n // 75 & 76 (pixels) provide used in this context is checked against the IA top nav height\n var navkey = $(document).height() - 75;\n if ((event.pageY < 76) || (event.pageY > navkey)) {\n // inside or near navigation elements\n event.data['br'].hideNavigation();\n } else {\n event.data['br'].showNavigation();\n }\n }\n};\n\nBookReader.prototype.initSwipeData = function(clientX, clientY) {\n /*\n * Based on the really quite awesome \"Today's Guardian\" at http://guardian.gyford.com/\n */\n this._swipe = {\n mightBeSwiping: false,\n didSwipe: false,\n mightBeDraggin: false,\n didDrag: false,\n startTime: (new Date).getTime(),\n startX: clientX,\n startY: clientY,\n lastX: clientX,\n lastY: clientY,\n deltaX: 0,\n deltaY: 0,\n deltaT: 0\n };\n};\n\nBookReader.prototype.swipeMousedownHandler = function(event) {\n var self = event.data['br'];\n\n // We should be the last bubble point for the page images\n // Disable image drag and select, but keep right-click\n if (event.which == 3) {\n return !self.protected;\n }\n\n $(event.target).bind('mouseout.swipe',\n { 'br': self},\n self.swipeMouseupHandler\n ).bind('mouseup.swipe',\n { 'br': self},\n self.swipeMouseupHandler\n ).bind('mousemove.swipe',\n { 'br': self },\n self.swipeMousemoveHandler\n );\n\n self.initSwipeData(event.clientX, event.clientY);\n self._swipe.mightBeSwiping = true;\n self._swipe.mightBeDragging = true;\n\n event.preventDefault();\n event.returnValue = false;\n event.cancelBubble = true;\n return false;\n};\n\nBookReader.prototype.swipeMousemoveHandler = function(event) {\n var self = event.data['br'];\n var _swipe = self._swipe;\n if (! _swipe.mightBeSwiping) {\n return;\n }\n\n // Update swipe data\n _swipe.deltaX = event.clientX - _swipe.startX;\n _swipe.deltaY = event.clientY - _swipe.startY;\n _swipe.deltaT = (new Date).getTime() - _swipe.startTime;\n\n var absX = Math.abs(_swipe.deltaX);\n var absY = Math.abs(_swipe.deltaY);\n\n // Minimum distance in the amount of tim to trigger the swipe\n var minSwipeLength = Math.min(self.refs.$br.width() / 5, 80);\n var maxSwipeTime = 400;\n\n // Check for horizontal swipe\n if (absX > absY && (absX > minSwipeLength) && _swipe.deltaT < maxSwipeTime) {\n _swipe.mightBeSwiping = false; // only trigger once\n _swipe.didSwipe = true;\n if (self.mode == self.constMode2up) {\n if (_swipe.deltaX < 0) {\n self.right();\n } else {\n self.left();\n }\n }\n }\n\n if ( _swipe.deltaT > maxSwipeTime && !_swipe.didSwipe) {\n if (_swipe.mightBeDragging) {\n // Dragging\n _swipe.didDrag = true;\n self.refs.$brContainer\n .scrollTop(self.refs.$brContainer.scrollTop() - event.clientY + _swipe.lastY)\n .scrollLeft(self.refs.$brContainer.scrollLeft() - event.clientX + _swipe.lastX);\n }\n }\n _swipe.lastX = event.clientX;\n _swipe.lastY = event.clientY;\n\n event.preventDefault();\n event.returnValue = false;\n event.cancelBubble = true;\n return false;\n};\n\nBookReader.prototype.swipeMouseupHandler = function(event) {\n var _swipe = event.data['br']._swipe;\n _swipe.mightBeSwiping = false;\n _swipe.mightBeDragging = false;\n\n $(event.target).unbind('mouseout.swipe').unbind('mouseup.swipe').unbind('mousemove.swipe');\n\n if (_swipe.didSwipe || _swipe.didDrag) {\n // Swallow event if completed swipe gesture\n event.preventDefault();\n event.returnValue = false;\n event.cancelBubble = true;\n return false;\n }\n return true;\n};\n\nBookReader.prototype.bindMozTouchHandlers = function() {\n var self = this;\n\n // Currently only want touch handlers in 2up\n this.refs.$br.bind('MozTouchDown', function(event) {\n if (this.mode == self.constMode2up) {\n event.preventDefault();\n }\n })\n .bind('MozTouchMove', function(event) {\n if (this.mode == self.constMode2up) {\n event.preventDefault();\n }\n })\n .bind('MozTouchUp', function(event) {\n if (this.mode == self.constMode2up) {\n event.preventDefault();\n }\n });\n};\n\n/**\n * Returns true if the navigation elements are currently visible\n * @return {boolean}\n */\nBookReader.prototype.navigationIsVisible = function() {\n // $$$ doesn't account for transitioning states, nav must be fully visible to return true\n var toolpos = this.refs.$BRtoolbar.position();\n var tooltop = toolpos.top;\n return tooltop == 0;\n};\n\n/**\n * Main controller that sets navigation into view.\n * Defaults to SHOW the navigation chrome\n */\nBookReader.prototype.setNavigationView = function brSetNavigationView(hide) {\n var animationLength = this.constNavAnimationDuration;\n var animationType = 'linear';\n var resizePageContainer = function resizePageContainer () {\n /* main page container fills whole container */\n if (this.constMode2up !== this.mode) {\n var animate = true;\n this.resizeBRcontainer(animate);\n }\n this.trigger(BookReader.eventNames.navToggled);\n }.bind(this);\n\n var toolbarHeight = 0;\n var navbarHeight = 0;\n if (hide) {\n toolbarHeight = this.getToolBarHeight() * -1;\n navbarHeight = this.getFooterHeight() * -1;\n\n this.refs.$BRtoolbar.addClass('js-menu-hide');\n this.refs.$BRfooter.addClass('js-menu-hide');\n } else {\n this.refs.$BRtoolbar.removeClass('js-menu-hide');\n this.refs.$BRfooter.removeClass('js-menu-hide');\n }\n\n this.refs.$BRtoolbar.animate(\n { top: toolbarHeight },\n animationLength,\n animationType,\n resizePageContainer\n );\n this.refs.$BRfooter.animate(\n { bottom: navbarHeight },\n animationLength,\n animationType,\n resizePageContainer\n );\n};\n/**\n * Hide navigation elements, if visible\n */\nBookReader.prototype.hideNavigation = function() {\n // Check if navigation is showing\n if (this.navigationIsVisible()) {\n var hide = true;\n this.setNavigationView(hide);\n }\n};\n\n/**\n * Show navigation elements\n */\nBookReader.prototype.showNavigation = function() {\n // Check if navigation is hidden\n if (!this.navigationIsVisible()) {\n this.setNavigationView();\n }\n};\n\n/**\n * Returns the index of the first visible page, dependent on the mode.\n * $$$ Currently we cannot display the front/back cover in 2-up and will need to update\n * this function when we can as part of https://bugs.launchpad.net/gnubook/+bug/296788\n * @return {number}\n */\nBookReader.prototype.firstDisplayableIndex = function() {\n if (this.mode != this.constMode2up) {\n return 0;\n }\n\n if ('rl' != this.pageProgression) {\n // LTR\n if (this._models.book.getPageSide(0) == 'L') {\n return 0;\n } else {\n return -1;\n }\n } else {\n // RTL\n if (this._models.book.getPageSide(0) == 'R') {\n return 0;\n } else {\n return -1;\n }\n }\n};\n\n/**\n * Returns the index of the last visible page, dependent on the mode.\n * $$$ Currently we cannot display the front/back cover in 2-up and will need to update\n * this function when we can as part of https://bugs.launchpad.net/gnubook/+bug/296788\n * @return {number}\n */\nBookReader.prototype.lastDisplayableIndex = function() {\n\n var lastIndex = this._models.book.getNumLeafs() - 1;\n\n if (this.mode != this.constMode2up) {\n return lastIndex;\n }\n\n if ('rl' != this.pageProgression) {\n // LTR\n if (this._models.book.getPageSide(lastIndex) == 'R') {\n return lastIndex;\n } else {\n return lastIndex + 1;\n }\n } else {\n // RTL\n if (this._models.book.getPageSide(lastIndex) == 'L') {\n return lastIndex;\n } else {\n return lastIndex + 1;\n }\n }\n};\n\n\n/**************************/\n/** BookModel extensions **/\n/**************************/\n/** @deprecated not used outside */\nBookReader.prototype.getMedianPageSize = BookModel.prototype.getMedianPageSize;\nexposeOverrideableMethod(BookModel, '_models.book', 'getMedianPageSize');\nBookReader.prototype._getPageWidth = BookModel.prototype._getPageWidth;\nexposeOverrideableMethod(BookModel, '_models.book', '_getPageWidth');\nBookReader.prototype._getPageHeight = BookModel.prototype._getPageHeight;\nexposeOverrideableMethod(BookModel, '_models.book', '_getPageHeight');\nBookReader.prototype.getPageIndex = BookModel.prototype.getPageIndex;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageIndex');\n/** @deprecated not used outside */\nBookReader.prototype.getPageIndices = BookModel.prototype.getPageIndices;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageIndices');\nBookReader.prototype.getPageName = BookModel.prototype.getPageName;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageName');\nBookReader.prototype.getNumLeafs = BookModel.prototype.getNumLeafs;\nexposeOverrideableMethod(BookModel, '_models.book', 'getNumLeafs');\nBookReader.prototype.getPageWidth = BookModel.prototype.getPageWidth;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageWidth');\nBookReader.prototype.getPageHeight = BookModel.prototype.getPageHeight;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageHeight');\nBookReader.prototype.getPageURI = BookModel.prototype.getPageURI;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageURI');\nBookReader.prototype.getPageSide = BookModel.prototype.getPageSide;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageSide');\nBookReader.prototype.getPageNum = BookModel.prototype.getPageNum;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageNum');\nBookReader.prototype.getPageProp = BookModel.prototype.getPageProp;\nexposeOverrideableMethod(BookModel, '_models.book', 'getPageProp');\nBookReader.prototype.getSpreadIndices = BookModel.prototype.getSpreadIndices;\nexposeOverrideableMethod(BookModel, '_models.book', 'getSpreadIndices');\nBookReader.prototype.leafNumToIndex = BookModel.prototype.leafNumToIndex;\nexposeOverrideableMethod(BookModel, '_models.book', 'leafNumToIndex');\nBookReader.prototype.parsePageString = BookModel.prototype.parsePageString;\nexposeOverrideableMethod(BookModel, '_models.book', 'parsePageString');\n/** @deprecated unused */\nBookReader.prototype._getDataFlattened = BookModel.prototype._getDataFlattened;\nexposeOverrideableMethod(BookModel, '_models.book', '_getDataFlattened');\n/** @deprecated unused */\nBookReader.prototype._getDataProp = BookModel.prototype._getDataProp;\nexposeOverrideableMethod(BookModel, '_models.book', '_getDataProp');\n\n// Parameter related functions\n\n/**\n * Update from the params object\n * @param {Object}\n */\nBookReader.prototype.updateFromParams = function(params) {\n // Set init, fragment change options for switchMode()\n const {\n mode = 0,\n init = false,\n fragmentChange = false,\n } = params;\n\n if (mode) {\n this.switchMode(\n mode,\n { init: init, suppressFragmentChange: !fragmentChange }\n );\n }\n\n // $$$ process /zoom\n // We only respect page if index is not set\n if ('undefined' != typeof(params.index)) {\n if (params.index != this.currentIndex()) {\n this.jumpToIndex(params.index);\n }\n } else if ('undefined' != typeof(params.page)) {\n // $$$ this assumes page numbers are unique\n if (params.page != this._models.book.getPageNum(this.currentIndex())) {\n this.jumpToPage(params.page);\n }\n }\n\n\n // process /search\n // @deprecated for urlMode 'history'\n // Continues to work for urlMode 'hash'\n if (this.enableSearch && 'undefined' != typeof(params.search)) {\n if (this.searchTerm !== params.search) {\n this.$('.BRsearchInput').val(params.search);\n }\n }\n\n // $$$ process /region\n // $$$ process /highlight\n\n // $$$ process /theme\n if (this.enableThemesPlugin && 'undefined' != typeof(params.theme)) {\n this.updateTheme(params.theme);\n }\n};\n\n/**\n * Returns true if we can switch to the requested mode\n * @param {number} mode\n * @return {boolean}\n */\nBookReader.prototype.canSwitchToMode = function(mode) {\n if (mode == this.constMode2up || mode == this.constModeThumb) {\n // check there are enough pages to display\n // $$$ this is a workaround for the mis-feature that we can't display\n // short books in 2up mode\n if (this._models.book.getNumLeafs() < 2) {\n return false;\n }\n }\n\n return true;\n};\n\n\n/**\n * @deprecated. Use PageModel.getURISrcSet. Slated for removal in v5.\n * Returns the srcset with correct URIs or void string if out of range\n * Also makes the reduce argument optional\n * @param {number} index\n * @param {number} [reduce]\n * @param {number} [rotate]\n * @return {string}\n */\nBookReader.prototype._getPageURISrcset = function(index, reduce, rotate) {\n const page = this._models.book.getPage(index, false);\n // Synthesize page\n if (!page) return \"\";\n\n // reduce not passed in\n // $$$ this probably won't work for thumbnail mode\n if ('undefined' == typeof(reduce)) {\n reduce = page.height / this.twoPage.height;\n }\n\n return page.getURISrcSet(reduce, rotate);\n};\n\n\n/**\n * Returns the page URI or transparent image if out of range\n * Also makes the reduce argument optional\n * @param {number} index\n * @param {number} [reduce]\n * @param {number} [rotate]\n * @return {string}\n */\nBookReader.prototype._getPageURI = function(index, reduce, rotate) {\n const page = this._models.book.getPage(index, false);\n // Synthesize page\n if (!page) return this.imagesBaseURL + \"transparent.png\";\n\n if ('undefined' == typeof(reduce)) {\n // reduce not passed in\n // $$$ this probably won't work for thumbnail mode\n reduce = page.height / this.twoPage.height;\n }\n\n return page.getURI(reduce, rotate);\n};\n\n/**\n * @param {string} msg\n * @param {function|undefined} onCloseCallback\n */\nBookReader.prototype.showProgressPopup = function(msg, onCloseCallback) {\n if (this.popup) return;\n\n this.popup = document.createElement(\"div\");\n $(this.popup).prop('className', 'BRprogresspopup');\n\n if (typeof(onCloseCallback) === 'function') {\n const closeButton = document.createElement('button');\n closeButton.setAttribute('title', 'close');\n closeButton.setAttribute('class', 'close-popup');\n const icon = document.createElement('span');\n icon.setAttribute('class', 'icon icon-close-dark');\n $(closeButton).append(icon);\n closeButton.addEventListener('click', () => {\n onCloseCallback();\n this.removeProgressPopup();\n });\n $(this.popup).append(closeButton);\n }\n\n const bar = document.createElement(\"div\");\n $(bar).css({\n height: '20px'\n }).prop('className', 'BRprogressbar');\n $(this.popup).append(bar);\n\n if (msg) {\n const msgdiv = document.createElement(\"div\");\n msgdiv.innerHTML = msg;\n $(this.popup).append(msgdiv);\n }\n\n $(this.popup).appendTo(this.refs.$br);\n};\n\nBookReader.prototype.removeProgressPopup = function() {\n $(this.popup).remove();\n this.$('.BRprogresspopup').remove();\n this.popup = null;\n};\n\n/**\n * Can be overridden\n */\nBookReader.prototype.initUIStrings = function() {\n // Navigation handlers will be bound after all UI is in place -- makes moving icons between\n // the toolbar and nav bar easier\n\n // Setup tooltips -- later we could load these from a file for i18n\n var titles = {\n '.logo': 'Go to Archive.org', // $$$ update after getting OL record\n '.zoom_in': 'Zoom in',\n '.zoom_out': 'Zoom out',\n '.onepg': 'One-page view',\n '.twopg': 'Two-page view',\n '.thumb': 'Thumbnail view',\n '.print': 'Print this page',\n '.embed': 'Embed BookReader',\n '.link': 'Link to this book (and page)',\n '.bookmark': 'Bookmark this page',\n '.share': 'Share this book',\n '.info': 'About this book',\n '.full': 'Toggle fullscreen',\n '.book_left': 'Flip left',\n '.book_right': 'Flip right',\n '.book_up': 'Page up',\n '.book_down': 'Page down',\n '.play': 'Play',\n '.pause': 'Pause',\n '.BRdn': 'Show/hide nav bar', // Would have to keep updating on state change to have just \"Hide nav bar\"\n '.BRup': 'Show/hide nav bar',\n '.book_top': 'First page',\n '.book_bottom': 'Last page',\n '.book_leftmost': 'First page',\n '.book_rightmost': 'Last page',\n };\n if ('rl' == this.pageProgression) {\n titles['.book_leftmost'] = 'Last page';\n titles['.book_rightmost'] = 'First page';\n }\n\n for (var icon in titles) {\n this.$(icon).prop('title', titles[icon]);\n }\n};\n\n/**\n * Reloads images. Useful when some images might have failed.\n */\nBookReader.prototype.reloadImages = function() {\n this.refs.$brContainer.find('img').each(function(index, elem) {\n if (!elem.complete || elem.naturalHeight === 0) {\n var src = elem.src;\n elem.src = '';\n setTimeout(function() {\n elem.src = src;\n }, 1000);\n }\n });\n};\n\n/**\n * @param {boolean} ignoreDisplay - bypass the display check\n * @return {number}\n */\nBookReader.prototype.getFooterHeight = function() {\n var $heightEl = this.mode == this.constMode2up ? this.refs.$BRfooter : this.refs.$BRnav;\n if ($heightEl && this.refs.$BRfooter) {\n var outerHeight = $heightEl.outerHeight();\n var bottom = parseInt(this.refs.$BRfooter.css('bottom'));\n if (!isNaN(outerHeight) && !isNaN(bottom)) {\n return outerHeight + bottom;\n }\n }\n return 0;\n};\n\n// Basic Usage built-in Methods (can be overridden through options)\n// This implementation uses options.data value for populating BookReader\n\n/**\n * Create a params object from the current parameters.\n * @return {Object}\n */\nBookReader.prototype.paramsFromCurrent = function() {\n var params = {};\n\n var index = this.currentIndex();\n var pageNum = this._models.book.getPageNum(index);\n if ((pageNum === 0) || pageNum) {\n params.page = pageNum;\n }\n\n params.index = index;\n params.mode = this.mode;\n\n // $$$ highlight\n // $$$ region\n\n // search\n if (this.enableSearch) {\n params.search = this.searchTerm;\n }\n\n return params;\n};\n\n/**\n * Return an object with configuration parameters from a fragment string.\n *\n * Fragments are formatted as a URL path but may be used outside of URLs as a\n * serialization format for BookReader parameters\n *\n * @see http://openlibrary.org/dev/docs/bookurls for fragment syntax\n *\n * @param {string} fragment initial # is allowed for backwards compatibility\n * but is deprecated\n * @return {Object}\n */\nBookReader.prototype.paramsFromFragment = function(fragment) {\n var params = {};\n\n // For backwards compatibility we allow an initial # character\n // (as from window.location.hash) but don't require it\n if (fragment.substr(0, 1) == '#') {\n fragment = fragment.substr(1);\n }\n\n // Simple #nn syntax\n var oldStyleLeafNum = parseInt( /^\\d+$/.exec(fragment) );\n if ( !isNaN(oldStyleLeafNum) ) {\n params.index = oldStyleLeafNum;\n\n // Done processing if using old-style syntax\n return params;\n }\n\n // Split into key-value pairs\n var urlArray = fragment.split('/');\n var urlHash = {};\n for (var i = 0; i < urlArray.length; i += 2) {\n urlHash[urlArray[i]] = urlArray[i + 1];\n }\n\n // Mode\n if ('1up' == urlHash['mode']) {\n params.mode = this.constMode1up;\n } else if ('2up' == urlHash['mode']) {\n params.mode = this.constMode2up;\n } else if ('thumb' == urlHash['mode']) {\n params.mode = this.constModeThumb;\n }\n\n // Index and page\n if ('undefined' != typeof(urlHash['page'])) {\n // page was set -- may not be int\n params.page = urlHash['page'];\n }\n\n // $$$ process /region\n // $$$ process /search\n\n if (urlHash['search'] != undefined) {\n params.search = utils.decodeURIComponentPlus(urlHash['search']);\n }\n\n // $$$ process /highlight\n\n // $$$ process /theme\n if (urlHash['theme'] != undefined) {\n params.theme = urlHash['theme'];\n }\n return params;\n};\n\n/**\n * Create a fragment string from the params object.\n *\n * Fragments are formatted as a URL path but may be used outside of URLs as a\n * serialization format for BookReader parameters\n *\n * @see https://openlibrary.org/dev/docs/bookurls for fragment syntax\n *\n * @param {Object} params\n * @param {string} [urlMode]\n * @return {string}\n */\nBookReader.prototype.fragmentFromParams = function(params, urlMode = 'hash') {\n const separator = '/';\n const fragments = [];\n\n if ('undefined' != typeof(params.page)) {\n fragments.push('page', params.page);\n } else {\n if ('undefined' != typeof(params.index)) {\n // Don't have page numbering but we do have the index\n fragments.push('page', 'n' + params.index);\n }\n }\n\n // $$$ highlight\n // $$$ region\n\n // mode\n if ('undefined' != typeof(params.mode)) {\n if (params.mode == this.constMode1up) {\n fragments.push('mode', '1up');\n } else if (params.mode == this.constMode2up) {\n fragments.push('mode', '2up');\n } else if (params.mode == this.constModeThumb) {\n fragments.push('mode', 'thumb');\n } else {\n throw 'fragmentFromParams called with unknown mode ' + params.mode;\n }\n }\n\n // search\n if (params.search && urlMode === 'hash') {\n fragments.push('search', params.search);\n }\n\n return utils.encodeURIComponentPlus(fragments.join(separator)).replace(/%2F/g, '/');\n};\n\n/**\n * Create, update querystring from the params object\n *\n * @param {Object} params\n * @param {string} currQueryString\n * @param {string} [urlMode]\n * @return {string}\n */\nBookReader.prototype.queryStringFromParams = function(\n params,\n currQueryString,\n urlMode = 'hash'\n) {\n const newParams = new URLSearchParams(currQueryString);\n if (params.search && urlMode === 'history') {\n newParams.set('q', params.search);\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/toString\n // Note: This method returns the query string without the question mark.\n const result = newParams.toString();\n return result ? '?' + result : '';\n};\n\n/**\n * Helper to select within instance's elements\n */\nBookReader.prototype.$ = function(selector) {\n return this.refs.$br.find(selector);\n};\n\n/**\n * Polyfill for deprecated method\n */\njQuery.curCSS = function(element, prop, val) {\n return jQuery(element).css(prop, val);\n};\n\nwindow.BookReader = BookReader;\n"],"sourceRoot":""}